Initial code for OTN topology and portmapping 83/85783/17
authorshweta <sv111y@att.com>
Thu, 21 Nov 2019 14:06:07 +0000 (15:06 +0100)
committerguillaume.lambert <guillaume.lambert@orange.com>
Thu, 12 Dec 2019 12:19:25 +0000 (13:19 +0100)
JIRA: TRNSPRTPCE-138
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
Co-authored-by: Gilles Thouenon <gilles.thouenon@orange.com>
Co-authored-by: Christophe Betoule <christophe.betoule@orange.com>
Change-Id: Ie576bf4b90a3ca9a94e7a5152edb86b99281c69e

31 files changed:
api/src/main/yang/transportpce-portmapping@2017-02-28.yang [deleted file]
api/src/main/yang/transportpce-portmapping@2019-11-15.yang [moved from api/src/main/yang/transportpce-portmapping@2019-07-02.yang with 89% similarity]
common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java
lighty/src/main/java/io/lighty/controllers/tpce/utils/TPCEUtils.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkModelProvider.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmFactory.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology22.java [new file with mode: 0644]
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java
networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml
olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java
olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java
olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java
olm/src/test/java/org/opendaylight/transportpce/olm/power/PowerMgmtPowerMockTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmTransactionUtils.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface121.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java
renderer/src/test/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadMInterface221Test.java
renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/MountPointUtils.java
tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java
tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TopologyDataUtils.java

