From 7181ac3c2277d1e1b4411a3b1b19d89a7bcc70fb Mon Sep 17 00:00:00 2001 From: shweta Date: Thu, 21 Nov 2019 15:06:07 +0100 Subject: [PATCH] Initial code for OTN topology and portmapping JIRA: TRNSPRTPCE-138 Signed-off-by: Gilles Thouenon Co-authored-by: Gilles Thouenon Co-authored-by: Christophe Betoule Change-Id: Ie576bf4b90a3ca9a94e7a5152edb86b99281c69e --- .../transportpce-portmapping@2017-02-28.yang | 126 ------ ... transportpce-portmapping@2019-11-15.yang} | 19 + .../common/mapping/MappingUtilsImpl.java | 8 +- .../common/mapping/PortMapping.java | 4 +- .../common/mapping/PortMappingImpl.java | 16 +- .../common/mapping/PortMappingVersion121.java | 28 +- .../common/mapping/PortMappingVersion221.java | 395 +++++++++++------ .../controllers/tpce/utils/TPCEUtils.java | 2 +- .../networkmodel/NetworkModelProvider.java | 1 + .../networkmodel/R2RLinkDiscovery.java | 10 +- .../service/NetworkModelServiceImpl.java | 30 +- .../networkmodel/util/ClliNetwork.java | 2 +- .../networkmodel/util/OpenRoadmFactory.java | 15 +- .../networkmodel/util/OpenRoadmNetwork.java | 2 +- .../util/OpenRoadmOtnTopology22.java | 407 ++++++++++++++++++ .../util/OpenRoadmTopology22.java | 4 +- .../blueprint/networkmodel-blueprint.xml | 5 + .../transportpce/olm/power/PowerMgmtImpl.java | 8 +- .../olm/service/OlmPowerServiceImpl.java | 4 +- .../transportpce/olm/util/OlmUtils.java | 8 +- .../olm/power/PowerMgmtPowerMockTest.java | 18 +- .../olm/util/OlmTransactionUtils.java | 4 +- .../olm/util/TransactionUtils.java | 39 +- .../OpenRoadmInterface121.java | 2 +- .../OpenRoadmInterface221.java | 2 +- .../OpenRoadmInterfaceFactory.java | 2 +- .../DeviceRendererServiceImpl.java | 2 +- .../OpenRoadMInterface221Test.java | 2 +- .../renderer/utils/MountPointUtils.java | 12 +- .../tapi/topology/TapiTopologyImpl.java | 12 +- .../tapi/utils/TopologyDataUtils.java | 13 +- 31 files changed, 835 insertions(+), 367 deletions(-) delete mode 100644 api/src/main/yang/transportpce-portmapping@2017-02-28.yang rename api/src/main/yang/{transportpce-portmapping@2019-07-02.yang => transportpce-portmapping@2019-11-15.yang} (89%) create mode 100644 networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology22.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 index e4ebf602f..000000000 --- a/api/src/main/yang/transportpce-portmapping@2017-02-28.yang +++ /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; - } - } - } - } -} diff --git a/api/src/main/yang/transportpce-portmapping@2019-07-02.yang b/api/src/main/yang/transportpce-portmapping@2019-11-15.yang 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 1aacc7fdd..00a6be481 100644 --- a/api/src/main/yang/transportpce-portmapping@2019-07-02.yang +++ b/api/src/main/yang/transportpce-portmapping@2019-11-15.yang @@ -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 )"; + revision "2019-11-15" { + description "OTN support"; + } + 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"; } + 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 diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java index 125b74c83..60c8e8263 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java @@ -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.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; diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java index 4b2eddeec..e6da7201e 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMapping.java @@ -8,8 +8,8 @@ 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 { diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java index d493281c1..abed310d8 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingImpl.java @@ -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.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; @@ -112,7 +112,7 @@ public class PortMappingImpl implements PortMapping { 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) { diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java index aa726fa67..2b62b540e 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java @@ -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.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; diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java index 3330537b0..aaa54c2fc 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java @@ -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.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.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; @@ -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.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.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; @@ -178,128 +180,231 @@ public class PortMappingVersion221 { Optional 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; - if (!deviceObject.isPresent() || deviceObject.get().getCircuitPacks() == null) { - LOG.warn("Circuit Packs are not present for {}", nodeId); - return false; - // TODO return false or continue? - } Map lcpMap = new HashMap<>(); Map mappingMap = new HashMap<>(); - List 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 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 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; } - 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 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; } - String lcp1 = "XPDR1-" + StringConstants.NETWORK_TOKEN + line; - Optional cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName() - .equals(port.getPartnerPort().getCircuitPackName())).findFirst(); - if (cpOpt.isPresent()) { - Optional 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 cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName() + .equals(port.getPartnerPort().getCircuitPackName())).findFirst(); + if (cpOpt.isPresent()) { + Optional 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 { - 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 { - 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 { - 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 { - LOG.error("Error fetching circuit-pack {} for {}", port.getPartnerPort().getCircuitPackName(), + LOG.warn("Error in the configuration of port {} of {} for {}", port.getPortName(), + circuitPackName, 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 = 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 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 cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName() + .equals(port.getPartnerPort().getCircuitPackName())).findFirst(); + if (cpOpt.isPresent()) { + Optional 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 = 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()) { @@ -309,6 +414,28 @@ public class PortMappingVersion221 { 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> getSrgCps(String deviceId, Info ordmInfo) { HashMap topologyShardMountedDevice; + private HashMap otnTopologyShardMountedDevice; 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(); + this.otnTopologyShardMountedDevice = new HashMap(); } public void init() { @@ -132,6 +136,28 @@ public class NetworkModelServiceImpl implements NetworkModelService { 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 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) { diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java index 429560d81..037bbded9 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java @@ -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.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; diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmFactory.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmFactory.java index 5d104f6f7..addef2774 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmFactory.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmFactory.java @@ -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.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; @@ -18,21 +18,32 @@ import org.slf4j.LoggerFactory; public class OpenRoadmFactory { private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmFactory.class); OpenRoadmTopology22 openRoadmTopology22; + OpenRoadmOtnTopology22 openRoadmOtnTopology22; 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.openRoadmOtnTopology22 = openRoadmOtnTopology22; } 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 createOtnTopologyShardVersionControl(Nodes mappingNode) { + return openRoadmOtnTopology22.createTopologyShard(mappingNode); + } + public boolean deleteLink(String srcNode, String dstNode, String srcTp, String destTp, NetworkTransactionService networkTransactionService) { diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java index 259cda543..774d20b85 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java @@ -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.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; 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 index 000000000..8926a997b --- /dev/null +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology22.java @@ -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 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 nodes = new ArrayList<>(); + + LOG.info("Topology create request received for Node {}",mappingNode.getNodeId()); + InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + // .child(Xponder.class,new XponderKey(2)); + Optional deviceOptional = deviceTransactionManager + .getDataFromDevice(mappingNode.getNodeId(),LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + OrgOpenroadmDevice device; + List 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 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 tpSlots = new ArrayList(); + 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 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 getSwitchingPools(String nodeId,Nodes mappingNode) { + InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + // .child(Xponder.class,new XponderKey(2)); + Optional deviceOptional = deviceTransactionManager.getDataFromDevice(nodeId, + LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, + Timeouts.DEVICE_READ_TIMEOUT_UNIT); + OrgOpenroadmDevice device; + List 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 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 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 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 = + 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; + } + } +} diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java index 485e98537..cce6af114 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology22.java @@ -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.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; diff --git a/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml b/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml index 41bb9e8bd..d1a75ef37 100644 --- a/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml +++ b/networkmodel/src/main/resources/OSGI-INF/blueprint/networkmodel-blueprint.xml @@ -16,6 +16,7 @@ + @@ -23,6 +24,10 @@ + + + + diff --git a/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java b/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java index 49da87abb..7c497d209 100644 --- a/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java +++ b/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java @@ -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.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; diff --git a/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java b/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java index f303967a2..66012228f 100644 --- a/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java +++ b/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java @@ -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.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; diff --git a/olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java b/olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java index c7c8f4c30..f207d9fe0 100644 --- a/olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java +++ b/olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java @@ -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.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; diff --git a/olm/src/test/java/org/opendaylight/transportpce/olm/power/PowerMgmtPowerMockTest.java b/olm/src/test/java/org/opendaylight/transportpce/olm/power/PowerMgmtPowerMockTest.java index 5e64eb60e..7656d2a30 100644 --- a/olm/src/test/java/org/opendaylight/transportpce/olm/power/PowerMgmtPowerMockTest.java +++ b/olm/src/test/java/org/opendaylight/transportpce/olm/power/PowerMgmtPowerMockTest.java @@ -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.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; diff --git a/olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmTransactionUtils.java b/olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmTransactionUtils.java index f0397e4b5..8d6e1a6f7 100644 --- a/olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmTransactionUtils.java +++ b/olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmTransactionUtils.java @@ -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.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; diff --git a/olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java b/olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java index bf12558fa..ea38cd400 100644 --- a/olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java +++ b/olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java @@ -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.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.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; @@ -369,10 +370,12 @@ public final class TransactionUtils { 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) - .setOpenroadmVersion(Nodes.OpenroadmVersion._121) .build(); return nodes; } @@ -401,10 +404,12 @@ public final class TransactionUtils { mappingList.add(map1); Nodes nodes = new NodesBuilder() .setNodeId(nodeId) - .setNodeType(null) + .setNodeInfo(new NodeInfoBuilder() + .setNodeType(null) + .setOpenroadmVersion(OpenroadmVersion._121) + .build()) .setCpToDegree(cpList) .setMapping(mappingList) - .setOpenroadmVersion(Nodes.OpenroadmVersion._121) .build(); return nodes; } @@ -433,10 +438,12 @@ public final class TransactionUtils { 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) - .setOpenroadmVersion(Nodes.OpenroadmVersion._121) .build(); return nodes; } diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface121.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface121.java index 2fc2ca5fe..0ce6603ba 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface121.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface121.java @@ -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.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; diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java index 72a12d2c2..049673c89 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java @@ -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.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; diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java index 08b5e5d93..d16850434 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java @@ -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.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; diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java index 8c40f0051..eef609904 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java @@ -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.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; diff --git a/renderer/src/test/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadMInterface221Test.java b/renderer/src/test/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadMInterface221Test.java index 14291cd88..2c013421d 100644 --- a/renderer/src/test/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadMInterface221Test.java +++ b/renderer/src/test/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadMInterface221Test.java @@ -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.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 { diff --git a/renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/MountPointUtils.java b/renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/MountPointUtils.java index 9cccf3c16..dd1a96a2b 100644 --- a/renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/MountPointUtils.java +++ b/renderer/src/test/java/org/opendaylight/transportpce/renderer/utils/MountPointUtils.java @@ -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.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; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java index bea4f5c95..32953a2bc 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java @@ -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.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; @@ -286,8 +286,8 @@ public class TapiTopologyImpl implements TapiTopologyService { .getAssociatedConnectionMapPort(); @NonNull KeyedInstanceIdentifier 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> mappingOpt = dataBroker.newReadOnlyTransaction().read( LogicalDatastoreType.CONFIGURATION, pmIID); diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TopologyDataUtils.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TopologyDataUtils.java index 923fe8dc6..53f7e3b38 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TopologyDataUtils.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TopologyDataUtils.java @@ -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.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; @@ -86,7 +87,7 @@ public final class TopologyDataUtils { } 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(); @@ -101,13 +102,11 @@ public final class TopologyDataUtils { "Could not transform the input %s into normalized nodes", fileName)); } Optional 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 { - 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()); @@ -115,9 +114,7 @@ public final class TopologyDataUtils { } else { LOG.error("xml file {} not found at {}", portmappingFile.getName(), portmappingFile.getAbsolutePath()); } - InstanceIdentifier portmappingIID = InstanceIdentifier.builder(org.opendaylight.yang.gen.v1.http.org.opendaylight - .transportpce.portmapping.rev190702.Network.class).build(); + InstanceIdentifier portmappingIID = InstanceIdentifier.builder(Network.class).build(); writeTransaction(dataStoreContextUtil.getDataBroker(), portmappingIID, result); LOG.info("portmapping-example stored with success in datastore"); } -- 2.36.6