Initial source code
[oam/tr069-adapter.git] / ves-agent / src / main / java / org / commscope / tr069adapter / vesagent / controller / HeartBeatMessageHandler.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 package org.commscope.tr069adapter.vesagent.controller;\r
19 \r
20 import com.fasterxml.jackson.core.JsonProcessingException;\r
21 import com.fasterxml.jackson.databind.ObjectMapper;\r
22 \r
23 import org.commscope.tr069adapter.acs.common.DeviceInform;\r
24 import org.commscope.tr069adapter.mapper.model.VESNotification;\r
25 import org.commscope.tr069adapter.mapper.model.VESNotificationResponse;\r
26 import org.commscope.tr069adapter.vesagent.VesConfiguration;\r
27 import org.commscope.tr069adapter.vesagent.http.HttpRequestSender;\r
28 import org.commscope.tr069adapter.vesagent.model.CommonEventHeader;\r
29 import org.commscope.tr069adapter.vesagent.model.Event;\r
30 import org.commscope.tr069adapter.vesagent.model.EventMessage;\r
31 import org.commscope.tr069adapter.vesagent.model.HeartbeatFields;\r
32 import org.slf4j.Logger;\r
33 import org.slf4j.LoggerFactory;\r
34 import org.springframework.beans.factory.annotation.Autowired;\r
35 import org.springframework.stereotype.Component;\r
36 \r
37 @Component\r
38 public class HeartBeatMessageHandler {\r
39 \r
40   private static final Logger logger = LoggerFactory.getLogger(HeartBeatMessageHandler.class);\r
41 \r
42   @Autowired\r
43   VesConfiguration config;\r
44 \r
45   @Autowired\r
46   HttpRequestSender sender;\r
47 \r
48   public VESNotificationResponse handlePINotification(VESNotification vesNoti)\r
49       throws JsonProcessingException {\r
50     Event event =\r
51         convertNotificationToVESEvent(vesNoti.getDevnotification(), vesNoti.geteNodeBName());\r
52 \r
53     EventMessage evMsg = new EventMessage();\r
54     evMsg.setEvent(event);\r
55 \r
56     ObjectMapper mapper = new ObjectMapper();\r
57 \r
58     String requestBody = mapper.writeValueAsString(evMsg);\r
59     if (requestBody.isEmpty()) {\r
60       logger.debug("VES Event body is empty");\r
61     }\r
62 \r
63     String url = config.getPnfRegVesUrl();\r
64     return sender.postRequest(url, requestBody);\r
65   }\r
66 \r
67   Event convertNotificationToVESEvent(DeviceInform notification, String eNodeBName) {\r
68     Event hbEvent = new Event();\r
69     CommonEventHeader eventHeader = new CommonEventHeader();\r
70 \r
71     eventHeader.setDomain("heartbeat");\r
72     eventHeader.setEventId(\r
73         "Heartbeat_" + notification.getDeviceDetails().getDeviceId() + System.currentTimeMillis());\r
74     eventHeader.setEventName("Heartbeat_" + notification.getDeviceDetails().getProductClass() + "-"\r
75         + config.getVendorName());\r
76     eventHeader.setEventType("CommScope_RAN_Vnf");\r
77     eventHeader.setLastEpochMicrosec(System.currentTimeMillis());\r
78 \r
79     eventHeader.setPriority("Normal");\r
80     eventHeader.setSequence(0);\r
81 \r
82     if (eNodeBName == null) {\r
83       eventHeader.setReportingEntityName(notification.getDeviceDetails().getDeviceId());\r
84       eventHeader.setReportingEntityId(notification.getDeviceDetails().getDeviceId());\r
85       eventHeader.setSourceId(notification.getDeviceDetails().getDeviceId());\r
86       eventHeader.setSourceName(notification.getDeviceDetails().getDeviceId());\r
87     } else {\r
88       eventHeader.setReportingEntityName(eNodeBName);\r
89       eventHeader.setSourceName(eNodeBName);\r
90       eventHeader.setReportingEntityId(notification.getDeviceDetails().getDeviceId());\r
91       eventHeader.setSourceId(notification.getDeviceDetails().getDeviceId());\r
92     }\r
93 \r
94     eventHeader.setStartEpochMicrosec(System.currentTimeMillis());\r
95     eventHeader.setVersion(config.getEventVersion());\r
96     eventHeader.setNfNamingCode("");\r
97     eventHeader.setNfcNamingCode("");\r
98     eventHeader.setNfVendorName(config.getVendorName());\r
99     eventHeader.setVesEventListenerVersion(config.getVesVersion());\r
100     hbEvent.setCommonEventHeader(eventHeader);\r
101 \r
102     HeartbeatFields heartbeatFields = new HeartbeatFields();\r
103     heartbeatFields.setHeartbeatFieldsVersion("3.0");\r
104     heartbeatFields.setHeartbeatInterval(60);\r
105     hbEvent.setHeartbeatFields(heartbeatFields);\r
106 \r
107     return hbEvent;\r
108   }\r
109 }\r