diff --git a/api/src/main/yang/transportpce-portmapping@2017-02-28.yang b/api/src/main/yang/transportpce-portmapping@2017-02-28.yang
deleted file mode 100644 (file)
index e4ebf60..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-module transportpce-portmapping {
-  yang-version 1;
-  namespace "http://org/opendaylight/transportpce/portmapping";
-  prefix "org-opendaylight-transportpce-portmapping";
-
-  import org-openroadm-common-types {
-    prefix org-openroadm-common-types;
-    revision-date 2016-10-14;
-  }
-
- organization
-    "transportPCE";
-  contact
-    "transportPCE committers - ODL";
-  description
-    "YANG definitions of RPCs supported by OLM.
-     Copyright (c) 2017 AT&T and others.  All rights reserved.
-     authors: Dhruv Bhardwaj ( db929a@att.com )
-              Shweta Vachhani ( sv111y@att.com )";
-
-  revision "2017-02-28" {
-    description "Initial revision of port mapping model";
-  }
-  container network{
-    list nodes{
-      key node-id;
-      leaf node-id{
-        type string;
-        description
-          "Unique identifier for node in the network";
-      }
-
-      leaf openroadm-version{
-        type enumeration {
-          enum "1.2.1" {
-            value 1;
-            description
-              "Version 1.2.1";
-            }
-            enum "2.2.1" {
-              value 2;
-              description
-                "Version 2.2.1";
-            }
-          }
-        }
-      leaf node-type{
-        type org-openroadm-common-types:node-types;
-        description
-          "Identifier for node-type e.g Roadm, xponder";
-      }
-      leaf clli{
-          type string;
-          description
-            "Common Language Location Identifier read from device";
-      }
-      list mapping{
-        description
-          "Mapping for Physical circuit pack/port/parent interfaces
-          corresponding to each logical connection point present in the node.";
-        key logical-connection-point;
-        leaf logical-connection-point{
-          type string;
-        }
-        leaf supporting-circuit-pack-name{
-          type string;
-          description
-          "Circuit pack where the logical connection point is located";
-        }
-        leaf supporting-port{
-          type string;
-          description
-          "Port where the logical connection point is located";
-        }
-        leaf supporting-oms{
-          type string;
-          description
-          "OMS interface provisioned on the port";
-        }
-        leaf supporting-ots{
-          type string;
-          description
-          "OTS interface provisioned on the port";
-        }
-        leaf port-direction{
-          type string;
-          description
-            "Useful for line port of XPDR, for which there is no
-            indication in its logical-termination-point naming";
-        }
-        leaf port-qual{
-          type string;
-          description
-            "Useful to identify from portmapping client from network ports of XPDR";
-        }
-        leaf associated-lcp{
-          type string;
-          description
-            "For XPDR, associate two logical-connection-points
-            from device/connnection-map data";
-        }
-        leaf partner-lcp{
-            type string;
-            description
-              "For XPDR unidirectional NETWORK port, associate two logical-connection-points
-              from device/partner port data";
-          }
-      }
-      list cp-to-degree{
-        description
-          "This mapping helps locate degree number of the circuitpack that does lldp
-         protocol management";
-       key circuit-pack-name;
-       leaf circuit-pack-name{
-          type string;
-       }
-       leaf degree-number{
-            type uint32;
-       }
-       leaf interface-name{
-          type string;
-       }
-      }
-    }
-  }
-}
similarity index 89%
rename from api/src/main/yang/transportpce-portmapping@2019-07-02.yang
rename to api/src/main/yang/transportpce-portmapping@2019-11-15.yang
index 1aacc7fddb71538441b5cdfb3aeb39bf52de8758..00a6be48137a0b1d1118fec9b0518d22b025a27d 100644 (file)
@@ -15,6 +15,10 @@ module transportpce-portmapping {
     AT&T and others. All rights reserved. authors: Dhruv Bhardwaj
     ( db929a@att.com ) Shweta Vachhani ( sv111y@att.com )";
 
     AT&T and others. All rights reserved. authors: Dhruv Bhardwaj
     ( db929a@att.com ) Shweta Vachhani ( sv111y@att.com )";
 
+  revision "2019-11-15" {
+    description "OTN support";
+  }
+
   revision 2019-07-02 {
     description
         "Version 2. To manage device 2.2.1";
   revision 2019-07-02 {
     description
         "Version 2. To manage device 2.2.1";
@@ -114,6 +118,21 @@ module transportpce-portmapping {
              "Useful to identify from portmapping client from network ports
              of XPDR";
         }
              "Useful to identify from portmapping client from network ports
              of XPDR";
         }
+        leaf supporting-ethernet{
+          type string;
+          description
+            "Ethernet interface provisioned on the port";
+         }
+         leaf supporting-odu4{
+           type string;
+           description
+             "ODU4 interface provisioned on the port";
+         }
+         leaf rate{
+            type string;
+            description
+              "Rate supported by the port";
+        }
         leaf associated-lcp {
           type string;
           description
         leaf associated-lcp {
           type string;
           description
index 125b74c830616fbe12c4ade683063b34552578ad..60c8e82631604f68d5adbdfefde89b93caa3479a 100644 (file)
@@ -13,10 +13,10 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
index 4b2eddeecb35fee5bb63f296e77f9107c1a1cebe..e6da7201eca71f7bfa6641709c69ec41d2669602 100644 (file)
@@ -8,8 +8,8 @@
 
 package org.opendaylight.transportpce.common.mapping;
 
 
 package org.opendaylight.transportpce.common.mapping;
 
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
 
 public interface PortMapping {
 
 
 public interface PortMapping {
 
index d493281c128947747f09b28f5cd4fb1e62e5654b..abed310d84a52d16dc3befe9e042f11587258f9b 100644 (file)
@@ -19,13 +19,13 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -112,7 +112,7 @@ public class PortMappingImpl implements PortMapping {
             return portMappingVersion121.updateMapping(nodeId,oldMapping);
         }
         else if (openROADMversion.getIntValue() == 2) {
             return portMappingVersion121.updateMapping(nodeId,oldMapping);
         }
         else if (openROADMversion.getIntValue() == 2) {
-            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes
+            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes
                 .MappingBuilder oldMapping2Bldr = new MappingBuilder().setLogicalConnectionPoint(oldMapping
                 .getLogicalConnectionPoint()).setPortDirection(oldMapping.getPortDirection());
             if (oldMapping.getAssociatedLcp() != null) {
                 .MappingBuilder oldMapping2Bldr = new MappingBuilder().setLogicalConnectionPoint(oldMapping
                 .getLogicalConnectionPoint()).setPortDirection(oldMapping.getPortDirection());
             if (oldMapping.getAssociatedLcp() != null) {
index aa726fa6701d70b6c72a1012bdf76c1c0e237a73..2b62b540e11a82b581adf83012648b17d358a063 100644 (file)
@@ -29,20 +29,20 @@ import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.CircuitPack;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.CircuitPack;
index 3330537b0bee8b57c060f74783b2639b896c8f3d..aaa54c2fc7ce3d3015052adc94796bcd424195ab 100644 (file)
@@ -28,22 +28,22 @@ import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.CircuitPack;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.Ports;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.PortsKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.CircuitPack;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.Ports;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.PortsKey;
@@ -60,7 +60,9 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.open
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.Protocols;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.SharedRiskGroup;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.Protocols;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.SharedRiskGroup;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.Xponder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.port.Interfaces;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.port.Interfaces;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.xponder.XpdrPort;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.InterfaceType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OpenROADMOpticalMultiplex;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OpticalTransport;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.InterfaceType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OpenROADMOpticalMultiplex;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev170626.OpticalTransport;
@@ -178,128 +180,231 @@ public class PortMappingVersion221 {
         Optional<OrgOpenroadmDevice> deviceObject = deviceTransactionManager.getDataFromDevice(nodeId,
             LogicalDatastoreType.OPERATIONAL, deviceIID,
             Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
         Optional<OrgOpenroadmDevice> deviceObject = deviceTransactionManager.getDataFromDevice(nodeId,
             LogicalDatastoreType.OPERATIONAL, deviceIID,
             Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
-
+        OrgOpenroadmDevice device = null;
+        if (deviceObject.isPresent()) {
+            device = deviceObject.get();
+        } else {
+            LOG.error("Impossible to get device configuration for node {}", nodeId);
+            return false;
+        }
         // Variable to keep track of number of line ports
         int line = 1;
         // Variable to keep track of number of client ports
         int client = 1;
         // Variable to keep track of number of line ports
         int line = 1;
         // Variable to keep track of number of client ports
         int client = 1;
-        if (!deviceObject.isPresent() || deviceObject.get().getCircuitPacks() == null) {
-            LOG.warn("Circuit Packs are not present for {}", nodeId);
-            return false;
-            // TODO return false or continue?
-        }
         Map<String, String> lcpMap = new HashMap<>();
         Map<String, Mapping> mappingMap = new HashMap<>();
 
         Map<String, String> lcpMap = new HashMap<>();
         Map<String, Mapping> mappingMap = new HashMap<>();
 
-        List<CircuitPacks> circuitPackList = deviceObject.get().getCircuitPacks();
-        circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName));
-
-        for (CircuitPacks cp : circuitPackList) {
-            String circuitPackName = cp.getCircuitPackName();
-            if (cp.getPorts() == null) {
-                LOG.warn("Ports were not found for circuit pack: {}", circuitPackName);
-                continue;
-            }
-            List<Ports> portList = cp.getPorts();
-            portList.sort(Comparator.comparing(Ports::getPortName));
-            for (Ports port : portList) {
-                if (port.getPortQual() == null) {
-                    LOG.warn("PortQual was not found for port {} on circuit pack: {}", port.getPortName(),
-                        circuitPackName);
+        List<CircuitPacks> circuitPackList = null;
+        if (device.getCircuitPacks() == null) {
+            LOG.warn("Circuit Packs are not present for {}", nodeId);
+            return false;
+        } else {
+            circuitPackList = deviceObject.get().getCircuitPacks();
+            circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName));
+        }
+        String xpdrPreFix = "XPDR";
+        if (device.getXponder() == null) {
+            LOG.warn("{} configuration does not contain a list of xponders", nodeId);
+            for (CircuitPacks cp : circuitPackList) {
+                String circuitPackName = cp.getCircuitPackName();
+                if (cp.getPorts() == null) {
+                    LOG.warn("Ports were not found for circuit pack: {}", circuitPackName);
                     continue;
                 }
                     continue;
                 }
-                if (Port.PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
-                    && port.getPortDirection().getIntValue() == Direction.Bidirectional.getIntValue()) {
-                    String lcp = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
-                    lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
-                    mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null));
-                    line++;
-                } else if (Port.PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
-                    && port.getPortDirection().getIntValue() != Direction.Bidirectional.getIntValue()
-                    && port.getPartnerPort() != null
-                    && port.getPartnerPort().getCircuitPackName() != null
-                    && port.getPartnerPort().getPortName() != null) {
-                    if (lcpMap.containsKey(circuitPackName + '+' + port.getPortName())) {
+                List<Ports> portList = cp.getPorts();
+                portList.sort(Comparator.comparing(Ports::getPortName));
+                for (Ports port : portList) {
+                    if (port.getPortQual() == null) {
+                        LOG.warn("PortQual was not found for port {} on circuit pack: {}", port.getPortName(),
+                            circuitPackName);
                         continue;
                     }
                         continue;
                     }
-                    String lcp1 = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
-                    Optional<CircuitPacks> cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName()
-                        .equals(port.getPartnerPort().getCircuitPackName())).findFirst();
-                    if (cpOpt.isPresent()) {
-                        Optional<Ports> poOpt = cpOpt.get().getPorts().stream().filter(p -> p.getPortName().equals(port
-                            .getPartnerPort().getPortName().toString())).findFirst();
-                        if (poOpt.isPresent()) {
-                            Ports port2 = poOpt.get();
-                            if ((Direction.Rx.getIntValue() == port.getPortDirection().getIntValue()
-                                && Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
-                                && port2.getPartnerPort() != null && port2.getPartnerPort().getCircuitPackName() != null
-                                && port2.getPartnerPort().getPortName() != null
-                                && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
-                                && port2.getPartnerPort().getPortName().equals(port.getPortName()))
-                                ||
-                                (Direction.Tx.getIntValue() == port.getPortDirection().getIntValue()
-                                && Direction.Rx.getIntValue() == port2.getPortDirection().getIntValue()
-                                && port2.getPartnerPort() != null && port2.getPartnerPort().getCircuitPackName() != null
-                                && port2.getPartnerPort().getPortName() != null
-                                && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
-                                && port2.getPartnerPort().getPortName().equals(port.getPortName()))) {
-                                String lcp2 = new StringBuilder("XPDR1-").append(StringConstants.NETWORK_TOKEN)
-                                    .append(line + 1).toString();
-                                if (!lcpMap.containsKey(lcp1) && !lcpMap.containsKey(lcp2)) {
-                                    lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp1);
-                                    lcpMap.put(cpOpt.get().getCircuitPackName() + '+' + port2.getPortName(), lcp2);
-                                    mappingMap.put(lcp1, createXpdrMappingObject(nodeId, port, circuitPackName, lcp1,
-                                        lcp2, null, null));
-                                    mappingMap.put(lcp2, createXpdrMappingObject(nodeId, port2, cpOpt.get()
-                                        .getCircuitPackName(), lcp2, lcp1, null, null));
+                    if (PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+                        && port.getPortDirection().getIntValue() == Direction.Bidirectional.getIntValue()) {
+                        String lcp = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
+                        lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+                        mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null,
+                            null));
+                        line++;
+                    } else if (PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+                        && port.getPortDirection().getIntValue() != Direction.Bidirectional.getIntValue()
+                        && port.getPartnerPort() != null
+                        && port.getPartnerPort().getCircuitPackName() != null
+                        && port.getPartnerPort().getPortName() != null) {
+                        if (lcpMap.containsKey(circuitPackName + '+' + port.getPortName())) {
+                            continue;
+                        }
+                        String lcp1 = "XPDR1-" + StringConstants.NETWORK_TOKEN + line;
+                        Optional<CircuitPacks> cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName()
+                            .equals(port.getPartnerPort().getCircuitPackName())).findFirst();
+                        if (cpOpt.isPresent()) {
+                            Optional<Ports> poOpt = cpOpt.get().getPorts().stream().filter(p -> p.getPortName()
+                                .equals(port.getPartnerPort().getPortName().toString())).findFirst();
+                            if (poOpt.isPresent()) {
+                                Ports port2 = poOpt.get();
+                                if (checkPartnerPort(circuitPackName, port, port2)) {
+                                    String lcp2 = new StringBuilder("XPDR1-").append(StringConstants.NETWORK_TOKEN)
+                                        .append(line + 1).toString();
+                                    if (!lcpMap.containsKey(lcp1) && !lcpMap.containsKey(lcp2)) {
+                                        lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp1);
+                                        lcpMap.put(cpOpt.get().getCircuitPackName() + '+' + port2.getPortName(), lcp2);
+                                        mappingMap.put(lcp1, createXpdrMappingObject(nodeId, port, circuitPackName,
+                                            lcp1, lcp2, null, null));
+                                        mappingMap.put(lcp2, createXpdrMappingObject(nodeId, port2, cpOpt.get()
+                                            .getCircuitPackName(), lcp2, lcp1, null, null));
+                                    } else {
+                                        LOG.warn("mapping already exists for {} or {}", lcp1, lcp2);
+                                    }
+                                    line += 2;
                                 } else {
                                 } else {
-                                    LOG.warn("mapping already exists for {} or {}", lcp1, lcp2);
+                                    LOG.error("port {} on {} is not a correct partner port of {} on  {}",
+                                        port2.getPortName(), cpOpt.get().getCircuitPackName(), port.getPortName(),
+                                        circuitPackName);
                                 }
                                 }
-                                line += 2;
                             } else {
                             } else {
-                                LOG.error("port {} on {} is not a correct partner port of {} on  {}",
-                                    port2.getPortName(), cpOpt.get().getCircuitPackName(), port.getPortName(),
-                                    circuitPackName);
+                                LOG.error("Error fetching port {} on {} for {}", port.getPartnerPort().getPortName(),
+                                    port.getPartnerPort().getCircuitPackName(), nodeId);
                             }
                         } else {
                             }
                         } else {
-                            LOG.error("Error fetching port {} on {} for {}", port.getPartnerPort().getPortName(),
-                                port.getPartnerPort().getCircuitPackName(), nodeId);
+                            LOG.error("Error fetching circuit-pack {} for {}", port.getPartnerPort()
+                                .getCircuitPackName(), nodeId);
                         }
                         }
+                    } else if (PortQual.XpdrClient.getIntValue() == port.getPortQual().getIntValue()) {
+                        String lcp = "XPDR1-" + StringConstants.CLIENT_TOKEN + client;
+                        lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+                        mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null,
+                            null));
+                        client++;
                     } else {
                     } else {
-                        LOG.error("Error fetching circuit-pack {} for {}", port.getPartnerPort().getCircuitPackName(),
+                        LOG.warn("Error in the configuration of port {} of {} for {}", port.getPortName(),
+                            circuitPackName,
                             nodeId);
                     }
                             nodeId);
                     }
-                } else if (Port.PortQual.XpdrClient.getIntValue() == port.getPortQual().getIntValue()) {
-                    String lcp = "XPDR1-" + StringConstants.CLIENT_TOKEN + client;
-                    lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
-                    mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null));
-                    client++;
-                } else {
-                    LOG.warn("Error in the configuration of port {} of {} for {}", port.getPortName(), circuitPackName,
-                        nodeId);
                 }
             }
                 }
             }
