Add o-ran-sc/ prefix to ves-agent image name
[oam/tr069-adapter.git] / ves-agent / src / main / java / org / commscope / tr069adapter / vesagent / controller / PnfRegMappingHandler.java
1 /*\r
2  * ============LICENSE_START========================================================================\r
3  * ONAP : tr-069-adapter\r
4  * =================================================================================================\r
5  * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
6  * =================================================================================================\r
7  * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
8  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
9  * may obtain a copy of the License at\r
10  *\r
11  * http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
14  * either express or implied. See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  * ===============LICENSE_END=======================================================================\r
17  */\r
18 \r
19 package org.commscope.tr069adapter.vesagent.controller;\r
20 \r
21 import com.fasterxml.jackson.core.JsonProcessingException;\r
22 import com.fasterxml.jackson.databind.ObjectMapper;\r
23 \r
24 import java.text.SimpleDateFormat;\r
25 import java.util.Date;\r
26 \r
27 import org.commscope.tr069adapter.acs.common.DeviceInform;\r
28 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;\r
29 import org.commscope.tr069adapter.mapper.model.VESNotification;\r
30 import org.commscope.tr069adapter.mapper.model.VESNotificationResponse;\r
31 import org.commscope.tr069adapter.vesagent.VesConfiguration;\r
32 import org.commscope.tr069adapter.vesagent.fault.Parser;\r
33 import org.commscope.tr069adapter.vesagent.http.HttpRequestSender;\r
34 import org.commscope.tr069adapter.vesagent.model.CommonEventHeader;\r
35 import org.commscope.tr069adapter.vesagent.model.Event;\r
36 import org.commscope.tr069adapter.vesagent.model.EventMessage;\r
37 import org.commscope.tr069adapter.vesagent.model.PnfRegEventAdditionalFeilds;\r
38 import org.commscope.tr069adapter.vesagent.model.PnfRegEventFields;\r
39 import org.slf4j.Logger;\r
40 import org.slf4j.LoggerFactory;\r
41 import org.springframework.beans.factory.annotation.Autowired;\r
42 import org.springframework.stereotype.Component;\r
43 \r
44 @Component\r
45 public class PnfRegMappingHandler {\r
46   private static final Logger logger = LoggerFactory.getLogger(PnfRegMappingHandler.class);\r
47   public static final String SSH_USERNAME = "netconf";\r
48   public static final String SSH_PSSWORD = "netconf";\r
49 \r
50   @Autowired\r
51   VesConfiguration config;\r
52 \r
53   @Autowired\r
54   HttpRequestSender sender;\r
55 \r
56   public VESNotificationResponse handlePnfRegNotification(VESNotification vesNoti)\r
57       throws JsonProcessingException {\r
58     Event event = convertNotificationToVESEvent(vesNoti.getDevnotification(),\r
59         vesNoti.getNetconfDetails(), vesNoti.geteNodeBName());\r
60     if (null != event) {\r
61       EventMessage evMsg = new EventMessage();\r
62       evMsg.setEvent(event);\r
63 \r
64       ObjectMapper mapper = new ObjectMapper();\r
65 \r
66       String requestBody = mapper.writeValueAsString(evMsg);\r
67       if (requestBody.isEmpty()) {\r
68         logger.debug("VES Event body is empty");\r
69       }\r
70 \r
71       String url = config.getPnfRegVesUrl();\r
72       return sender.postRequest(url, requestBody);\r
73     } else {\r
74       return new VESNotificationResponse(-1,\r
75           "unable to prepare ves event due to insufficient data");\r
76     }\r
77   }\r
78 \r
79   public VESNotificationResponse handlePnfRegNotificationOnRestart(VESNotification vesNoti)\r
80       throws JsonProcessingException {\r
81     Event event = convertNotificationToVESEventOnRestart(vesNoti.getNetconfDetails());\r
82 \r
83     EventMessage evMsg = new EventMessage();\r
84     evMsg.setEvent(event);\r
85 \r
86     ObjectMapper mapper = new ObjectMapper();\r
87 \r
88     String requestBody = mapper.writeValueAsString(evMsg);\r
89     if (requestBody.isEmpty()) {\r
90       logger.debug("VES Event body is empty");\r
91     }\r
92 \r
93     String url = config.getPnfRegVesUrl();\r
94     return sender.postRequest(url, requestBody);\r
95   }\r
96 \r
97   Event convertNotificationToVESEvent(DeviceInform notification,\r
98       NetConfServerDetails netconfServerDetails, String eNodeBName) {\r
99     logger.debug("Converting Notification to VES pnfevent started");\r
100     Parser parser = new Parser();\r
101 \r
102 \r
103     Event regEvent = new Event();\r
104     CommonEventHeader eventHeader = new CommonEventHeader();\r
105 \r
106     eventHeader.setDomain("pnfRegistration");\r
107     eventHeader.setEventId(\r
108         "PnfReg" + notification.getDeviceDetails().getDeviceId() + System.currentTimeMillis());\r
109     eventHeader.setEventName("pnfReg_" + notification.getDeviceDetails().getProductClass() + "-"\r
110         + config.getVendorName());\r
111     eventHeader.setEventType(config.getPnfRegEventType());\r
112     eventHeader.setLastEpochMicrosec(System.currentTimeMillis());\r
113 \r
114     eventHeader.setPriority("High");\r
115     eventHeader.setSequence(0);\r
116 \r
117     if (eNodeBName == null) {\r
118       eventHeader.setReportingEntityName(notification.getDeviceDetails().getDeviceId());\r
119       eventHeader.setReportingEntityId(notification.getDeviceDetails().getDeviceId());\r
120       eventHeader.setSourceId(notification.getDeviceDetails().getDeviceId());\r
121       eventHeader.setSourceName(notification.getDeviceDetails().getDeviceId());\r
122     } else {\r
123       eventHeader.setReportingEntityName(eNodeBName);\r
124       eventHeader.setSourceName(eNodeBName);\r
125 \r
126       eventHeader.setReportingEntityId(notification.getDeviceDetails().getDeviceId());\r
127       eventHeader.setSourceId(notification.getDeviceDetails().getDeviceId());\r
128     }\r
129 \r
130     eventHeader.setStartEpochMicrosec(System.currentTimeMillis());\r
131     eventHeader.setVersion(config.getEventVersion());\r
132     eventHeader.setNfNamingCode("");\r
133     eventHeader.setNfcNamingCode("");\r
134     eventHeader.setNfVendorName(config.getVendorName());\r
135     eventHeader.setVesEventListenerVersion(config.getVesVersion());\r
136     regEvent.setCommonEventHeader(eventHeader);\r
137 \r
138     PnfRegEventFields pnfRegistrationFields =\r
139         parser.parseNotificationParams(notification.getParameters());\r
140     populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields);\r
141     pnfRegistrationFields.setModelNumber(notification.getDeviceDetails().getProductClass());\r
142 \r
143     regEvent.setPnfRegistrationFields(pnfRegistrationFields);\r
144     logger.debug("Converting Notification to VES pnfevent completed");\r
145     return regEvent;\r
146   }\r
147 \r
148   Event convertNotificationToVESEventOnRestart(NetConfServerDetails netconfServerDetails) {\r
149     logger.debug("Converting Notification to VES pnfevent started");\r
150 \r
151     Event regEvent = new Event();\r
152     CommonEventHeader eventHeader = new CommonEventHeader();\r
153 \r
154     if (null == netconfServerDetails) {\r
155       logger.error("netconf server details as received as null {}", netconfServerDetails);\r
156       return null;\r
157     }\r
158     eventHeader.setDomain("pnfRegistration");\r
159     eventHeader\r
160         .setEventId("PnfReg" + netconfServerDetails.getDeviceId() + System.currentTimeMillis());\r
161     eventHeader.setEventName(\r
162         "pnfReg_" + netconfServerDetails.getDeviceId() + "-" + config.getVendorName());\r
163     eventHeader.setEventType(config.getPnfRegEventType());\r
164     eventHeader.setLastEpochMicrosec(System.currentTimeMillis());\r
165 \r
166     eventHeader.setPriority("High");\r
167     eventHeader.setSequence(0);\r
168 \r
169     if (netconfServerDetails.getEnodeBName() == null) {\r
170       eventHeader.setReportingEntityName(netconfServerDetails.getDeviceId());\r
171       eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId());\r
172       eventHeader.setSourceId(netconfServerDetails.getDeviceId());\r
173       eventHeader.setSourceName(netconfServerDetails.getDeviceId());\r
174     } else {\r
175       eventHeader.setReportingEntityName(netconfServerDetails.getEnodeBName());\r
176       eventHeader.setSourceName(netconfServerDetails.getEnodeBName());\r
177 \r
178       eventHeader.setReportingEntityId(netconfServerDetails.getDeviceId());\r
179       eventHeader.setSourceId(netconfServerDetails.getDeviceId());\r
180     }\r
181 \r
182     eventHeader.setStartEpochMicrosec(System.currentTimeMillis());\r
183     eventHeader.setVersion(config.getEventVersion());\r
184     eventHeader.setNfNamingCode("");\r
185     eventHeader.setNfcNamingCode("");\r
186     eventHeader.setNfVendorName(config.getVendorName());\r
187     eventHeader.setVesEventListenerVersion(config.getVesVersion());\r
188     regEvent.setCommonEventHeader(eventHeader);\r
189     PnfRegEventFields pnfRegistrationFields = new PnfRegEventFields();\r
190     regEvent.setPnfRegistrationFields(\r
191         populatePnfRegFeilds(netconfServerDetails, pnfRegistrationFields));\r
192     logger.debug("Converting Notification to VES pnfevent completed");\r
193     return regEvent;\r
194   }\r
195 \r
196   private PnfRegEventFields populatePnfRegFeilds(NetConfServerDetails netconfServerDetails,\r
197       PnfRegEventFields pnfRegistrationFields) {\r
198 \r
199     pnfRegistrationFields.setSerialNumber(netconfServerDetails.getDeviceId());\r
200     pnfRegistrationFields.setPnfRegistrationFieldsVersion(config.getPnfFeildVersion());\r
201     pnfRegistrationFields.setMacAddress(netconfServerDetails.getDeviceId());\r
202     pnfRegistrationFields.setVendorName(config.getVendorName());\r
203     PnfRegEventAdditionalFeilds additionalFields = new PnfRegEventAdditionalFeilds();\r
204 \r
205     pnfRegistrationFields.setOamV4IpAddress(netconfServerDetails.getListenAddress());\r
206     // TODO: since not supporting 1pv6 we are configuring empty value\r
207     pnfRegistrationFields.setOamV6IpAddress("");\r
208 \r
209     pnfRegistrationFields.setManufactureDate("");\r
210     pnfRegistrationFields.setUnitType(config.getUnitType());\r
211     pnfRegistrationFields.setUnitFamily(config.getUnitFamily());\r
212     pnfRegistrationFields.setLastServiceDate(new SimpleDateFormat("ddMMyyyy").format(new Date()));\r
213     additionalFields.setOamPort(netconfServerDetails.getListenPort());\r
214     additionalFields.setProtocol("SSH");\r
215     additionalFields.setUsername(SSH_USERNAME);\r
216     additionalFields.setPassword(SSH_PSSWORD);\r
217     additionalFields.setReconnectOnChangedSchema(Boolean.FALSE.toString());\r
218     additionalFields.setSleepfactor("1.5");\r
219     additionalFields.setTcpOnly(Boolean.FALSE.toString());\r
220     additionalFields.setConnectionTimeout("20000");\r
221     additionalFields.setMaxConnectionAttempts("100");\r
222     additionalFields.setBetweenAttemptsTimeout("2000");\r
223     additionalFields.setKeepaliveDelay("120");\r
224 \r
225     pnfRegistrationFields.setAdditionalFields(additionalFields);\r
226 \r
227     return pnfRegistrationFields;\r
228 \r
229   }\r
230 \r
231 }\r