Release version 1.3.1
[ccsdk/features.git] / sdnr / wt / devicemanager-onap / onf14 / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / onf14 / dom / impl / Onf14DomEthernetContainerNotificationListener.java
1 package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl;
2
3 import org.eclipse.jdt.annotation.NonNull;
4 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.dataprovider.InternalDataModelSeverity;
5 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DMDOMUtility;
6 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
7 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
8 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfDomAccessor;
9 import org.opendaylight.mdsal.dom.api.DOMNotification;
10 import org.opendaylight.mdsal.dom.api.DOMNotificationListener;
11 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
17 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
18 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21
22 public class Onf14DomEthernetContainerNotificationListener implements DOMNotificationListener {
23
24     private static final Logger log = LoggerFactory.getLogger(Onf14DomEthernetContainerNotificationListener.class);
25
26     private final NetconfDomAccessor netconfDomAccessor;
27     private final DeviceManagerServiceProvider serviceProvider;
28
29     public Onf14DomEthernetContainerNotificationListener(NetconfDomAccessor netconfDomAccessor,
30             DeviceManagerServiceProvider serviceProvider) {
31         this.netconfDomAccessor = netconfDomAccessor;
32         this.serviceProvider = serviceProvider;
33     }
34
35     @Override
36     public void onNotification(@NonNull DOMNotification domNotification) {
37         log.debug("Got event of type :: {}", domNotification.getType());
38         if (domNotification.getType()
39                 .equals(Absolute.of(Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_CREATE_NOTIFICATION))) {
40             onObjectCreationNotification(domNotification);
41         } else if (domNotification.getType()
42                 .equals(Absolute.of(Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_AVC_NOTIFICATION))) {
43             onAttributeValueChangedNotification(domNotification);
44         } else if (domNotification.getType()
45                 .equals(Absolute.of(Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION))) {
46             onProblemNotification(domNotification);
47         } else if (domNotification.getType()
48                 .equals(Absolute.of(Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_DELETE_NOTIFICATION))) {
49             onObjectDeletionNotification(domNotification);
50         }
51     }
52
53     public void onObjectDeletionNotification(DOMNotification notification) {
54
55         ContainerNode cn = notification.getBody();
56         EventlogBuilder eventlogBuilder = new EventlogBuilder();
57         eventlogBuilder.setNodeId(netconfDomAccessor.getNodeId().getValue()).setAttributeName("")
58                 .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
59                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_DELETE_NOTIFICATION_COUNTER)))
60                 .setNewValue("deleted")
61                 .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
62                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_DELETE_NOTIFICATION_OBJECT_ID_REF))
63
64                 .setSourceType(SourceType.Netconf).setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
65                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_DELETE_NOTIFICATION_TIMESTAMP)));
66         serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
67         serviceProvider.getNotificationService().deletionNotification(netconfDomAccessor.getNodeId(),
68                 Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
69                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_DELETE_NOTIFICATION_COUNTER)),
70                 new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
71                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_DELETE_NOTIFICATION_TIMESTAMP)),
72                 Onf14DMDOMUtility.getLeafValue(cn,
73                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_DELETE_NOTIFICATION_OBJECT_ID_REF));
74
75         log.debug("onObjectDeletionNotification log entry written");
76     }
77
78     public void onProblemNotification(DOMNotification notification) {
79
80         ContainerNode cn = notification.getBody();
81         FaultlogEntity faultAlarm = new FaultlogBuilder()
82                 .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
83                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_OBJECT_ID_REF))
84                 .setProblem(Onf14DMDOMUtility.getLeafValue(cn,
85                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_PROBLEM))
86                 .setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
87                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP)))
88                 .setNodeId(this.netconfDomAccessor.getNodeId().getValue()).setSourceType(SourceType.Netconf)
89                 .setSeverity(InternalDataModelSeverity.mapSeverity(Onf14DMDOMUtility.getLeafValue(cn,
90                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_SEVERITY)))
91                 .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
92                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_COUNTER)))
93                 .build();
94         serviceProvider.getFaultService().faultNotification(faultAlarm);
95         serviceProvider.getWebsocketService()
96                 .sendNotification(notification, netconfDomAccessor.getNodeId(),
97                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_OBJECT_ID_REF,
98                         new DateAndTime(cn.childByArg(new NodeIdentifier(
99                                 Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP))
100                                 .body().toString()));
101
102     }
103
104     public void onAttributeValueChangedNotification(DOMNotification notification) {
105
106         ContainerNode cn = notification.getBody();
107         EventlogBuilder eventlogBuilder = new EventlogBuilder();
108         eventlogBuilder.setNodeId(netconfDomAccessor.getNodeId().getValue())
109                 .setAttributeName(Onf14DMDOMUtility.getLeafValue(cn,
110                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_AVC_NOTIFICATION_ATTRIBUTE_NAME))
111                 .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
112                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_COUNTER)))
113                 .setNewValue(Onf14DMDOMUtility.getLeafValue(cn,
114                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_AVC_NOTIFICATION_NEW_VALUE))
115                 .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
116                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_AVC_NOTIFICATION_OBJECT_ID_REF))
117                 .setSourceType(SourceType.Netconf).setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
118                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_AVC_NOTIFICATION_TIMESTAMP)));
119         serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
120         serviceProvider.getWebsocketService().sendNotification(notification, netconfDomAccessor.getNodeId(),
121                 Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_AVC_NOTIFICATION,
122                 new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
123                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_AVC_NOTIFICATION_TIMESTAMP)));
124
125         log.debug("onAttributeValueChangedNotification log entry written");
126     }
127
128     public void onObjectCreationNotification(DOMNotification notification) {
129
130         ContainerNode cn = notification.getBody();
131         EventlogBuilder eventlogBuilder = new EventlogBuilder();
132         eventlogBuilder.setNodeId(netconfDomAccessor.getNodeId().getValue())
133                 .setAttributeName(Onf14DMDOMUtility.getLeafValue(cn,
134                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_CREATE_NOTIFICATION_OBJECT_ID_REF))
135                 .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
136                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_CREATE_NOTIFICATION_COUNTER)))
137                 .setNewValue("created")
138                 .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
139                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_CREATE_NOTIFICATION_OBJECT_ID_REF))
140
141                 .setSourceType(SourceType.Netconf).setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
142                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_CREATE_NOTIFICATION_TIMESTAMP)));
143         serviceProvider.getDataProvider().writeEventLog(eventlogBuilder.build());
144         serviceProvider.getWebsocketService().sendNotification(notification, netconfDomAccessor.getNodeId(),
145                 Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_CREATE_NOTIFICATION,
146                 new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
147                         Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_CREATE_NOTIFICATION_TIMESTAMP)));
148
149         log.debug("onObjectCreationNotification log entry written");
150     }
151 }