-        }
-        List<ConnectionMap> connectionMap = deviceObject.get().getConnectionMap();
-        String slcp = null;
-        String dlcp = null;
-        for (ConnectionMap cm : connectionMap) {
-            String skey = cm.getSource().getCircuitPackName() + "+" + cm.getSource().getPortName();
-            if (lcpMap.containsKey(skey)) {
-                slcp = lcpMap.get(skey);
-            }
-            String dkey = cm.getDestination().get(0).getCircuitPackName() + "+"
-                + cm.getDestination().get(0).getPortName();
-            if (lcpMap.containsKey(dkey)) {
-                dlcp = lcpMap.get(dkey);
+        } else {
+            LOG.info("{} configuration contains a list of xponders", nodeId);
+            for (Xponder xponder:deviceObject.get().getXponder()) {
+                xpdrPreFix += xponder.getXpdrNumber();
+                for (XpdrPort xpdrPort : xponder.getXpdrPort()) {
+                    CircuitPacks cp = circuitPackList.stream().filter(x -> x.getCircuitPackName()
+                            .equals(xpdrPort.getCircuitPackName()))
+                            .collect(Collectors.toList()).get(0);
+                    String circuitPackName = cp.getCircuitPackName();
+                    Boolean isExisting = false;
+                    for (String keys : lcpMap.keySet()) {
+                        LOG.info("Keys are {}", keys);
+                        if (keys.contains(cp.getCircuitPackName() + "+" + xpdrPort.getPortName().toString())) {
+                            isExisting = true;
+                            break;
+                        }
+                    }
+                    if (isExisting) {
+                        continue;
+                    }
+                    List<Ports> portList = cp.getPorts();
+                    portList.sort(Comparator.comparing(Ports::getPortName));
+                    for (Ports port : portList) {
+                        if (port.getPortQual() == null) {
+                            LOG.warn("PortQual was not found for port {} on circuit pack: {}", port.getPortName(),
+                                    circuitPackName);
+                            continue;
+                        }
+                        if ((PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+                            || PortQual.SwitchNetwork.getIntValue() == port.getPortQual().getIntValue())
+                                && port.getPortDirection().getIntValue() == Direction.Bidirectional.getIntValue()) {
+                            String lcp = xpdrPreFix + "-" + StringConstants.NETWORK_TOKEN + line;
+                            lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+                            mappingMap.put(lcp, createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null,
+                                null));
+                            line++;
+                        } else if (PortQual.XpdrNetwork.getIntValue() == port.getPortQual().getIntValue()
+                                && port.getPortDirection().getIntValue() != Direction.Bidirectional.getIntValue()
+                                && port.getPartnerPort() != null
+                                && port.getPartnerPort().getCircuitPackName() != null
+                                && port.getPartnerPort().getPortName() != null) {
+                            if (lcpMap.containsKey(circuitPackName + '+' + port.getPortName())) {
+                                continue;
+                            }
+                            String lcp1 = xpdrPreFix + "-" + StringConstants.NETWORK_TOKEN + line;
+                            Optional<CircuitPacks> cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName()
+                                    .equals(port.getPartnerPort().getCircuitPackName())).findFirst();
+                            if (cpOpt.isPresent()) {
+                                Optional<Ports> poOpt = cpOpt.get().getPorts().stream().filter(p -> p.getPortName()
+                                    .equals(port.getPartnerPort().getPortName().toString())).findFirst();
+                                if (poOpt.isPresent()) {
+                                    Ports port2 = poOpt.get();
+                                    if (checkPartnerPort(circuitPackName, port, port2)) {
+                                        String lcp2 = new StringBuilder(xpdrPreFix)
+                                            .append(StringConstants.NETWORK_TOKEN)
+                                            .append(line + 1)
+                                            .toString();
+                                        if (!lcpMap.containsKey(lcp1) && !lcpMap.containsKey(lcp2)) {
+                                            lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp1);
+                                            lcpMap.put(cpOpt.get().getCircuitPackName() + '+' + port2.getPortName(),
+                                                lcp2);
+                                            mappingMap.put(lcp1, createXpdrMappingObject(nodeId, port, circuitPackName,
+                                                lcp1, lcp2, null, null));
+                                            mappingMap.put(lcp2, createXpdrMappingObject(nodeId, port2, cpOpt.get()
+                                                    .getCircuitPackName(), lcp2, lcp1, null, null));
+                                        } else {
+                                            LOG.warn("mapping already exists for {} or {}", lcp1, lcp2);
+                                        }
+                                        line += 2;
+                                    } else {
+                                        LOG.error("port {} on {} is not a correct partner port of {} on  {}",
+                                            port2.getPortName(), cpOpt.get().getCircuitPackName(), port.getPortName(),
+                                            circuitPackName);
+                                    }
+                                } else {
+                                    LOG.error("Error fetching port {} on {} for {}",
+                                        port.getPartnerPort().getPortName(), port.getPartnerPort().getCircuitPackName(),
+                                        nodeId);
+                                }
+                            } else {
+                                LOG.error("Error fetching circuit-pack {} for {}",
+                                    port.getPartnerPort().getCircuitPackName(), nodeId);
+                            }
+                        } else if (PortQual.XpdrClient.getIntValue() == port.getPortQual().getIntValue()
+                            || PortQual.SwitchClient.getIntValue() == port.getPortQual().getIntValue()) {
+                            String lcp = xpdrPreFix + "-" + StringConstants.CLIENT_TOKEN + client;
+                            lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+                            mappingMap.put(lcp,
+                                createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null));
+                            client++;
+                        } else {
+                            LOG.warn("Error in the configuration of port {} of {} for {}",
+                                port.getPortName(), circuitPackName, nodeId);
+                        }
+                    }
+                }
             }
             }
-            if (slcp != null) {
-                Mapping mapping = mappingMap.get(slcp);
-                mappingMap.remove(slcp);
-                portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp));
-            } else {
-                LOG.error("Error in connection-map analysis");
+        }
+
+        if (device.getConnectionMap() != null) {
+            List<ConnectionMap> connectionMap = deviceObject.get().getConnectionMap();
+            String slcp = null;
+            String dlcp = null;
+            for (ConnectionMap cm : connectionMap) {
+                String skey = cm.getSource().getCircuitPackName() + "+" + cm.getSource().getPortName();
+                if (lcpMap.containsKey(skey)) {
+                    slcp = lcpMap.get(skey);
+                }
+                String dkey = cm.getDestination().get(0).getCircuitPackName() + "+"
+                    + cm.getDestination().get(0).getPortName();
+                if (lcpMap.containsKey(dkey)) {
+                    dlcp = lcpMap.get(dkey);
+                }
+                if (slcp != null) {
+                    Mapping mapping = mappingMap.get(slcp);
+                    mappingMap.remove(slcp);
+                    portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp));
+                } else {
+                    LOG.error("Error in connection-map analysis");
+                }
             }
             }
