X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=ves-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fvesagent%2Fcontroller%2FPnfRegMappingHandler.java;h=a3500b74425821df90bbbbe9b2d7aa9c10f7b598;hb=76744e810f35c84ecbd1d9998e361052466e9483;hp=211e8971059989136b4353eb99ee95c1cf9540f4;hpb=ce4e2d38e3d42725f61c39dd172325d2def4bc44;p=oam%2Ftr069-adapter.git diff --git a/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/controller/PnfRegMappingHandler.java b/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/controller/PnfRegMappingHandler.java index 211e897..a3500b7 100644 --- a/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/controller/PnfRegMappingHandler.java +++ b/ves-agent/src/main/java/org/commscope/tr069adapter/vesagent/controller/PnfRegMappingHandler.java @@ -1,211 +1,236 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : tr-069-adapter - * ================================================================================================= - * Copyright (C) 2020 CommScope Inc Intellectual Property. - * ================================================================================================= - * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You - * may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language governing permissions and - * limitations under the License. - * ===============LICENSE_END======================================================================= - */ - -package org.commscope.tr069adapter.vesagent.controller; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.text.SimpleDateFormat; -import java.util.Date; - -import org.commscope.tr069adapter.acs.common.DeviceInform; -import org.commscope.tr069adapter.mapper.model.NetConfServerDetails; -import org.commscope.tr069adapter.mapper.model.VESNotification; -import org.commscope.tr069adapter.mapper.model.VESNotificationResponse; -import org.commscope.tr069adapter.vesagent.VesConfiguration; -import org.commscope.tr069adapter.vesagent.fault.Parser; -import org.commscope.tr069adapter.vesagent.http.HttpRequestSender; -import org.commscope.tr069adapter.vesagent.model.CommonEventHeader; -import org.commscope.tr069adapter.vesagent.model.Event; -import org.commscope.tr069adapter.vesagent.model.EventMessage; -import org.commscope.tr069adapter.vesagent.model.PnfRegEventAdditionalFeilds; -import org.commscope.tr069adapter.vesagent.model.PnfRegEventFields; -import org.commscope.tr069adapter.vesagent.util.EventUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class PnfRegMappingHandler { - private static final Logger logger = LoggerFactory.getLogger(PnfRegMappingHandler.class); - public static final String SSH_USERNAME = "netconf"; - public static final String SSH_PSSWORD = "netconf"; - - @Autowired - VesConfiguration config; - - @Autowired - HttpRequestSender sender; - - public VESNotificationResponse handlePnfRegNotification(VESNotification vesNoti) - throws JsonProcessingException { - Event event = convertNotificationToVESEvent(vesNoti.getDevnotification(), - vesNoti.getNetconfDetails(), vesNoti.geteNodeBName()); - if (null != event) { - EventMessage evMsg = new EventMessage(); - evMsg.setEvent(event); - - ObjectMapper mapper = new ObjectMapper(); - - String requestBody = mapper.writeValueAsString(evMsg); - if (requestBody.isEmpty()) { - logger.debug("VES Event body is empty"); - } - - String url = config.getPnfRegVesUrl(); - return sender.postRequest(url, requestBody); - } else { - return new VESNotificationResponse(-1, - "unable to prepare ves event due to insufficient data"); - } - } - - public VESNotificationResponse handlePnfRegNotificationOnRestart(VESNotification vesNoti) - throws JsonProcessingException { - Event event = convertNotificationToVESEventOnRestart(vesNoti.getNetconfDetails()); - - EventMessage evMsg = new EventMessage(); - evMsg.setEvent(event); - - ObjectMapper mapper = new ObjectMapper(); - - String requestBody = mapper.writeValueAsString(evMsg); - if (requestBody.isEmpty()) { - logger.debug("VES Event body is empty"); - } - - String url = config.getPnfRegVesUrl(); - return sender.postRequest(url, requestBody); - } - - Event convertNotificationToVESEvent(DeviceInform notification, - NetConfServerDetails netconfServerDetails, String eNodeBName) { - logger.debug("Converting Notification to VES pnfevent started"); - Parser parser = new Parser(); - - - Event regEvent = new Event(); - CommonEventHeader eventHeader = new CommonEventHeader(); - - eventHeader.setDomain("pnfRegistration"); - eventHeader.setEventId( - "PnfReg" + notification.getDeviceDetails().getDeviceId() + System.currentTimeMillis()); - eventHeader.setEventName("pnfReg_" + notification.getDeviceDetails().getProductClass() + "-" - + config.getVendorName()); - eventHeader.setEventType(config.getPnfRegEventType()); - eventHeader.setPriority("High"); - EventUtil.populateEventHeaderFields(eventHeader, notification, eNodeBName, config); - regEvent.setCommonEventHeader(eventHeader); - - PnfRegEventFields pnfRegistrationFields = - parser.parseNotificationParams(notification.getParameters()); - populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields); - pnfRegistrationFields.setModelNumber(notification.getDeviceDetails().getProductClass()); - - regEvent.setPnfRegistrationFields(pnfRegistrationFields); - logger.debug("Converting Notification to VES pnfevent completed"); - return regEvent; - } - - Event convertNotificationToVESEventOnRestart(NetConfServerDetails netconfServerDetails) { - logger.debug("Converting Notification to VES pnfevent started"); - - Event regEvent = new Event(); - CommonEventHeader eventHeader = new CommonEventHeader(); - - if (null == netconfServerDetails) { - logger.error("netconf server details as received as null {}", netconfServerDetails); - return null; - } - eventHeader.setDomain("pnfRegistration"); - eventHeader - .setEventId("PnfReg" + netconfServerDetails.getDeviceId() + System.currentTimeMillis()); - eventHeader.setEventName( - "pnfReg_" + netconfServerDetails.getDeviceId() + "-" + config.getVendorName()); - eventHeader.setEventType(config.getPnfRegEventType()); - eventHeader.setLastEpochMicrosec(System.currentTimeMillis()); - - eventHeader.setPriority("High"); - eventHeader.setSequence(0); - - if (netconfServerDetails.getEnodeBName() == null) { - eventHeader.setReportingEntityName(netconfServerDetails.getDeviceId()); - eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId()); - eventHeader.setSourceId(netconfServerDetails.getDeviceId()); - eventHeader.setSourceName(netconfServerDetails.getDeviceId()); - } else { - eventHeader.setReportingEntityName(netconfServerDetails.getEnodeBName()); - eventHeader.setSourceName(netconfServerDetails.getEnodeBName()); - - eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId()); - eventHeader.setSourceId(netconfServerDetails.getDeviceId()); - } - - eventHeader.setStartEpochMicrosec(System.currentTimeMillis()*1000); - eventHeader.setVersion(config.getEventVersion()); - eventHeader.setNfNamingCode(""); - eventHeader.setNfcNamingCode(""); - eventHeader.setNfVendorName(config.getVendorName()); - eventHeader.setVesEventListenerVersion(config.getVesVersion()); - regEvent.setCommonEventHeader(eventHeader); - PnfRegEventFields pnfRegistrationFields = new PnfRegEventFields(); - regEvent.setPnfRegistrationFields( - populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields)); - logger.debug("Converting Notification to VES pnfevent completed"); - return regEvent; - } - - private PnfRegEventFields populatePnfRegFeilds(NetConfServerDetails netconfServerDetails, - PnfRegEventFields pnfRegistrationFields) { - - pnfRegistrationFields.setSerialNumber(netconfServerDetails.getDeviceId()); - pnfRegistrationFields.setPnfRegistrationFieldsVersion(config.getPnfFeildVersion()); - pnfRegistrationFields.setMacAddress(netconfServerDetails.getDeviceId()); - pnfRegistrationFields.setVendorName(config.getVendorName()); - pnfRegistrationFields.setSoftwareVersion(netconfServerDetails.getSwVersion()); - PnfRegEventAdditionalFeilds additionalFields = new PnfRegEventAdditionalFeilds(); - - pnfRegistrationFields.setOamV4IpAddress(netconfServerDetails.getListenAddress()); - // TODO: since not supporting 1pv6 we are configuring empty value - pnfRegistrationFields.setOamV6IpAddress(""); - - pnfRegistrationFields.setManufactureDate(""); - pnfRegistrationFields.setUnitType(config.getUnitType()); - pnfRegistrationFields.setUnitFamily(config.getUnitFamily()); - pnfRegistrationFields.setLastServiceDate(new SimpleDateFormat("ddMMyyyy").format(new Date())); - additionalFields.setOamPort(netconfServerDetails.getListenPort()); - additionalFields.setProtocol("SSH"); - additionalFields.setUsername(SSH_USERNAME); - additionalFields.setPassword(SSH_PSSWORD); - additionalFields.setReconnectOnChangedSchema(Boolean.FALSE.toString()); - additionalFields.setSleepfactor("1.5"); - additionalFields.setTcpOnly(Boolean.FALSE.toString()); - additionalFields.setConnectionTimeout("20000"); - additionalFields.setMaxConnectionAttempts("100"); - additionalFields.setBetweenAttemptsTimeout("2000"); - additionalFields.setKeepaliveDelay("120"); - - pnfRegistrationFields.setAdditionalFields(additionalFields); - - return pnfRegistrationFields; - - } - -} +/* + * ============LICENSE_START======================================================================== + * ONAP : tr-069-adapter + * ================================================================================================= + * Copyright (C) 2020 CommScope Inc Intellectual Property. + * ================================================================================================= + * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + * ===============LICENSE_END======================================================================= + */ + +package org.commscope.tr069adapter.vesagent.controller; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import org.commscope.tr069adapter.acs.common.DeviceInform; +import org.commscope.tr069adapter.acs.common.ParameterDTO; +import org.commscope.tr069adapter.mapper.model.NetConfServerDetails; +import org.commscope.tr069adapter.mapper.model.VESNotification; +import org.commscope.tr069adapter.mapper.model.VESNotificationResponse; +import org.commscope.tr069adapter.vesagent.VesConfiguration; +import org.commscope.tr069adapter.vesagent.fault.Parser; +import org.commscope.tr069adapter.vesagent.http.HttpRequestSender; +import org.commscope.tr069adapter.vesagent.model.CommonEventHeader; +import org.commscope.tr069adapter.vesagent.model.Event; +import org.commscope.tr069adapter.vesagent.model.EventMessage; +import org.commscope.tr069adapter.vesagent.model.PnfRegEventAdditionalFeilds; +import org.commscope.tr069adapter.vesagent.model.PnfRegEventFields; +import org.commscope.tr069adapter.vesagent.util.EventUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class PnfRegMappingHandler { + private static final Logger logger = LoggerFactory.getLogger(PnfRegMappingHandler.class); + public static final String SSH_USERNAME = "netconf"; + public static final String SSH_PSSWORD = "netconf"; + + @Autowired + VesConfiguration config; + + @Autowired + HttpRequestSender sender; + + public VESNotificationResponse handlePnfRegNotification(VESNotification vesNoti) + throws JsonProcessingException { + Event event = convertNotificationToVESEvent(vesNoti.getDevnotification(), + vesNoti.getNetconfDetails(), vesNoti.geteNodeBName(), vesNoti.getNetconfParameters()); + if (null != event) { + EventMessage evMsg = new EventMessage(); + evMsg.setEvent(event); + + ObjectMapper mapper = new ObjectMapper(); + + String requestBody = mapper.writeValueAsString(evMsg); + if (requestBody.isEmpty()) { + logger.debug("VES Event body is empty"); + } + logger.debug("VES message for PnfRegistration : {}", requestBody); + String url = config.getPnfRegVesUrl(); + return sender.postRequest(url, requestBody); + } else { + return new VESNotificationResponse(-1, + "unable to prepare ves event due to insufficient data"); + } + } + + public VESNotificationResponse handlePnfRegNotificationOnRestart(VESNotification vesNoti) + throws JsonProcessingException { + Event event = convertNotificationToVESEventOnRestart(vesNoti.getNetconfDetails()); + + EventMessage evMsg = new EventMessage(); + evMsg.setEvent(event); + + ObjectMapper mapper = new ObjectMapper(); + + String requestBody = mapper.writeValueAsString(evMsg); + if (requestBody.isEmpty()) { + logger.debug("VES Event body is empty"); + } + + String url = config.getPnfRegVesUrl(); + return sender.postRequest(url, requestBody); + } + + Event convertNotificationToVESEvent(DeviceInform notification, + NetConfServerDetails netconfServerDetails, String eNodeBName, + List netconfParameters) { + logger.debug("Converting Notification to VES pnfevent started"); + Parser parser = new Parser(); + + + Event regEvent = new Event(); + CommonEventHeader eventHeader = new CommonEventHeader(); + + eventHeader.setDomain("pnfRegistration"); + eventHeader.setEventId( + "PnfReg" + notification.getDeviceDetails().getDeviceId() + System.currentTimeMillis()); + eventHeader.setEventName("pnfReg_" + notification.getDeviceDetails().getProductClass() + "-" + + config.getVendorName()); + eventHeader.setEventType(config.getPnfRegEventType()); + eventHeader.setPriority("High"); + EventUtil.populateEventHeaderFields(eventHeader, notification, eNodeBName, config); + regEvent.setCommonEventHeader(eventHeader); + + PnfRegEventFields pnfRegistrationFields = + parser.parseNotificationParams(notification.getParameters()); + populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields, netconfParameters); + pnfRegistrationFields.setModelNumber(notification.getDeviceDetails().getProductClass()); + + regEvent.setPnfRegistrationFields(pnfRegistrationFields); + logger.debug("Converting Notification to VES pnfevent completed"); + return regEvent; + } + + Event convertNotificationToVESEventOnRestart(NetConfServerDetails netconfServerDetails) { + logger.debug("Converting Notification to VES pnfevent started"); + + Event regEvent = new Event(); + CommonEventHeader eventHeader = new CommonEventHeader(); + + if (null == netconfServerDetails) { + logger.error("netconf server details as received as null"); + return null; + } + eventHeader.setDomain("pnfRegistration"); + eventHeader + .setEventId("PnfReg" + netconfServerDetails.getDeviceId() + System.currentTimeMillis()); + eventHeader.setEventName( + "pnfReg_" + netconfServerDetails.getDeviceId() + "-" + config.getVendorName()); + eventHeader.setEventType(config.getPnfRegEventType()); + eventHeader.setLastEpochMicrosec(System.currentTimeMillis()); + + eventHeader.setPriority("High"); + eventHeader.setSequence(0); + + if (netconfServerDetails.getEnodeBName() == null) { + eventHeader.setReportingEntityName(netconfServerDetails.getDeviceId()); + eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId()); + eventHeader.setSourceId(netconfServerDetails.getDeviceId()); + eventHeader.setSourceName(netconfServerDetails.getDeviceId()); + } else { + eventHeader.setReportingEntityName(netconfServerDetails.getEnodeBName()); + eventHeader.setSourceName(netconfServerDetails.getEnodeBName()); + + eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId()); + eventHeader.setSourceId(netconfServerDetails.getDeviceId()); + } + + eventHeader.setStartEpochMicrosec(System.currentTimeMillis() * 1000); + eventHeader.setVersion(config.getEventVersion()); + eventHeader.setNfNamingCode(""); + eventHeader.setNfcNamingCode(""); + eventHeader.setNfVendorName(config.getVendorName()); + eventHeader.setVesEventListenerVersion(config.getVesVersion()); + regEvent.setCommonEventHeader(eventHeader); + PnfRegEventFields pnfRegistrationFields = new PnfRegEventFields(); + regEvent.setPnfRegistrationFields( + populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields, new ArrayList<>())); + logger.debug("Converting Notification to VES pnfevent completed"); + return regEvent; + } + + private PnfRegEventFields populatePnfRegFeilds(NetConfServerDetails netconfServerDetails, + PnfRegEventFields pnfRegistrationFields, List netconfParameters) { + + pnfRegistrationFields.setSerialNumber(netconfServerDetails.getDeviceId()); + pnfRegistrationFields.setPnfRegistrationFieldsVersion(config.getPnfFeildVersion()); + pnfRegistrationFields.setMacAddress(netconfServerDetails.getDeviceId()); + pnfRegistrationFields.setVendorName(config.getVendorName()); + pnfRegistrationFields.setSoftwareVersion(netconfServerDetails.getSwVersion()); + + pnfRegistrationFields.setOamV4IpAddress(netconfServerDetails.getListenAddress()); + // TODO: since not supporting 1pv6 we are configuring empty value + pnfRegistrationFields.setOamV6IpAddress(""); + + pnfRegistrationFields.setManufactureDate(""); + pnfRegistrationFields.setUnitType(config.getUnitType()); + pnfRegistrationFields.setUnitFamily(config.getUnitFamily()); + pnfRegistrationFields.setLastServiceDate(new SimpleDateFormat("ddMMyyyy").format(new Date())); + + // Add additional attributes and device parameters to the VES message in additionalFields + HashMap additionalFieldsMap = new HashMap<>(); + PnfRegEventAdditionalFeilds additionalFields = new PnfRegEventAdditionalFeilds(); + additionalFields.setOamPort(netconfServerDetails.getListenPort()); + additionalFields.setProtocol("SSH"); + additionalFields.setUsername(SSH_USERNAME); + additionalFields.setPassword(SSH_PSSWORD); + additionalFields.setReconnectOnChangedSchema(Boolean.FALSE.toString()); + additionalFields.setSleepfactor("1.5"); + additionalFields.setTcpOnly(Boolean.FALSE.toString()); + additionalFields.setConnectionTimeout("20000"); + additionalFields.setMaxConnectionAttempts("100"); + additionalFields.setBetweenAttemptsTimeout("2000"); + additionalFields.setKeepaliveDelay("120"); + + ObjectMapper mapper = new ObjectMapper(); + String additionalFieldsString; + try { + additionalFieldsString = mapper.writeValueAsString(additionalFields); + HashMap pnfAdditionalFieldsMap = new HashMap<>(); + pnfAdditionalFieldsMap = + mapper.readValue(additionalFieldsString, pnfAdditionalFieldsMap.getClass()); + additionalFieldsMap.putAll(pnfAdditionalFieldsMap); + } catch (JsonProcessingException e) { + logger.error("Failed to add pnf Reg Additional fields {}", e.getMessage()); + } + + if (null != netconfParameters) { + for (ParameterDTO param : netconfParameters) { + additionalFieldsMap.put(param.getParamName(), param.getParamValue()); + } + } + + pnfRegistrationFields.setAdditionalFields(additionalFieldsMap); + return pnfRegistrationFields; + + } + +}