upgrade openroadm models to 2.2.1
[transportpce.git] / networkmodel / src / main / java / org / opendaylight / transportpce / networkmodel / listeners / LldpListener221.java
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/LldpListener221.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/LldpListener221.java
new file mode 100644 (file)
index 0000000..0a2bc80
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright © 2017 AT&T and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.networkmodel.listeners;
+
+import org.opendaylight.transportpce.networkmodel.R2RLinkDiscovery;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.LldpNbrInfoChange;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.OrgOpenroadmLldpListener;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev181019.ResourceNotificationType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NodeId;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LldpListener221 implements OrgOpenroadmLldpListener {
+
+    private static final Logger LOG = LoggerFactory.getLogger(LldpListener221.class);
+    private final R2RLinkDiscovery linkDiscovery;
+    private final NodeId nodeId;
+
+    public LldpListener221(final R2RLinkDiscovery linkDiscovery, final String nodeId) {
+        this.linkDiscovery = linkDiscovery;
+        this.nodeId = new NodeId(nodeId);
+    }
+
+    /**
+     * Callback for lldp-nbr-info-change.
+     * @param notification LldpNbrInfoChange object
+     */
+    @Override
+    public void onLldpNbrInfoChange(LldpNbrInfoChange notification) {
+        LOG.info("Notification {} received {}", LldpNbrInfoChange.QNAME, notification);
+        if (notification.getNotificationType().equals(ResourceNotificationType.ResourceCreation)) {
+            linkDiscovery.createR2RLink(nodeId,notification.getResource(),
+                                                notification.getNbrInfo().getRemoteSysName(),
+                                                notification.getNbrInfo().getRemotePortId());
+        } else if (notification.getNotificationType().equals(ResourceNotificationType.ResourceDeletion)) {
+            linkDiscovery.deleteR2RLink(nodeId,notification.getResource(),
+                                                notification.getNbrInfo().getRemoteSysName(),
+                                                notification.getNbrInfo().getRemotePortId());
+        }
+    }
+}