+        } else {
+            LOG.warn("No connection-map inside device configuration");
         }
         if (!mappingMap.isEmpty()) {
             for (Mapping m : mappingMap.values()) {
         }
         if (!mappingMap.isEmpty()) {
             for (Mapping m : mappingMap.values()) {
@@ -309,6 +414,28 @@ public class PortMappingVersion221 {
         return true;
     }
 
         return true;
     }
 
+    private boolean checkPartnerPort(String circuitPackName, Ports port1, Ports port2) {
+        if ((Direction.Rx.getIntValue() == port1.getPortDirection().getIntValue()
+            && Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
+            && port2.getPartnerPort() != null
+            && port2.getPartnerPort().getCircuitPackName() != null
+            && port2.getPartnerPort().getPortName() != null
+            && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
+            && port2.getPartnerPort().getPortName().equals(port1.getPortName()))
+            ||
+            (Direction.Tx.getIntValue() == port1.getPortDirection().getIntValue()
+            && Direction.Rx.getIntValue() == port2.getPortDirection().getIntValue()
+            && port2.getPartnerPort() != null
+            && port2.getPartnerPort().getCircuitPackName() != null
+            && port2.getPartnerPort().getPortName() != null
+            && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
+            && port2.getPartnerPort().getPortName().equals(port1.getPortName()))) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     private HashMap<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.srg
         .CircuitPacks>> getSrgCps(String deviceId, Info ordmInfo) {
         HashMap<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.srg
     private HashMap<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.srg
         .CircuitPacks>> getSrgCps(String deviceId, Info ordmInfo) {
         HashMap<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.srg
@@ -369,7 +496,7 @@ public class PortMappingVersion221 {
                     String currentKey = circuitPackName + "-" + port.getPortName();
                     if (port.getPortQual() == null) {
                         continue;
                     String currentKey = circuitPackName + "-" + port.getPortName();
                     if (port.getPortQual() == null) {
                         continue;
-                    } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
+                    } else if (PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
                         && Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()
                         && !keys.contains(currentKey)) {
                         String logicalConnectionPoint = createLogicalConnectionPort(port, k, portIndex);
                         && Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()
                         && !keys.contains(currentKey)) {
                         String logicalConnectionPoint = createLogicalConnectionPort(port, k, portIndex);
@@ -378,7 +505,7 @@ public class PortMappingVersion221 {
                         portMapList.add(createMappingObject(nodeId, port, circuitPackName, logicalConnectionPoint));
                         portIndex++;
                         keys.add(currentKey);
                         portMapList.add(createMappingObject(nodeId, port, circuitPackName, logicalConnectionPoint));
                         portIndex++;
                         keys.add(currentKey);
-                    } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
+                    } else if (PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
                         && (Direction.Rx.getIntValue() == port.getPortDirection().getIntValue()
                         || Direction.Tx.getIntValue() == port.getPortDirection().getIntValue())
                         && !keys.contains(currentKey)
                         && (Direction.Rx.getIntValue() == port.getPortDirection().getIntValue()
                         || Direction.Tx.getIntValue() == port.getPortDirection().getIntValue())
                         && !keys.contains(currentKey)
@@ -394,19 +521,9 @@ public class PortMappingVersion221 {
                             Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
                         if (port2Object.isPresent()
                             && port2Object.get().getPortQual().getIntValue()
                             Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
                         if (port2Object.isPresent()
                             && port2Object.get().getPortQual().getIntValue()
-                                == Port.PortQual.RoadmExternal.getIntValue()) {
+                                == PortQual.RoadmExternal.getIntValue()) {
                             Ports port2 = port2Object.get();
                             Ports port2 = port2Object.get();
-                            if ((port.getPortDirection().getIntValue() == Direction.Rx.getIntValue()
-                                && port2.getPortDirection().getIntValue() == Direction.Tx.getIntValue()
-                                && port2.getPartnerPort() != null
-                                && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
-                                && port2.getPartnerPort().getPortName().toString().equals(port.getPortName()))
-                                ||
-                                (port.getPortDirection().getIntValue() == Direction.Tx.getIntValue()
-                                && port2.getPortDirection().getIntValue() == Direction.Rx.getIntValue()
-                                && port2.getPartnerPort() != null
-                                && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
-                                && port2.getPartnerPort().getPortName().toString().equals(port.getPortName()))) {
+                            if (checkPartnerPort(circuitPackName, port, port2)) {
                                 String logicalConnectionPoint2 = createLogicalConnectionPort(port2, k, portIndex);
                                 LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId, circuitPackName,
                                     port2.getPortName(), logicalConnectionPoint2);
                                 String logicalConnectionPoint2 = createLogicalConnectionPort(port2, k, portIndex);
                                 LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId, circuitPackName,
                                     port2.getPortName(), logicalConnectionPoint2);
@@ -423,12 +540,14 @@ public class PortMappingVersion221 {
                                 portIndex++;
                             }
                         } else {
                                 portIndex++;
                             }
                         } else {
-                            LOG.error("error getting partner port {} of  {} - {}", port.getPartnerPort().getPortName()
-                                .toString(), port.getPartnerPort().getCircuitPackName(), nodeId);
+                            LOG.error("error getting partner port {} of  {} - {}",
+                                port.getPartnerPort().getPortName().toString(),
+                                port.getPartnerPort().getCircuitPackName(), nodeId);
                             continue;
                         }
                     } else {
                             continue;
                         }
                     } else {
-                        LOG.info("{} : port {} on {} is not roadm-external or has already been handled. No logicalConnectionPoint assignment for this port.",
+                        LOG.info("{} : port {} on {} is not roadm-external or has already been handled."
+                            + " No logicalConnectionPoint assignment for this port.",
                             nodeId, port.getPortName(), circuitPackName);
                     }
                 }
                             nodeId, port.getPortName(), circuitPackName);
                     }
                 }
@@ -695,7 +814,7 @@ public class PortMappingVersion221 {
                         Ports port = portObject.get();
                         if (port.getPortQual() == null) {
                             continue;
                         Ports port = portObject.get();
                         if (port.getPortQual() == null) {
                             continue;
-                        } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
+                        } else if (PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
                             && Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()) {
                             String logicalConnectionPoint = new StringBuilder("DEG").append(k).append("-TTP-TXRX")
                                 .toString();
                             && Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()) {
                             String logicalConnectionPoint = new StringBuilder("DEG").append(k).append("-TTP-TXRX")
                                 .toString();
@@ -706,7 +825,8 @@ public class PortMappingVersion221 {
                                 connectionPortMap.get(k).get(0).getCircuitPackName(), logicalConnectionPoint));
                         } else {
                             LOG.error(
                                 connectionPortMap.get(k).get(0).getCircuitPackName(), logicalConnectionPoint));
                         } else {
                             LOG.error(
-                                "Impossible to create logical connection point for port {} of {} on node {} - Error in configuration with port-qual or port-direction",
+                                "Impossible to create logical connection point for port {} of {} on node {}"
+                                + "- Error in configuration with port-qual or port-direction",
                                 port.getPortName(), connectionPortMap.get(k).get(0).getCircuitPackName(), nodeId);
                         }
                     } else {
                                 port.getPortName(), connectionPortMap.get(k).get(0).getCircuitPackName(), nodeId);
                         }
                     } else {
@@ -741,8 +861,8 @@ public class PortMappingVersion221 {
                         Ports port2 = port2Object.get();
                         if (port1.getPortQual() == null || port2.getPortQual() == null) {
                             continue;
                         Ports port2 = port2Object.get();
                         if (port1.getPortQual() == null || port2.getPortQual() == null) {
                             continue;
-                        } else if ((Port.PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
-                                && Port.PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
+                        } else if ((PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
+                                && PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
                                 && Direction.Rx.getIntValue() == port1.getPortDirection().getIntValue()
                                 && Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
                                 && port1.getPartnerPort() != null && port2.getPartnerPort() != null
                                 && Direction.Rx.getIntValue() == port1.getPortDirection().getIntValue()
                                 && Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
                                 && port1.getPartnerPort() != null && port2.getPartnerPort() != null
@@ -751,8 +871,8 @@ public class PortMappingVersion221 {
                                 && port2.getPartnerPort().getCircuitPackName().equals(cp1Name)
                                 && port2.getPartnerPort().getPortName().equals(port1.getPortName()))
                                 ||
                                 && port2.getPartnerPort().getCircuitPackName().equals(cp1Name)
                                 && port2.getPartnerPort().getPortName().equals(port1.getPortName()))
                                 ||
-                                (Port.PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
-                                && Port.PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
+                                (PortQual.RoadmExternal.getIntValue() == port1.getPortQual().getIntValue()
+                                && PortQual.RoadmExternal.getIntValue() == port2.getPortQual().getIntValue()
                                 && Direction.Rx.getIntValue() == port2.getPortDirection().getIntValue()
                                 && Direction.Tx.getIntValue() == port1.getPortDirection().getIntValue()
                                 && port1.getPartnerPort() != null && port2.getPartnerPort() != null
                                 && Direction.Rx.getIntValue() == port2.getPortDirection().getIntValue()
                                 && Direction.Tx.getIntValue() == port1.getPortDirection().getIntValue()
                                 && port1.getPartnerPort() != null && port2.getPartnerPort() != null
@@ -776,7 +896,8 @@ public class PortMappingVersion221 {
                                 .getCircuitPackName(), logicalConnectionPoint2));
                         } else {
                             LOG.error(
                                 .getCircuitPackName(), logicalConnectionPoint2));
                         } else {
                             LOG.error(
-                                "impossible to create logical connection point for port {} or port {} on node {} - Error in configuration with port-qual, port-direction or partner-port configuration",
+                                "impossible to create logical connection point for port {} or port {} on node {} - "
+                                + "Error in configuration with port-qual, port-direction or partner-port configuration",
                                 port1.getPortName(), port2.getPortName(), nodeId);
                         }
                     } else {
                                 port1.getPortName(), port2.getPortName(), nodeId);
                         }
                     } else {
index bfab04cd377cd321fe8e1c08821e897f4b3d715d..d946513c3f9cff07ffc1907238e7b62d896cbb02 100644 (file)
@@ -149,7 +149,7 @@ public final class TPCEUtils {
             org.opendaylight.yang.gen.v1.gnpy.gnpy.eqpt.config.rev181119.$YangModuleInfoImpl.getInstance(),
             org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.$YangModuleInfoImpl.getInstance(),
             org.opendaylight.yang.gen.v1.gnpy.path.rev190502.$YangModuleInfoImpl.getInstance(),
             org.opendaylight.yang.gen.v1.gnpy.gnpy.eqpt.config.rev181119.$YangModuleInfoImpl.getInstance(),
             org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.$YangModuleInfoImpl.getInstance(),
             org.opendaylight.yang.gen.v1.gnpy.path.rev190502.$YangModuleInfoImpl.getInstance(),
-            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.$YangModuleInfoImpl.getInstance(),
+            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.$YangModuleInfoImpl.getInstance(),
 
             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.$YangModuleInfoImpl.getInstance(),
             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.$YangModuleInfoImpl.getInstance(),
 
             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.$YangModuleInfoImpl.getInstance(),
             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.$YangModuleInfoImpl.getInstance(),
index 2520579c169aae97b8214e1f8ccacfb3ddc7cb92..f6b5e7bad739337f893325c4052464a7907cfed0 100644 (file)
@@ -56,6 +56,7 @@ public class NetworkModelProvider {
         ClliNetwork.createClliLayer(dataBroker);
         OpenRoadmNetwork.createOpenRoadmNetworkLayer(dataBroker);
         openRoadmFactory.createTopoLayerVersionControl(networkTransactionService);
         ClliNetwork.createClliLayer(dataBroker);
         OpenRoadmNetwork.createOpenRoadmNetworkLayer(dataBroker);
         openRoadmFactory.createTopoLayerVersionControl(networkTransactionService);
+        openRoadmFactory.createOtnTopoLayerVersionControl(networkTransactionService);
         dataTreeChangeListenerRegistration =
             dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
                 InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), topologyListener);
         dataTreeChangeListenerRegistration =
             dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
                 InstanceIdentifiers.NETCONF_TOPOLOGY_II.child(Node.class)), topologyListener);
