-/*\r
- * ============LICENSE_START========================================================================\r
- * ONAP : tr-069-adapter\r
- * =================================================================================================\r
- * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
- * =================================================================================================\r
- * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
- * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
- * may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
- * either express or implied. See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ===============LICENSE_END=======================================================================\r
- */\r
-\r
-package org.commscope.tr069adapter.vesagent.controller;\r
-\r
-import com.fasterxml.jackson.core.JsonProcessingException;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-\r
-import java.text.SimpleDateFormat;\r
-import java.util.Date;\r
-\r
-import org.commscope.tr069adapter.acs.common.DeviceInform;\r
-import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;\r
-import org.commscope.tr069adapter.mapper.model.VESNotification;\r
-import org.commscope.tr069adapter.mapper.model.VESNotificationResponse;\r
-import org.commscope.tr069adapter.vesagent.VesConfiguration;\r
-import org.commscope.tr069adapter.vesagent.fault.Parser;\r
-import org.commscope.tr069adapter.vesagent.http.HttpRequestSender;\r
-import org.commscope.tr069adapter.vesagent.model.CommonEventHeader;\r
-import org.commscope.tr069adapter.vesagent.model.Event;\r
-import org.commscope.tr069adapter.vesagent.model.EventMessage;\r
-import org.commscope.tr069adapter.vesagent.model.PnfRegEventAdditionalFeilds;\r
-import org.commscope.tr069adapter.vesagent.model.PnfRegEventFields;\r
-import org.commscope.tr069adapter.vesagent.util.EventUtil;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
-import org.springframework.stereotype.Component;\r
-\r
-@Component\r
-public class PnfRegMappingHandler {\r
- private static final Logger logger = LoggerFactory.getLogger(PnfRegMappingHandler.class);\r
- public static final String SSH_USERNAME = "netconf";\r
- public static final String SSH_PSSWORD = "netconf";\r
-\r
- @Autowired\r
- VesConfiguration config;\r
-\r
- @Autowired\r
- HttpRequestSender sender;\r
-\r
- public VESNotificationResponse handlePnfRegNotification(VESNotification vesNoti)\r
- throws JsonProcessingException {\r
- Event event = convertNotificationToVESEvent(vesNoti.getDevnotification(),\r
- vesNoti.getNetconfDetails(), vesNoti.geteNodeBName());\r
- if (null != event) {\r
- EventMessage evMsg = new EventMessage();\r
- evMsg.setEvent(event);\r
-\r
- ObjectMapper mapper = new ObjectMapper();\r
-\r
- String requestBody = mapper.writeValueAsString(evMsg);\r
- if (requestBody.isEmpty()) {\r
- logger.debug("VES Event body is empty");\r
- }\r
-\r
- String url = config.getPnfRegVesUrl();\r
- return sender.postRequest(url, requestBody);\r
- } else {\r
- return new VESNotificationResponse(-1,\r
- "unable to prepare ves event due to insufficient data");\r
- }\r
- }\r
-\r
- public VESNotificationResponse handlePnfRegNotificationOnRestart(VESNotification vesNoti)\r
- throws JsonProcessingException {\r
- Event event = convertNotificationToVESEventOnRestart(vesNoti.getNetconfDetails());\r
-\r
- EventMessage evMsg = new EventMessage();\r
- evMsg.setEvent(event);\r
-\r
- ObjectMapper mapper = new ObjectMapper();\r
-\r
- String requestBody = mapper.writeValueAsString(evMsg);\r
- if (requestBody.isEmpty()) {\r
- logger.debug("VES Event body is empty");\r
- }\r
-\r
- String url = config.getPnfRegVesUrl();\r
- return sender.postRequest(url, requestBody);\r
- }\r
-\r
- Event convertNotificationToVESEvent(DeviceInform notification,\r
- NetConfServerDetails netconfServerDetails, String eNodeBName) {\r
- logger.debug("Converting Notification to VES pnfevent started");\r
- Parser parser = new Parser();\r
-\r
-\r
- Event regEvent = new Event();\r
- CommonEventHeader eventHeader = new CommonEventHeader();\r
-\r
- eventHeader.setDomain("pnfRegistration");\r
- eventHeader.setEventId(\r
- "PnfReg" + notification.getDeviceDetails().getDeviceId() + System.currentTimeMillis());\r
- eventHeader.setEventName("pnfReg_" + notification.getDeviceDetails().getProductClass() + "-"\r
- + config.getVendorName());\r
- eventHeader.setEventType(config.getPnfRegEventType());\r
- eventHeader.setPriority("High");\r
- EventUtil.populateEventHeaderFields(eventHeader, notification, eNodeBName, config);\r
- regEvent.setCommonEventHeader(eventHeader);\r
-\r
- PnfRegEventFields pnfRegistrationFields =\r
- parser.parseNotificationParams(notification.getParameters());\r
- populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields);\r
- pnfRegistrationFields.setModelNumber(notification.getDeviceDetails().getProductClass());\r
-\r
- regEvent.setPnfRegistrationFields(pnfRegistrationFields);\r
- logger.debug("Converting Notification to VES pnfevent completed");\r
- return regEvent;\r
- }\r
-\r
- Event convertNotificationToVESEventOnRestart(NetConfServerDetails netconfServerDetails) {\r
- logger.debug("Converting Notification to VES pnfevent started");\r
-\r
- Event regEvent = new Event();\r
- CommonEventHeader eventHeader = new CommonEventHeader();\r
-\r
- if (null == netconfServerDetails) {\r
- logger.error("netconf server details as received as null {}", netconfServerDetails);\r
- return null;\r
- }\r
- eventHeader.setDomain("pnfRegistration");\r
- eventHeader\r
- .setEventId("PnfReg" + netconfServerDetails.getDeviceId() + System.currentTimeMillis());\r
- eventHeader.setEventName(\r
- "pnfReg_" + netconfServerDetails.getDeviceId() + "-" + config.getVendorName());\r
- eventHeader.setEventType(config.getPnfRegEventType());\r
- eventHeader.setLastEpochMicrosec(System.currentTimeMillis());\r
-\r
- eventHeader.setPriority("High");\r
- eventHeader.setSequence(0);\r
-\r
- if (netconfServerDetails.getEnodeBName() == null) {\r
- eventHeader.setReportingEntityName(netconfServerDetails.getDeviceId());\r
- eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId());\r
- eventHeader.setSourceId(netconfServerDetails.getDeviceId());\r
- eventHeader.setSourceName(netconfServerDetails.getDeviceId());\r
- } else {\r
- eventHeader.setReportingEntityName(netconfServerDetails.getEnodeBName());\r
- eventHeader.setSourceName(netconfServerDetails.getEnodeBName());\r
-\r
- eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId());\r
- eventHeader.setSourceId(netconfServerDetails.getDeviceId());\r
- }\r
-\r
- eventHeader.setStartEpochMicrosec(System.currentTimeMillis()*1000);\r
- eventHeader.setVersion(config.getEventVersion());\r
- eventHeader.setNfNamingCode("");\r
- eventHeader.setNfcNamingCode("");\r
- eventHeader.setNfVendorName(config.getVendorName());\r
- eventHeader.setVesEventListenerVersion(config.getVesVersion());\r
- regEvent.setCommonEventHeader(eventHeader);\r
- PnfRegEventFields pnfRegistrationFields = new PnfRegEventFields();\r
- regEvent.setPnfRegistrationFields(\r
- populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields));\r
- logger.debug("Converting Notification to VES pnfevent completed");\r
- return regEvent;\r
- }\r
-\r
- private PnfRegEventFields populatePnfRegFeilds(NetConfServerDetails netconfServerDetails,\r
- PnfRegEventFields pnfRegistrationFields) {\r
-\r
- pnfRegistrationFields.setSerialNumber(netconfServerDetails.getDeviceId());\r
- pnfRegistrationFields.setPnfRegistrationFieldsVersion(config.getPnfFeildVersion());\r
- pnfRegistrationFields.setMacAddress(netconfServerDetails.getDeviceId());\r
- pnfRegistrationFields.setVendorName(config.getVendorName());\r
- pnfRegistrationFields.setSoftwareVersion(netconfServerDetails.getSwVersion());\r
- PnfRegEventAdditionalFeilds additionalFields = new PnfRegEventAdditionalFeilds();\r
-\r
- pnfRegistrationFields.setOamV4IpAddress(netconfServerDetails.getListenAddress());\r
- // TODO: since not supporting 1pv6 we are configuring empty value\r
- pnfRegistrationFields.setOamV6IpAddress("");\r
-\r
- pnfRegistrationFields.setManufactureDate("");\r
- pnfRegistrationFields.setUnitType(config.getUnitType());\r
- pnfRegistrationFields.setUnitFamily(config.getUnitFamily());\r
- pnfRegistrationFields.setLastServiceDate(new SimpleDateFormat("ddMMyyyy").format(new Date()));\r
- additionalFields.setOamPort(netconfServerDetails.getListenPort());\r
- additionalFields.setProtocol("SSH");\r
- additionalFields.setUsername(SSH_USERNAME);\r
- additionalFields.setPassword(SSH_PSSWORD);\r
- additionalFields.setReconnectOnChangedSchema(Boolean.FALSE.toString());\r
- additionalFields.setSleepfactor("1.5");\r
- additionalFields.setTcpOnly(Boolean.FALSE.toString());\r
- additionalFields.setConnectionTimeout("20000");\r
- additionalFields.setMaxConnectionAttempts("100");\r
- additionalFields.setBetweenAttemptsTimeout("2000");\r
- additionalFields.setKeepaliveDelay("120");\r
-\r
- pnfRegistrationFields.setAdditionalFields(additionalFields);\r
-\r
- return pnfRegistrationFields;\r
-\r
- }\r
-\r
-}\r
+/*
+ * ============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<ParameterDTO> 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<ParameterDTO> 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<String, String> 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<String, String> 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;
+
+ }
+
+}