index 21397cc069291ea4bd5c3cad2accd7e7b41471a2..a0139cb9c7547b86ffb97d6d3d73b952ab01e991 100644 (file)
@@ -26,11 +26,11 @@ import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInputBuilder;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.Direction;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Protocols;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.Direction;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Protocols;
index 54317b055b7c2f9d3b44557cc78f4474a5b85a6b..99db959fb97011477bf6069967ca44eacf6ab2eb 100644 (file)
@@ -23,8 +23,10 @@ import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
 import org.opendaylight.transportpce.networkmodel.util.ClliNetwork;
 import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory;
 import org.opendaylight.transportpce.networkmodel.util.OpenRoadmNetwork;
 import org.opendaylight.transportpce.networkmodel.util.ClliNetwork;
 import org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory;
 import org.opendaylight.transportpce.networkmodel.util.OpenRoadmNetwork;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.transportpce.networkmodel.util.OpenRoadmOtnTopology22;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
@@ -50,6 +52,7 @@ public class NetworkModelServiceImpl implements NetworkModelService {
     private final OpenRoadmFactory openRoadmFactory;
     private final PortMapping portMapping;
     private HashMap<String,TopologyShard> topologyShardMountedDevice;
     private final OpenRoadmFactory openRoadmFactory;
     private final PortMapping portMapping;
     private HashMap<String,TopologyShard> topologyShardMountedDevice;
+    private HashMap<String,TopologyShard> otnTopologyShardMountedDevice;
 
     public NetworkModelServiceImpl(final NetworkTransactionService networkTransactionService,
         final R2RLinkDiscovery linkDiscovery, DeviceTransactionManager deviceTransactionManager,
 
     public NetworkModelServiceImpl(final NetworkTransactionService networkTransactionService,
         final R2RLinkDiscovery linkDiscovery, DeviceTransactionManager deviceTransactionManager,
@@ -61,6 +64,7 @@ public class NetworkModelServiceImpl implements NetworkModelService {
         this.openRoadmFactory = openRoadmFactory;
         this.portMapping = portMapping;
         this.topologyShardMountedDevice = new HashMap<String,TopologyShard>();
         this.openRoadmFactory = openRoadmFactory;
         this.portMapping = portMapping;
         this.topologyShardMountedDevice = new HashMap<String,TopologyShard>();
+        this.otnTopologyShardMountedDevice = new HashMap<String,TopologyShard>();
     }
 
     public void init() {
     }
 
     public void init() {
@@ -132,6 +136,28 @@ public class NetworkModelServiceImpl implements NetworkModelService {
                 networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmTopologyLink,
                     openRoadmTopologyLink, CREATE_MISSING_PARENTS);
             }
                 networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmTopologyLink,
                     openRoadmTopologyLink, CREATE_MISSING_PARENTS);
             }
+            if (nodeInfo.getNodeType().equals(NodeTypes.Xpdr) && (nodeInfo.getOpenroadmVersion().getIntValue() != 1)) {
+                TopologyShard otnTopologyShard = new OpenRoadmOtnTopology22(this.networkTransactionService,
+                    this.deviceTransactionManager).createTopologyShard(portMapping.getNode(nodeId));
+                if (otnTopologyShard == null) {
+                    LOG.error("Unable to create OTN topology shard for node {}!", nodeId);
+                    return;
+                }
+                this.otnTopologyShardMountedDevice.put(nodeId, otnTopologyShard);
+
+                for (Node openRoadmOtnTopologyNode: otnTopologyShard.getNodes()) {
+                    LOG.info("creating node {} in {}", openRoadmOtnTopologyNode.getNodeId().getValue(),
+                            // NetworkUtils.OVERLAY_NETWORK_ID);
+                            NetworkUtils.OTN_NETWORK_ID);
+                    InstanceIdentifier<Node> iiOpenRoadmOtnTopologyNode = InstanceIdentifier.builder(Networks.class)
+                            // .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
+                            .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)))
+                            .child(Node.class, openRoadmOtnTopologyNode.key())
+                            .build();
+                    networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmOtnTopologyNode,
+                            openRoadmOtnTopologyNode);
+                }
+            }
             networkTransactionService.commit().get();
             LOG.info("all nodes and links created");
         } catch (InterruptedException | ExecutionException e) {
             networkTransactionService.commit().get();
             LOG.info("all nodes and links created");
         } catch (InterruptedException | ExecutionException e) {
index 429560d811e6134172e3bcf1a3c7e093f4d278ba..037bbded9cbcc36c94854c6bbfef11c8800546a6 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.Node1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.Node1;
index 5d104f6f7e67ce33ac7a611dd32c44169289df3a..addef27749586e2418cd95bf70fa3967a439dca8 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.transportpce.networkmodel.util;
 import org.opendaylight.transportpce.common.mapping.MappingUtils;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
 import org.opendaylight.transportpce.common.mapping.MappingUtils;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -18,21 +18,32 @@ import org.slf4j.LoggerFactory;
 public class OpenRoadmFactory {
     private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmFactory.class);
     OpenRoadmTopology22 openRoadmTopology22;
 public class OpenRoadmFactory {
     private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmFactory.class);
     OpenRoadmTopology22 openRoadmTopology22;
+    OpenRoadmOtnTopology22 openRoadmOtnTopology22;
     private final MappingUtils mappingUtils;
 
     private final MappingUtils mappingUtils;
 
-    public OpenRoadmFactory(MappingUtils mappingUtils, OpenRoadmTopology22 openRoadmTopology22) {
+    public OpenRoadmFactory(MappingUtils mappingUtils, OpenRoadmTopology22 openRoadmTopology22,
+        OpenRoadmOtnTopology22 openRoadmOtnTopology22) {
         this.mappingUtils = mappingUtils;
         this.openRoadmTopology22 = openRoadmTopology22;
         this.mappingUtils = mappingUtils;
         this.openRoadmTopology22 = openRoadmTopology22;
+        this.openRoadmOtnTopology22 = openRoadmOtnTopology22;
     }
 
     public void createTopoLayerVersionControl(NetworkTransactionService networkTransactionService) {
         openRoadmTopology22.createTopoLayer();
     }
 
     }
 
     public void createTopoLayerVersionControl(NetworkTransactionService networkTransactionService) {
         openRoadmTopology22.createTopoLayer();
     }
 
+    public void createOtnTopoLayerVersionControl(NetworkTransactionService networkTransactionService) {
+        openRoadmOtnTopology22.createTopoLayer();
+    }
+
     public TopologyShard createTopologyShardVersionControl(Nodes mappingNode) {
         return openRoadmTopology22.createTopologyShard(mappingNode);
     }
 
     public TopologyShard createTopologyShardVersionControl(Nodes mappingNode) {
         return openRoadmTopology22.createTopologyShard(mappingNode);
     }
 
+    public TopologyShard createOtnTopologyShardVersionControl(Nodes mappingNode) {
+        return openRoadmOtnTopology22.createTopologyShard(mappingNode);
+    }
+
     public boolean deleteLink(String srcNode, String dstNode, String srcTp, String destTp,
                                                               NetworkTransactionService networkTransactionService) {
 
     public boolean deleteLink(String srcNode, String dstNode, String srcTp, String destTp,
                                                               NetworkTransactionService networkTransactionService) {
 
index 259cda54364a56b1155a0e1f45bad9079a564d26..774d20b858193bbc2766083d756f3cfa77ffcfb2 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology22.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology22.java
new file mode 100644 (file)
index 0000000..8926a99
--- /dev/null
@@ -0,0 +1,407 @@
+/*
+ * Copyright Â© 2016 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.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.common.Timeouts;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.XpdrNodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.Xponder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.non.blocking.list.PortList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.xponder.XpdrPort;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU0;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU2e;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU4;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.TerminationPoint1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.SwitchingPoolsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.switching.pool.types.rev181130.SwitchingPoolTypes;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NetworkTypesBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1Builder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OpenRoadmOtnTopology22 {
+
+    private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmTopology22.class);
+
+    private NetworkTransactionService networkTransactionService;
+    private final DeviceTransactionManager deviceTransactionManager;
+
+    public OpenRoadmOtnTopology22(NetworkTransactionService networkTransactionService,
+                               DeviceTransactionManager deviceTransactionManager) {
+        this.networkTransactionService = networkTransactionService;
+        this.deviceTransactionManager = deviceTransactionManager;
+    }
+
+    /**
+     * This public method creates the OTN OpenROADM Topology
+     * Layer and posts it to the controller.
+     */
+    public void createTopoLayer() {
+        try {
+            Network openRoadmOtnTopology = createOpenRoadmOtnTopology();
+            InstanceIdentifierBuilder<Network> nwIID = InstanceIdentifier.builder(Networks.class).child(Network.class,
+                    new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)));
+
+            this.networkTransactionService.put(LogicalDatastoreType.CONFIGURATION, nwIID.build(), openRoadmOtnTopology);
+            this.networkTransactionService.commit().get(1, TimeUnit.SECONDS);
+            LOG.info("OpenRoadm-OTN-Topology created successfully.");
+        } catch (ExecutionException | TimeoutException | InterruptedException e) {
+            LOG.warn("Failed to create OpenRoadm-OTN-Topology", e);
+        }
+    }
+
+    /**
+     * Create empty OpenROADM topology.
+     */
+    private Network createOpenRoadmOtnTopology() {
+        NetworkId nwId = new NetworkId(NetworkUtils.OTN_NETWORK_ID);
+        NetworkTypes1Builder topoNetworkTypesBldr = new NetworkTypes1Builder()
+                .setOpenroadmCommonNetwork(new OpenroadmCommonNetworkBuilder().build());
+        NetworkTypesBuilder nwTypeBuilder = new NetworkTypesBuilder()
+                .addAugmentation(NetworkTypes1.class, topoNetworkTypesBldr.build());
+        // Array to store nodes in the topolayer of a roadm/Xponder
+        Network1Builder nwBldr1 = new Network1Builder()
+                // adding expressLinks
+                .setLink(Collections.emptyList());
+        NetworkBuilder nwBuilder = new NetworkBuilder()
+                .setNetworkId(nwId)
+                .withKey(new NetworkKey(nwId))
+                .setNetworkTypes(nwTypeBuilder.build())
+                .addAugmentation(Network1.class, nwBldr1.build())
+                .setNode(Collections.emptyList());
+        return nwBuilder.build();
+    }
+
+    public TopologyShard createTopologyShard(Nodes mappingNode) {
+        List<Node> nodes = new ArrayList<>();
+
+        LOG.info("Topology create request received for Node {}",mappingNode.getNodeId());
+        InstanceIdentifier<OrgOpenroadmDevice> deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class);
+        //  .child(Xponder.class,new XponderKey(2));
+        Optional<OrgOpenroadmDevice> deviceOptional = deviceTransactionManager
+            .getDataFromDevice(mappingNode.getNodeId(),LogicalDatastoreType.OPERATIONAL, deviceIID,
+            Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+        OrgOpenroadmDevice device;
+        List<Xponder> xponders;
+        if (deviceOptional.isPresent()) {
+            device = deviceOptional.get();
+            xponders = device.getXponder();
+        } else {
+            LOG.error("Unable to get xponder for the device {}", mappingNode.getNodeId());
+            return null;
+        }
+        LOG.info("Xponder subtree is found and now calling create XPDR");
+        if (NodeTypes.Xpdr.getIntValue() ==  mappingNode.getNodeInfo().getNodeType().getIntValue()) {
+            // Check if node is XPONDER
+            LOG.info("creating xpdr node in openroadmotntopology for node {}", mappingNode.getNodeId());
+            if (xponders != null) {
+                for (Xponder xponder: xponders) {
+                    LOG.info("Calling create XPDR for xponder number {}",xponder.getXpdrNumber());
+                    NodeBuilder ietfNode = createXpdr(xponder,mappingNode);
+                    nodes.add(ietfNode.build());
+                }
+            }
+            LOG.info("Coming to return topology");
+            return new TopologyShard(nodes, null);
+        }
+        LOG.error("Device node Type not managed yet");
+        return null;
+    }
+
+    private NodeBuilder createXpdr(Xponder xponder,Nodes mappingNode) {
+        // set node-id
+        String nodeIdtopo = new StringBuilder().append(mappingNode.getNodeId()).append("-XPDR" + xponder
+            .getXpdrNumber()).toString();
+        LOG.info("Node is {}",nodeIdtopo);
+
+        // Create ietf node setting supporting-node data
+        NodeBuilder ietfNodeBldr = createOtnTopoLayerNode(mappingNode.getNodeId())
+            .setNodeId(new NodeId(nodeIdtopo))
+            .withKey((new NodeKey(new NodeId(nodeIdtopo))));
+        // Create openroadm-network-topo augmentation to set node type to Xponder
+        Node1Builder ontNode1Bldr = new Node1Builder()
+            .setNodeType(OpenroadmNodeType.XPONDER);
+        if (xponder.getXpdrType().equals(XpdrNodeTypes.Switch)) {
+            LOG.info("Xponder type is OTN switch and it is calling switching pool");
+            SwitchingPoolsBuilder switchingPoolsBuilder = new SwitchingPoolsBuilder()
+                .setOduSwitchingPools(getSwitchingPools(mappingNode.getNodeId(), mappingNode));
+            ontNode1Bldr.setSwitchingPools(switchingPoolsBuilder.build());
+            LOG.info("Switching pool object is created {}",
+                switchingPoolsBuilder.build().getOduSwitchingPools().size());
+        }
+        ietfNodeBldr.addAugmentation(Node1.class, ontNode1Bldr.build());
+
+        // Create tp-list
+        LOG.info("Now createing TP list");
+        List<TerminationPoint> tpList = new ArrayList<>();
+        TerminationPointBuilder ietfTpBldr;
+
+        for (XpdrPort xponderPort: xponder.getXpdrPort()) {
+            Mapping ma = mappingNode.getMapping().stream().filter(x -> x.getSupportingCircuitPackName()
+                    .equals(xponderPort.getCircuitPackName()) && x.getSupportingPort()
+                    .equals(xponderPort.getPortName())).collect(Collectors.toList()).get(0);
+            ietfTpBldr = createTpBldr(ma.getLogicalConnectionPoint());
+            TerminationPoint1Builder ontTp1Bldr = new TerminationPoint1Builder();
+            if (ma.getPortQual().equals("xpdr-network") || ma.getPortQual().equals("switch-network")) {
+                ontTp1Bldr.setTpType(OpenroadmTpType.XPONDERNETWORK);
+                XpdrTpPortConnectionAttributesBuilder xpdrTpBuilder = new XpdrTpPortConnectionAttributesBuilder();
+                if (ma.getPortQual().equals("switch-network") && ma.getRate() != null) {
+                    if (ma.getRate().equals("10G")) {
+                        xpdrTpBuilder.setRate(ODU2e.class);
+                    }
+                    else if (ma.getRate().equals("1G")) {
+                        xpdrTpBuilder.setRate(ODU0.class);
+                    }
+                    else if (ma.getRate().equals("100G")) {
+                        xpdrTpBuilder.setRate(ODU4.class);
+                        List<Integer> tpSlots = new ArrayList<Integer>();
+                        IntStream.range(1, 81).forEach(nbr -> tpSlots.add(nbr));
+                        xpdrTpBuilder.setTsPool(tpSlots);
+                    }
+                } else {
+                    LOG.warn("no rate in portmapping for lcp {} of {}", ma.getLogicalConnectionPoint(),
+                        mappingNode.getNodeId());
+                }
+                xpdrTpBuilder.setTailEquipmentId(ma.getAssociatedLcp());
+                ontTp1Bldr.setXpdrTpPortConnectionAttributes(xpdrTpBuilder.build());
+                ietfTpBldr.addAugmentation(TerminationPoint1.class, ontTp1Bldr.build());
+                tpList.add(ietfTpBldr.build());
+            } else if (ma.getPortQual().equals("xpdr-client") || ma.getPortQual().equals("switch-client")) {
+                ontTp1Bldr.setTpType(OpenroadmTpType.XPONDERCLIENT);
+                XpdrTpPortConnectionAttributesBuilder xpdrTpBuilder = new XpdrTpPortConnectionAttributesBuilder();
+                if (ma.getPortQual().equals("switch-client") && ma.getRate() != null) {
+                    if (ma.getRate().equals("10G")) {
+                        xpdrTpBuilder.setRate(ODU2e.class);
+                    }
+                    else if (ma.getRate().equals("1G")) {
+                        xpdrTpBuilder.setRate(ODU0.class);
+                    }
+                    else if (ma.getRate().equals("100G")) {
+                        xpdrTpBuilder.setRate(ODU4.class);
+                    }
+                } else {
+                    LOG.warn("no rate in portmapping for lcp {} of {}", ma.getLogicalConnectionPoint(),
+                        mappingNode.getNodeId());
+                }
+                xpdrTpBuilder.setTailEquipmentId(ma.getAssociatedLcp());
+                ontTp1Bldr.setXpdrTpPortConnectionAttributes(xpdrTpBuilder.build());
+                ietfTpBldr.addAugmentation(TerminationPoint1.class, ontTp1Bldr.build());
+                tpList.add(ietfTpBldr.build());
+            }
+        }
+        for (int i = 0;i < tpList.size();i++) {
+            LOG.info("Tps are {},{}",tpList.get(i).getTpId());
+        }
+        // Create ietf node augmentation to support ietf tp-list
+        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder tpNode1 =
+            new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder();
+        tpNode1.setTerminationPoint(tpList);
+        ietfNodeBldr.addAugmentation(
+            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class,
+            tpNode1.build());
+
+        /**Node1Builder ietfNode1 = new Node1Builder();
+        ietfNodeBldr.addAugmentation(
+                org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class,
+                ietfNode1.build());**/
+        LOG.info("Now all TPS and network node is ready and calling return");
+        return ietfNodeBldr;
+    }
+
+    private NodeBuilder createOtnTopoLayerNode(String nodeId) {
+        // Sets the value of Network-ref and Node-ref as a part of the supporting node
+        // attribute
+        LOG.info("Settting up supporting node and interface");
+        SupportingNodeBuilder supportbldr = new SupportingNodeBuilder()
+            .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID), new NodeId(nodeId)))
+            .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .setNodeRef(new NodeId(nodeId));
+        ArrayList<SupportingNode> supportlist = new ArrayList<>();
+        supportlist.add(supportbldr.build());
+        NodeBuilder nodebldr = new NodeBuilder()
+            .setSupportingNode(supportlist);
+        LOG.info("Returning node builder");
+        return nodebldr;
+    }
+
+    // This method returns a generic termination point builder for a given tpid
+    private TerminationPointBuilder createTpBldr(String tpId) {
+        return new TerminationPointBuilder()
+            .withKey(new TerminationPointKey(new TpId(tpId)))
+            .setTpId(new TpId(tpId));
+    }
+
+    private LinkBuilder createLink(String srcNode, String destNode, String srcTp, String destTp) {
+        //create source link
+        SourceBuilder ietfSrcLinkBldr = new SourceBuilder()
+            .setSourceNode(new NodeId(srcNode))
+            .setSourceTp(srcTp);
+        //create destination link
+        DestinationBuilder ietfDestLinkBldr = new DestinationBuilder()
+            .setDestNode(new NodeId(destNode))
+            .setDestTp(destTp);
+
+        LinkBuilder ietfLinkBldr = new LinkBuilder()
+            .setSource(ietfSrcLinkBldr.build())
+            .setDestination(ietfDestLinkBldr.build())
+            .setLinkId(LinkIdUtil.buildLinkId(srcNode, srcTp, destNode, destTp));
+        return ietfLinkBldr.withKey(new LinkKey(ietfLinkBldr.getLinkId()));
+    }
+
+    private List<OduSwitchingPools> getSwitchingPools(String nodeId,Nodes mappingNode) {
+        InstanceIdentifier<OrgOpenroadmDevice> deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class);
+        //  .child(Xponder.class,new XponderKey(2));
+        Optional<OrgOpenroadmDevice> deviceOptional = deviceTransactionManager.getDataFromDevice(nodeId,
+            LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT,
+            Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+        OrgOpenroadmDevice device;
+        List<OduSwitchingPools> oduSwitchingPools = new ArrayList<>();
+        if (deviceOptional.isPresent()) {
+            device = deviceOptional.get();
+            for (org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org
+                .openroadm.device.OduSwitchingPools odupool:device.getOduSwitchingPools()) {
+                OduSwitchingPoolsBuilder oduSwitchingPoolsBuilder = new OduSwitchingPoolsBuilder();
+                List<NonBlockingList> nonBlockingLists = new ArrayList<>();
+                for (org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org
+                    .openroadm.device.odu.switching.pools.NonBlockingList nbList: odupool.getNonBlockingList()) {
+                    NonBlockingListBuilder nonBlockingListBuilder = new NonBlockingListBuilder()
+                        .setNblNumber(nbList.getNblNumber())
+                        .setAvailableInterconnectBandwidth(nbList.getInterconnectBandwidth())
+                        .setInterconnectBandwidthUnit(nbList.getInterconnectBandwidth());
+                    List<TpId> tpList = new ArrayList<>();
+                    if (nbList.getPortList() != null) {
+                        for (PortList portList:nbList.getPortList()) {
+                            LOG.info("Inside switching pool now collecting ports {},{},{}", portList.getPortName(),
+                                portList.getCircuitPackName(), nbList.getNblNumber());
+                            Mapping mapping = mappingNode.getMapping().stream()
+                                .filter(x -> x.getSupportingCircuitPackName().equals(portList.getCircuitPackName())
+                                && x.getSupportingPort().equals(portList.getPortName()))
+                                .collect(Collectors.toList()).get(0);
+                            LOG.info("Mapping TP is coming is {}",mapping);
+                            tpList.add(new TpId(mapping.getLogicalConnectionPoint()));
+                        }
+                        nonBlockingListBuilder.setTpList(tpList);
+                        nonBlockingLists.add(nonBlockingListBuilder.build());
+                    } else {
+                        LOG.warn("no portList for non-blocking-list {} of {}", nbList.getNblNumber(), nodeId);
+                    }
+                }
+                oduSwitchingPoolsBuilder.setNonBlockingList(nonBlockingLists)
+                    .setSwitchingPoolNumber(odupool.getSwitchingPoolNumber())
+                    .setSwitchingPoolType(SwitchingPoolTypes.forValue(odupool.getSwitchingPoolType().getIntValue()));
+                oduSwitchingPools.add(oduSwitchingPoolsBuilder.build());
+            }
+            return oduSwitchingPools;
+        } else {
+            LOG.error("Unable to get xponder for the device {}", nodeId);
+            return null;
+        }
+    }
+
+    // This method returns the linkBuilder object for given source and destination
+    public static boolean deleteLink(String srcNode, String dstNode, String srcTp, String destTp,
+                                     NetworkTransactionService networkTransactionService) {
+        LOG.info("deleting link for {}-{}", srcNode, dstNode);
+        LinkId linkId = LinkIdUtil.buildLinkId(srcNode, srcTp, dstNode, destTp);
+        if (deleteLinkLinkId(linkId, networkTransactionService)) {
+            LOG.debug("Link Id {} updated to have admin state down");
+            return true;
+        } else {
+            LOG.debug("Link Id not found for Source {} and Dest {}", srcNode, dstNode);
+            return false;
+        }
+    }
+
+    // This method returns the linkBuilder object for given source and destination
+    public static boolean deleteLinkLinkId(LinkId linkId , NetworkTransactionService networkTransactionService) {
+        LOG.info("deleting link for LinkId: {}", linkId);
+        try {
+            InstanceIdentifierBuilder<Link> linkIID = InstanceIdentifier.builder(Networks.class).child(Network.class,
+                new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID))).augmentation(Network1.class)
+                .child(Link.class, new LinkKey(linkId));
+            java.util.Optional<Link> link =
+                networkTransactionService.read(LogicalDatastoreType.CONFIGURATION,linkIID.build()).get();
+            if (link.isPresent()) {
+                Link1Builder link1Builder = new Link1Builder().setAdministrativeState(State.OutOfService);
+                LinkBuilder linkBuilder = new LinkBuilder(link.get())
+                    .removeAugmentation(Link1.class)
+                    .addAugmentation(Link1.class,link1Builder.build());
+                networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, linkIID.build(),
+                    linkBuilder.build());
+                networkTransactionService.commit().get(1, TimeUnit.SECONDS);
+                return true;
+            } else {
+                LOG.error("No link found for given LinkId: {}", linkId);
+                return false;
+            }
+        } catch (InterruptedException | ExecutionException | TimeoutException e) {
+            LOG.error(e.getMessage(), e);
+            return false;
+        }
+    }
+}
index 485e98537c3361bd84250f4f78793ff57f6f6f8c..cce6af114f9883590265840c0f249bcec3cc421a 100644 (file)
@@ -24,8 +24,8 @@ import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.NetworkTypes1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder;
index 41bb9e8bd196562ecdfcb31f5fb7e116c41a8dc5..d1a75ef37233645f7f994e3635a29eb46e1b0d21 100644 (file)
@@ -16,6 +16,7 @@
     <bean id="openRoadmFactory" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory">
         <argument ref="mappingUtils" />
         <argument ref="openRoadmTopology22" />
     <bean id="openRoadmFactory" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmFactory">
         <argument ref="mappingUtils" />
         <argument ref="openRoadmTopology22" />
+        <argument ref="openRoadmOtnTopology22" />
     </bean>
 
     <bean id="openRoadmTopology22" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmTopology22">
     </bean>
 
     <bean id="openRoadmTopology22" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmTopology22">
         <argument ref="deviceTransactionManager" />
     </bean>
 
         <argument ref="deviceTransactionManager" />
     </bean>
 
+    <bean id="openRoadmOtnTopology22" class="org.opendaylight.transportpce.networkmodel.util.OpenRoadmOtnTopology22">
+        <argument ref="networkTransactionImpl" />
+        <argument ref="deviceTransactionManager" />
+    </bean>
 
     <bean id="networkModelService" class="org.opendaylight.transportpce.networkmodel.service.NetworkModelServiceImpl">
         <argument ref="networkTransactionImpl" />
 
     <bean id="networkModelService" class="org.opendaylight.transportpce.networkmodel.service.NetworkModelServiceImpl">
         <argument ref="networkTransactionImpl" />
index 49da87abbb8087a0ada9e11c4c85bbd7b8f39b40..7c497d2093451e9f731ecd5043cd2f9d77476e4d 100644 (file)
@@ -21,10 +21,10 @@ import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfa
 import org.opendaylight.transportpce.olm.util.OlmUtils;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerSetupInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerTurndownInput;
 import org.opendaylight.transportpce.olm.util.OlmUtils;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerSetupInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerTurndownInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
index f303967a205de30fe14d138b6f23ccf39e5e8800..66012228fb431033b8a0c0282c5dbdfa92553de4 100644 (file)
@@ -61,8 +61,8 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev17
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.Spans;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.SpansBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.get.pm.output.Measurements;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.Spans;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.SpansBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.get.pm.output.Measurements;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
index c7c8f4c30e3cfa131ecf218bf6550a8029c808d4..f207d9fe048cb96193c5fc26bd0def3ed4612435 100644 (file)
@@ -18,10 +18,10 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmOutputBuilder;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.GetPmOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
index 5e64eb60e32e8ce23781eaf4b79278e54d379c54..7656d2a30e41559bd8a3813ade3a54be4785df43 100644 (file)
@@ -45,15 +45,15 @@ import org.opendaylight.transportpce.olm.util.OlmPowerServiceRpcImplUtil;
 import org.opendaylight.transportpce.olm.util.OlmUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerSetupInput;
 import org.opendaylight.transportpce.olm.util.OlmUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerSetupInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
index f0397e4b55b6232e4325e1cf93b9e85804eeb4be..8d6e1a6f7ae35efd394f40b5db6a5906e3b1a8de 100644 (file)
@@ -19,8 +19,8 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
index bf12558fa239678b0646d0816cbd5e9cac2a2f64..ea38cd400f499e5ebcd06fa4bf371b3682744675 100644 (file)
@@ -19,19 +19,20 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.NodeInfoBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
@@ -369,10 +370,12 @@ public final class TransactionUtils {
         mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
         mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
-            .setNodeType(NodeTypes.Xpdr)
+            .setNodeInfo(new NodeInfoBuilder()
+                .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes.Xpdr)
+                .setOpenroadmVersion(OpenroadmVersion._121)
+                .build())
             .setCpToDegree(cpList)
             .setMapping(mappingList)
             .setCpToDegree(cpList)
             .setMapping(mappingList)
-            .setOpenroadmVersion(Nodes.OpenroadmVersion._121)
             .build();
         return nodes;
     }
             .build();
         return nodes;
     }
@@ -401,10 +404,12 @@ public final class TransactionUtils {
         mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
         mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
-            .setNodeType(null)
+            .setNodeInfo(new NodeInfoBuilder()
+                .setNodeType(null)
+                .setOpenroadmVersion(OpenroadmVersion._121)
+                .build())
             .setCpToDegree(cpList)
             .setMapping(mappingList)
             .setCpToDegree(cpList)
             .setMapping(mappingList)
-            .setOpenroadmVersion(Nodes.OpenroadmVersion._121)
             .build();
         return nodes;
     }
             .build();
         return nodes;
     }
@@ -433,10 +438,12 @@ public final class TransactionUtils {
         mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
         mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
-            .setNodeType(NodeTypes.Rdm)
+            .setNodeInfo(new NodeInfoBuilder()
+                .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes.Rdm)
+                .setOpenroadmVersion(OpenroadmVersion._121)
+                .build())
             .setCpToDegree(cpList)
             .setMapping(mappingList)
             .setCpToDegree(cpList)
             .setMapping(mappingList)
-            .setOpenroadmVersion(Nodes.OpenroadmVersion._121)
             .build();
         return nodes;
     }
             .build();
         return nodes;
     }
index 2fc2ca5fe32e8a7c5ad86bf964d5bfcb06fcf786..0ce6603babd2a9d91be2e728b2aba0ecadc5ffbf 100644 (file)
@@ -20,7 +20,7 @@ import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.PowerDBm;
 
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.PowerDBm;
 
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
index 72a12d2c29845538252aef6d15b62dcb7ef23d37..049673c89c65c5e2327aa62b50e919e79429f4b4 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.transportpce.common.fixedflex.FixedFlexInterface;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyGHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PowerDBm;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyGHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PowerDBm;
index 08b5e5d936d26b7a26b7450784fa25c145220df5..d16850434caf72b2651511884b9005a77768aac3 100644 (file)
@@ -14,7 +14,7 @@ import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.mapping.MappingUtils;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.mapping.MappingUtils;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.OchAttributes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.RateIdentity;
 
 import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.OchAttributes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.RateIdentity;
 
index 8c40f005131f2e0c48db8d68d5cc02526c3da819..eef609904f17947537f918466620f0e63066f70d 100644 (file)
@@ -41,7 +41,7 @@ import org.opendaylight.transportpce.renderer.provisiondevice.servicepath.Servic
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.ServiceNodelist;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.NodelistBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.NodelistKey;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.ServiceNodelist;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.NodelistBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.NodelistKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsOutput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsOutputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsOutput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.device.rev170228.CreateOtsOmsOutputBuilder;
index 14291cd880475c2a1e46f1d494a325cfca6e3cb8..2c013421da2969a48ee5349a0425e7542cd5bd3d 100644 (file)
@@ -19,7 +19,7 @@ import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
 import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
 
 public class OpenRoadMInterface221Test extends AbstractTest {
 
 
 public class OpenRoadMInterface221Test extends AbstractTest {
 
index 9cccf3c1679d4ca2acf7bfd30907cf69415806e0..dd1a96a2b3b9b75ea667ecc30f220ab1a19440ae 100644 (file)
@@ -17,12 +17,12 @@ import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.renderer.stub.MountPointStub;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.renderer.stub.MountPointStub;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceService;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceService;
index bea4f5c95979b5f6f96887d8ffe8513471e2b502..32953a2bc97a54aeb696305aac8050062b1ce21a 100644 (file)
@@ -27,10 +27,10 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.InstanceIdentifiers;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.InstanceIdentifiers;
 import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.network.nodes.MappingKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
@@ -286,8 +286,8 @@ public class TapiTopologyImpl implements TapiTopologyService {
             .getAssociatedConnectionMapPort();
         @NonNull
         KeyedInstanceIdentifier<Mapping, MappingKey> pmIID = InstanceIdentifier.create(
             .getAssociatedConnectionMapPort();
         @NonNull
         KeyedInstanceIdentifier<Mapping, MappingKey> pmIID = InstanceIdentifier.create(
-            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network.class).child(
-                Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp));
+            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network.class)
+            .child(Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp));
         @NonNull
         FluentFuture<Optional<Mapping>> mappingOpt = dataBroker.newReadOnlyTransaction().read(
             LogicalDatastoreType.CONFIGURATION, pmIID);
         @NonNull
         FluentFuture<Optional<Mapping>> mappingOpt = dataBroker.newReadOnlyTransaction().read(
             LogicalDatastoreType.CONFIGURATION, pmIID);
index 923fe8dc64065d3ba4f26c11897aee1acb3476d7..53f7e3b38ff79ca6ae4c9cbbac344cc1e07176f2 100644 (file)
@@ -19,6 +19,7 @@ import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.DataStoreContext;
 import org.opendaylight.transportpce.common.converter.XMLDataObjectConverter;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.DataStoreContext;
 import org.opendaylight.transportpce.common.converter.XMLDataObjectConverter;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev191115.Network;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInputBuilder;
@@ -86,7 +87,7 @@ public final class TopologyDataUtils {
     }
 
     public static void writePortmappingFromFileToDatastore(DataStoreContext dataStoreContextUtil) {
     }
 
     public static void writePortmappingFromFileToDatastore(DataStoreContext dataStoreContextUtil) {
-        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network result = null;
+        Network result = null;
         File portmappingFile = new File(PORTMAPPING_FILE);
         if (portmappingFile.exists()) {
             String fileName = portmappingFile.getName();
         File portmappingFile = new File(PORTMAPPING_FILE);
         if (portmappingFile.exists()) {
             String fileName = portmappingFile.getName();
@@ -101,13 +102,11 @@ public final class TopologyDataUtils {
                         "Could not transform the input %s into normalized nodes", fileName));
                 }
                 Optional<DataObject> dataObject = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContextUtil)
                         "Could not transform the input %s into normalized nodes", fileName));
                 }
                 Optional<DataObject> dataObject = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContextUtil)
-                    .getDataObject(transformIntoNormalizedNode.get(), org.opendaylight.yang.gen.v1.http.org.opendaylight
-                    .transportpce.portmapping.rev190702.Network.QNAME);
+                    .getDataObject(transformIntoNormalizedNode.get(), Network.QNAME);
                 if (!dataObject.isPresent()) {
                     throw new IllegalStateException("Could not transform normalized nodes into data object");
                 } else {
                 if (!dataObject.isPresent()) {
                     throw new IllegalStateException("Could not transform normalized nodes into data object");
                 } else {
-                    result = (org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702
-                        .Network) dataObject.get();
+                    result = (Network) dataObject.get();
                 }
             } catch (FileNotFoundException e) {
                 LOG.error("File not found : {} at {}", e.getMessage(), e.getLocalizedMessage());
                 }
             } catch (FileNotFoundException e) {
                 LOG.error("File not found : {} at {}", e.getMessage(), e.getLocalizedMessage());
@@ -115,9 +114,7 @@ public final class TopologyDataUtils {
         } else {
             LOG.error("xml file {} not found at {}", portmappingFile.getName(), portmappingFile.getAbsolutePath());
         }
         } else {
             LOG.error("xml file {} not found at {}", portmappingFile.getName(), portmappingFile.getAbsolutePath());
         }
-        InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702
-            .Network> portmappingIID = InstanceIdentifier.builder(org.opendaylight.yang.gen.v1.http.org.opendaylight
-            .transportpce.portmapping.rev190702.Network.class).build();
+        InstanceIdentifier<Network> portmappingIID = InstanceIdentifier.builder(Network.class).build();
         writeTransaction(dataStoreContextUtil.getDataBroker(), portmappingIID, result);
         LOG.info("portmapping-example stored with success in datastore");
     }
         writeTransaction(dataStoreContextUtil.getDataBroker(), portmappingIID, result);
         LOG.info("portmapping-example stored with success in datastore");
     }