<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
</dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>tapi-2.1.1</artifactId>
+ <artifactId>tapi-2.4.0</artifactId>
</dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
module nbi-notifications {
- yang-version 1;
+ yang-version 1.1;
namespace "nbi-notifications";
prefix nbinotifications;
}
import tapi-common {
prefix tapi-common;
- revision-date 2018-12-10;
+ revision-date 2022-11-21;
}
import tapi-notification {
prefix tapi-notification;
- revision-date 2018-12-10;
+ revision-date 2022-11-21;
+ }
+ import tapi-fm {
+ prefix tapi-fm;
+ revision-date 2022-11-21;
}
organization
"YANG definitions for using REST API in NBI notifications module. Copyright
(c) 2020 ORANGE and others. All rights reserved.";
+ revision "2023-07-28" {
+ description
+ "Migration towards TAPI 2.4";
+ }
+
+ revision 2023-07-26 {
+ description
+ "Adding service-rpc-result data details to the publish-notification-process-service";
+ }
+
revision 2021-10-13 {
description
"Implement new models, RPC for TAPI service notification";
}
}
+ grouping alarm-tca-info {
+ container alarm-info {
+ uses tapi-fm:alarm-info;
+ description "none";
+ }
+ container tca-info {
+ uses tapi-fm:tca-info;
+ description "none";
+ }
+ }
+
grouping notification-tapi-service {
leaf notification-type {
type tapi-notification:notification-type;
description "none";
}
leaf target-object-type {
- type tapi-notification:object-type;
+ type tapi-common:object-type;
description "none";
}
leaf target-object-identifier {
type tapi-common:layer-protocol-name;
description "none";
}
+ leaf layer-protocol-qualifier {
+ type tapi-common:layer-protocol-qualifier;
+ config false;
+ description "none";
+ }
list changed-attributes {
key 'value-name';
uses tapi-notification:name-and-value-change;
type string;
description "none";
}
- container tca-info {
- uses tapi-notification:tca-info;
- description "none";
- }
- container alarm-info {
- uses tapi-notification:alarm-info;
- description "none";
- }
- uses tapi-common:resource-spec;
+ uses alarm-tca-info;
+ uses tapi-common:global-class;
description "none";
}
description
"Topic where to send the notification service";
}
+ uses alarm-tca-info;
uses tapi-notification:notification;
}
}
POSSIBILITY OF SUCH DAMAGE";
+ revision 2024-02-05 {
+ description
+ "Add customer-name to path-computation-request input to check in controller-customization if the customer's
+ services need specific handling";
+ }
revision 2023-09-25 {
description
"Add pce-constraint-mode enum to be able to disinguish the way to manage node include constraints inside the
PCE module";
- }
+ }
revision 2022-08-08 {
description
"Implement the RPC path-computation-reroute-request (only for reroute purposes) that computes a service path of
an existing service in order to reroute it";
- }
+ }
revision 2022-06-15 {
description
"change fraction digits from 2 to 6 for accumulative-value leaf, from 2 to 6 to be compliant with Gnpy";
e.g., CLFI, CLCI, etc. This is reported against the service, but
may not get reflected in the service in the network.";
}
+ leaf customer-name {
+ type string;
+ description
+ "name of the customer that may be declared in controller-customization,
+ to define a specific way to handle constraints associated with this
+ customer.";
+ }
leaf resource-reserve {
type boolean;
mandatory true;
module tapi {
- yang-version 1;
+ yang-version 1.1;
namespace "urn:opendaylight:params:xml:ns:yang:tapi";
prefix tapi;
import tapi-topology {
prefix tapi-topology;
- revision-date 2018-12-10;
+ revision-date 2022-11-21;
}
import tapi-common {
prefix tapi-common;
- revision-date 2018-12-10;
+ revision-date 2022-11-21;
}
import org-openroadm-common-service-types {
prefix org-openroadm-common-service-types;
Thouenon ( gilles.thouenon@orange.com ) Christophe Betoule ( christophe.betoule@orange.com
)";
+ revision "2023-07-28" {
+ description
+ "Second revision of TAPI model for migration towards TAPI 2.4";
+ }
revision 2018-09-28 {
description
"Initial revision of TAPI model for internal use";
authors: Dhruv Bhardwaj ( db929a@att.com ) Shweta Vachhani ( sv111y@att.com )
Balagangadhar Bathula ( bb4341@att.com )";
+ revision 2023-12-21 {
+ description
+ "Add leaflist supported-operational-mode to lcp";
+ }
revision 2022-09-22 {
description
"Add initial support to regenerators functionality; Modify the attribute
base org-openroadm-port-types:supported-if-capability;
}
}
+ leaf-list supported-operational-mode {
+ type string;
+ description
+ "List of operational-mode supported by the port";
+ }
uses mpdr-restrictions-grp;
uses regen-profiles-grp;
leaf xpdr-type {
module transportpce-tapinetworkutils {
- yang-version 1;
+ yang-version 1.1;
namespace "http://org/opendaylight/transportpce/tapinetworkutils";
prefix "org-opendaylight-transportpce-tapinetworkutils";
import tapi-common {
prefix tapi-common;
- revision-date 2018-12-10;
+ revision-date 2022-11-21;
}
organization
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE";
+ revision "2023-07-28" {
+ description
+ "Second revision of tapi networkutils model for migration towards TAPI 2.4";
+ }
revision "2021-04-08" {
description
"Initial revision of tapi networkutils model. Used as the transportpce-networkutils model to
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<type>xml</type>
<classifier>features</classifier>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-transportpce-swagger</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
</dependencies>
</dependencyManagement>
-</project>
\ No newline at end of file
+</project>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>6.0.5</version>
+ <version>6.0.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
private static final Logger LOG = LoggerFactory.getLogger(CrossConnectImpl.class);
- protected CrossConnect crossConnect;
private final MappingUtils mappingUtils;
private CrossConnectImpl121 crossConnectImpl121;
private CrossConnectImpl221 crossConnectImpl221;
this.crossConnectImpl121 = crossConnectImpl121;
this.crossConnectImpl221 = crossConnectImpl221;
this.crossConnectImpl710 = crossConnectImpl710;
- this.crossConnect = null;
}
public Optional<?> getCrossConnect(String nodeId, String connectionNumber) {
package org.opendaylight.transportpce.common.mapping;
import java.util.List;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilities;
public interface MappingUtils {
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.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.If100GE;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.If100GEODU4;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.If10GE;
import java.util.List;
import java.util.Map;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.OduSwitchingPools;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.non.blocking.list.PortList;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilitiesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.OduSwitchingPools;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.non.blocking.list.PortList;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.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.device.rev170206.CircuitPack;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilitiesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcp;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcpKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.SwitchingPoolLcp;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.SwitchingPoolLcpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.SwitchingPoolLcpKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilitiesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mpdr.restrictions.grp.MpdrRestrictionsBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.regen.profiles.grp.RegenProfilesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcp;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.SwitchingPoolLcpKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mpdr.restrictions.grp.MpdrRestrictionsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.regen.profiles.grp.RegenProfilesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.SwitchingPoolLcp;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.SwitchingPoolLcpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.SwitchingPoolLcpKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.alarm.pm.types.rev191129.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.CircuitPack;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.common.mapping.PortMappingVersion221;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.Ports;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.PortsKey;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.common.mapping.PortMappingVersion710;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.pack.Ports;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.pack.PortsKey;
import java.util.Map;
import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.PortQual;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.converter.DataObjectConverter;
import org.opendaylight.transportpce.test.converter.JSONDataObjectConverter;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.test.DataStoreContext;
import org.opendaylight.transportpce.test.DataStoreContextImpl;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class PortMappingImplTest {
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.test.DataStoreContext;
import org.opendaylight.transportpce.test.DataStoreContextImpl;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData;
import static org.junit.jupiter.api.Assertions.assertNull;
import org.junit.jupiter.api.Test;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.PortQual;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
import org.opendaylight.yangtools.yang.common.Uint32;
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<description>client to send message to Dmaap message router</description>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
import org.opendaylight.transportpce.dmaap.client.resource.EventsApi;
import org.opendaylight.transportpce.dmaap.client.resource.config.JsonConfigurator;
import org.opendaylight.transportpce.dmaap.client.resource.model.CreatedEvent;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService;
-import org.opendaylight.yangtools.concepts.Registration;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(NbiNotificationsHandler.class);
private String topic = "unauthenticated.TPCE";
private EventsApi api;
- private Registration reg;
public NbiNotificationsHandler(String baseUrl, String username, String password) {
LOG.info("Dmaap server {} for user {}", baseUrl, username);
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.opendaylight.transportpce.dmaap.client.resource.model.CreatedEvent;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
@Path("/events")
public interface EventsApi {
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirection;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.lgx.Lgx;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.port.Port;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEnd;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEnd;
//This class is a temporary workaround while waiting jackson
//support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import java.io.IOException;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
// This class is a temporary workaround while waiting jackson
// support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import java.io.IOException;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEnd;
// This class is a temporary workaround while waiting jackson
// support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import java.io.IOException;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEnd;
// This class is a temporary workaround while waiting jackson
// support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirectionKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev191129.ServiceFormat;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint8;
import org.slf4j.LoggerFactory;
linkcheck_ignore = [
# Ignore dmaap sample URL
'https://dmaap-mr:30226',
+ # LFN CI connectivy issue with tox wiki URL
+ 'https://tox.wiki',
# OpenROADM white paper often has connectivity issues from the Gate
'https://0201.nccdn.net/1_2/000/000/134/c50/Open-ROADM-MSA-release-2-Device-White-paper-v1-1.pdf'
]
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>feature-repo-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<classifier>features</classifier>
<type>xml</type>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-transportpce-swagger</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
</dependencies>
</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<name>OpenDaylight :: transportpce :: Inventory</name>
<properties>
- <mdsal.version>12.0.3</mdsal.version>
- <netconf.version>6.0.5</netconf.version>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <mdsal.version>12.0.4</mdsal.version>
+ <netconf.version>6.0.6</netconf.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
<transportpce.db.host>localhost:3306</transportpce.db.host>
<transportpce.db.database>transportpce</transportpce.db.database>
<transportpce.db.username>root</transportpce.db.username>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright © 2021 Orange 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 INTERNAL
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>single-feature-parent</artifactId>
- <version>13.0.7</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.transportpce</groupId>
- <artifactId>odl-transportpce-swagger</artifactId>
- <version>9.0.0-SNAPSHOT</version>
- <packaging>feature</packaging>
- <name>OpenDaylight :: transportpce :: swagger</name>
-
- <properties>
- <netconf.version>6.0.5</netconf.version>
- <configfile.directory>etc/opendaylight/karaf</configfile.directory>
- <skip.karaf.featureTest>false</skip.karaf.featureTest>
- </properties>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.netconf</groupId>
- <artifactId>netconf-artifacts</artifactId>
- <version>${netconf.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.netconf</groupId>
- <artifactId>odl-restconf-openapi</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- </dependencies>
-</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<name>OpenDaylight :: transportpce :: tapi</name>
<properties>
- <mdsal.version>12.0.3</mdsal.version>
- <netconf.version>6.0.5</netconf.version>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <mdsal.version>12.0.4</mdsal.version>
+ <netconf.version>6.0.6</netconf.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
<skip.karaf.featureTest>false</skip.karaf.featureTest>
</properties>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-artifacts</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependencies>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>odl-tapi-2.1.1-models</artifactId>
+ <artifactId>odl-tapi-2.4.0-models</artifactId>
<classifier>features</classifier>
<type>xml</type>
</dependency>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<name>OpenDaylight :: transportpce</name>
<properties>
- <netconf.version>6.0.5</netconf.version>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <netconf.version>6.0.6</netconf.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
<configfile.directory>etc/opendaylight/karaf</configfile.directory>
<skip.karaf.featureTest>false</skip.karaf.featureTest>
</properties>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<module>odl-transportpce-inventory</module>
<module>odl-transportpce-nbinotifications</module>
<module>odl-transportpce-dmaap-client</module>
- <module>odl-transportpce-swagger</module>
</modules>
<build>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>6.0.5</version>
+ <version>6.0.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.inventory.DeviceInventory;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.slf4j.Logger;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.inventory.DeviceInventory;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.slf4j.Logger;
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>karaf4-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<type>xml</type>
<scope>runtime</scope>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-transportpce-swagger</artifactId>
- <version>${project.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- <scope>runtime</scope>
- </dependency>
</dependencies>
<build>
<parent>
<groupId>io.lighty.core</groupId>
<artifactId>lighty-app-parent</artifactId>
- <version>19.0.0</version>
+ <version>19.1.0</version>
<relativePath/>
</parent>
<application.attach.zip>true</application.attach.zip>
<maven.deploy.skip>true</maven.deploy.skip>
<transportpce.version>9.0.0-SNAPSHOT</transportpce.version>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
</dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>tapi-2.1.1</artifactId>
+ <artifactId>tapi-2.4.0</artifactId>
</dependency>
<dependency>
<groupId>org.opendaylight.transportpce</groupId>
org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev230526.$YangModuleInfoImpl.getInstance(),
// tapi models
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.oam.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.oam.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.path.computation.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.path.computation.rev221121.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.eth.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.eth.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.$YangModuleInfoImpl
.getInstance(),
// API models / opendaylight
.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.gnpy.gnpy.eqpt.config.rev220221.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.gnpy.path.rev220615.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501
.$YangModuleInfoImpl.getInstance(),
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206
.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.$YangModuleInfoImpl
.getInstance());
private static final Set<YangModuleInfo> TPCE_YANG_MODEL = Stream.concat(
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
<kafka.version>3.0.0</kafka.version>
</properties>
</dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>tapi-2.1.1</artifactId>
+ <artifactId>tapi-2.4.0</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.util.concurrent.ListenableFuture;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import org.opendaylight.transportpce.nbinotifications.serialization.NotificationServiceDeserializer;
import org.opendaylight.transportpce.nbinotifications.serialization.TapiNotificationDeserializer;
import org.opendaylight.transportpce.nbinotifications.utils.TopicManager;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsAlarmServiceInput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsAlarmServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsAlarmServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsProcessServiceInput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsProcessServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsProcessServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NbiNotificationsService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.process.service.output.NotificationsProcessService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.DeleteNotificationSubscriptionService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.DeleteNotificationSubscriptionServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.DeleteNotificationSubscriptionServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.DeleteNotificationSubscriptionServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceListInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceListOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationSubscriptionServiceListOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetSupportedNotificationTypes;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetSupportedNotificationTypesInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetSupportedNotificationTypesOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetSupportedNotificationTypesOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.TapiNotificationService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.UpdateNotificationSubscriptionService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.UpdateNotificationSubscriptionServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.UpdateNotificationSubscriptionServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.context.NotificationContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.context.NotificationContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.output.SubscriptionService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.output.SubscriptionServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.NotificationKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service.list.output.SubscriptionServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.context.NotifSubscription;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.context.NotifSubscriptionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.context.NotifSubscriptionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.subscription.service.SubscriptionFilter;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.subscription.service.SubscriptionFilterBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceInput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceInput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NbiNotificationsService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPEPROFILE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPESERVICEINTERFACEPOINT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPETAPICONTEXT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTION;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIONENDPOINT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.DeleteNotificationSubscriptionServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceListInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceListOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationSubscriptionServiceListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypes;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypesInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypesOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetSupportedNotificationTypesOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEOBJECTCREATION;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEOBJECTDELETION;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.TapiNotificationService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.UpdateNotificationSubscriptionService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.UpdateNotificationSubscriptionServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.UpdateNotificationSubscriptionServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.context.NotificationContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.context.NotificationContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.output.SubscriptionService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.output.SubscriptionServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.Notification;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.NotificationKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service.list.output.SubscriptionServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscription;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscriptionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscriptionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilter;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPEINTERRULEGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPELINK;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODEEDGEPOINT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODERULEGROUP;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Rpc;
import org.opendaylight.yangtools.yang.common.ErrorTag;
.withError(ErrorType.APPLICATION, "Couldnt get Notification Context from Datastore")
.buildFuture();
}
- if (notificationContext.getNotifSubscription() == null) {
- return RpcResultBuilder.success(new GetSupportedNotificationTypesOutputBuilder()
- .setSupportedNotificationTypes(new HashSet<>())
- .setSupportedObjectTypes(new HashSet<>()).build()).buildFuture();
- }
- Set<NotificationType> notificationTypeList = new HashSet<>();
- Set<ObjectType> objectTypeList = new HashSet<>();
- for (NotifSubscription notifSubscription:notificationContext.getNotifSubscription().values()) {
- if (notifSubscription.getSupportedNotificationTypes() != null) {
- notificationTypeList.addAll(notifSubscription.getSupportedNotificationTypes());
- }
- if (notifSubscription.getSupportedObjectTypes() != null) {
- objectTypeList.addAll(notifSubscription.getSupportedObjectTypes());
- }
- }
+ //TAPI 2.4 removes supported notification types from notif-subscription list and notification-context
+ //No way to store what notification types are supported
+ //Considers that by default all notification are supported
+ Set<NOTIFICATIONTYPE> notificationTypeList = new HashSet<>();
+ notificationTypeList.add(NOTIFICATIONTYPEOBJECTCREATION.VALUE);
+ notificationTypeList.add(NOTIFICATIONTYPEOBJECTDELETION.VALUE);
+ notificationTypeList.add(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE);
+//
+// if (notificationContext.getNotifSubscription() == null) {
+// return RpcResultBuilder.success(new GetSupportedNotificationTypesOutputBuilder()
+// .setSupportedNotificationTypes(new HashSet<>())
+// .setSupportedObjectTypes(new HashSet<>()).build()).buildFuture();
+// }
+// Set<NOTIFICATIONTYPE> notificationTypeList = new HashSet<>();
+
+ //TAPI 2.4 removes supported object types from notif-subscription list and notification-context
+ //No way to store what object types are supported
+ //Considers that by default all object are supported
+ Set<OBJECTTYPE> objectTypeList = new HashSet<>();
+ objectTypeList.add(OBJECTTYPESERVICEINTERFACEPOINT.VALUE);
+ objectTypeList.add(OBJECTTYPETAPICONTEXT.VALUE);
+ objectTypeList.add(OBJECTTYPEPROFILE.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPENODE.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPELINK.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPENODERULEGROUP.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPEINTERRULEGROUP.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPE.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPECONNECTIONENDPOINT.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPECONNECTION.VALUE);
+// for (NotifSubscription notifSubscription:notificationContext.getNotifSubscription().values()) {
+// if (notifSubscription.getSupportedNotificationTypes() != null) {
+// notificationTypeList.addAll(notifSubscription.getSupportedNotificationTypes());
+// }
+// if (notifSubscription.getSupportedObjectTypes() != null) {
+// objectTypeList.addAll(notifSubscription.getSupportedObjectTypes());
+// }
+// }
return RpcResultBuilder.success(new GetSupportedNotificationTypesOutputBuilder()
.setSupportedNotificationTypes(notificationTypeList)
.setSupportedObjectTypes(objectTypeList).build()).buildFuture();
.setRequestedObjectTypes(input.getSubscriptionFilter().getRequestedObjectTypes())
.build();
Uuid notifSubscriptionUuid = new Uuid(UUID.randomUUID().toString());
+ Map<SubscriptionFilterKey, SubscriptionFilter> sfmap = new HashMap<>();
+ sfmap.put(subscriptionFilter.key(), subscriptionFilter);
SubscriptionService subscriptionService = new SubscriptionServiceBuilder()
- .setSubscriptionFilter(subscriptionFilter)
+ .setSubscriptionFilter(sfmap)
.setSubscriptionState(input.getSubscriptionState())
.setUuid(notifSubscriptionUuid)
.build();
NotifSubscriptionKey notifSubscriptionKey = new NotifSubscriptionKey(notifSubscriptionUuid);
- Set<NotificationType> notificationTypes = (subscriptionFilter.getRequestedNotificationTypes() != null)
- ? subscriptionFilter.getRequestedNotificationTypes()
- : new HashSet<>(List.of(NotificationType.ALARMEVENT));
- Set<ObjectType> objectTypes = (subscriptionFilter.getRequestedObjectTypes() != null)
- ? subscriptionFilter.getRequestedObjectTypes()
- : new HashSet<>(List.of(ObjectType.CONNECTIVITYSERVICE));
NotifSubscription notifSubscription = new NotifSubscriptionBuilder()
.setSubscriptionState(subscriptionService.getSubscriptionState())
.setSubscriptionFilter(subscriptionService.getSubscriptionFilter())
.setUuid(notifSubscriptionUuid)
- .setSupportedNotificationTypes(notificationTypes)
- .setSupportedObjectTypes(objectTypes)
+// Following 2 items are no more in notification-context with T-API 2.4
+// .setSupportedNotificationTypes(notificationTypes)
+// .setSupportedObjectTypes(objectTypes)
.setName(subscriptionService.getName())
.build();
NotificationContext notificationContext = getNotificationContext();
public ListenableFuture<RpcResult<DeleteNotificationSubscriptionServiceOutput>>
deleteNotificationSubscriptionService(DeleteNotificationSubscriptionServiceInput input) {
try {
- if (input == null || input.getSubscriptionIdOrName() == null) {
+ if (input == null || input.getUuid() == null) {
LOG.warn("Missing mandatory params for input {}", input);
return RpcResultBuilder.<DeleteNotificationSubscriptionServiceOutput>failed()
.withError(ErrorType.RPC, "Missing input parameters").buildFuture();
}
- Uuid notifSubsUuid = getUuidFromIput(input.getSubscriptionIdOrName());
+ Uuid notifSubsUuid = input.getUuid();
InstanceIdentifier<NotifSubscription> notifSubscriptionIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(NotificationContext.class).child(NotifSubscription.class,
new NotifSubscriptionKey(notifSubsUuid)).build();
Optional<NotifSubscription> optionalNotifSub = this.networkTransactionService.read(
LogicalDatastoreType.OPERATIONAL, notifSubscriptionIID).get();
- if (!optionalNotifSub.isPresent()) {
+ if (optionalNotifSub.isEmpty()) {
return RpcResultBuilder.<DeleteNotificationSubscriptionServiceOutput>failed()
.withError(ErrorType.APPLICATION,
"Notification subscription doesnt exist").buildFuture();
NotifSubscription notifSubscription = optionalNotifSub.orElseThrow();
this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, notifSubscriptionIID);
this.networkTransactionService.commit().get();
- for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) {
- this.topicManager.deleteTapiTopic(objectUuid.getValue());
+ for (Map.Entry<SubscriptionFilterKey, SubscriptionFilter> sfEntry : notifSubscription
+ .getSubscriptionFilter().entrySet()) {
+ for (Uuid objectUuid:sfEntry.getValue().getRequestedObjectIdentifier()) {
+ this.topicManager.deleteTapiTopic(objectUuid.getValue());
+ }
}
+// for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) {
+// this.topicManager.deleteTapiTopic(objectUuid.getValue());
+// }
return RpcResultBuilder.success(new DeleteNotificationSubscriptionServiceOutputBuilder().build())
.buildFuture();
} catch (InterruptedException | ExecutionException | NoSuchElementException e) {
@Override
public ListenableFuture<RpcResult<GetNotificationSubscriptionServiceDetailsOutput>>
getNotificationSubscriptionServiceDetails(GetNotificationSubscriptionServiceDetailsInput input) {
- if (input == null || input.getSubscriptionIdOrName() == null) {
+ if (input == null || input.getUuid() == null) {
LOG.warn("Missing mandatory params for input {}", input);
return RpcResultBuilder.<GetNotificationSubscriptionServiceDetailsOutput>failed()
.withError(ErrorType.RPC, "Missing input parameters").buildFuture();
}
- Uuid notifSubsUuid = getUuidFromIput(input.getSubscriptionIdOrName());
+ Uuid notifSubsUuid = input.getUuid();
NotificationContext notificationContext = getNotificationContext();
if (notificationContext == null) {
return RpcResultBuilder.<GetNotificationSubscriptionServiceDetailsOutput>failed()
if (notificationContext.getNotifSubscription() == null) {
return RpcResultBuilder.success(new GetNotificationSubscriptionServiceDetailsOutputBuilder()
.setSubscriptionService(new org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service
+ .urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service
.details.output.SubscriptionServiceBuilder().build()).build()).buildFuture();
}
if (!notificationContext.getNotifSubscription().containsKey(new NotifSubscriptionKey(notifSubsUuid))) {
}
return RpcResultBuilder.success(new GetNotificationSubscriptionServiceDetailsOutputBuilder()
.setSubscriptionService(new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service.details.output
+ .onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service.details.output
.SubscriptionServiceBuilder(notificationContext.getNotifSubscription().get(
new NotifSubscriptionKey(notifSubsUuid))).build()).build()).buildFuture();
}
.setSubscriptionService(new HashMap<>()).build()).buildFuture();
}
Map<SubscriptionServiceKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang
- .tapi.notification.rev181210.get.notification.subscription.service.list.output.SubscriptionService>
+ .tapi.notification.rev221121.get.notification.subscription.service.list.output.SubscriptionService>
notifSubsMap = new HashMap<>();
for (NotifSubscription notifSubscription:notificationContext.getNotifSubscription().values()) {
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang
- .tapi.notification.rev181210.get.notification.subscription.service.list.output.SubscriptionService
+ .tapi.notification.rev221121.get.notification.subscription.service.list.output.SubscriptionService
subscriptionService = new org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service
+ .urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.subscription.service
.list.output.SubscriptionServiceBuilder(notifSubscription).build();
notifSubsMap.put(subscriptionService.key(), subscriptionService);
}
public ListenableFuture<RpcResult<GetNotificationListOutput>> getNotificationList(GetNotificationListInput input) {
try {
LOG.info("RPC getNotificationList received");
- if (input == null || input.getSubscriptionIdOrName() == null) {
+ if (input == null || input.getSubscriptionId() == null) {
LOG.warn("Missing mandatory params for input {}", input);
return RpcResultBuilder.<GetNotificationListOutput>failed().withError(ErrorType.RPC,
"Missing input parameters").buildFuture();
}
- Uuid notifSubsUuid = getUuidFromIput(input.getSubscriptionIdOrName());
+ Uuid notifSubsUuid = input.getSubscriptionId();
InstanceIdentifier<NotifSubscription> notifSubscriptionIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(NotificationContext.class).child(NotifSubscription.class,
new NotifSubscriptionKey(notifSubsUuid)).build();
Optional<NotifSubscription> optionalNotifSub = this.networkTransactionService.read(
LogicalDatastoreType.OPERATIONAL, notifSubscriptionIID).get();
- if (!optionalNotifSub.isPresent()) {
+ if (optionalNotifSub.isEmpty()) {
return RpcResultBuilder.<GetNotificationListOutput>failed()
.withError(ErrorType.APPLICATION,
"Notification subscription doesnt exist").buildFuture();
}
NotifSubscription notifSubscription = optionalNotifSub.orElseThrow();
List<Notification> notificationTapiList = new ArrayList<>();
- for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) {
- if (!this.topicManager.getTapiTopicMap().containsKey(objectUuid.getValue())) {
- LOG.warn("Topic doesnt exist for {}", objectUuid.getValue());
- continue;
+ for (Map.Entry<SubscriptionFilterKey, SubscriptionFilter> sfEntry : notifSubscription
+ .getSubscriptionFilter().entrySet()) {
+ for (Uuid objectUuid:sfEntry.getValue().getRequestedObjectIdentifier()) {
+ if (!this.topicManager.getTapiTopicMap().containsKey(objectUuid.getValue())) {
+ LOG.warn("Topic doesnt exist for {}", objectUuid.getValue());
+ continue;
+ }
+ LOG.info("Going to get notifications for topic {}", objectUuid.getValue());
+ Subscriber<NotificationTapiService, Notification> subscriber = new Subscriber<>(
+ objectUuid.getValue(), objectUuid.getValue(), server, converterTapiService,
+ TapiNotificationDeserializer.class);
+ notificationTapiList.addAll(subscriber.subscribe(objectUuid.getValue(), Notification.QNAME));
}
- LOG.info("Going to get notifications for topic {}", objectUuid.getValue());
- Subscriber<NotificationTapiService, Notification> subscriber = new Subscriber<>(
- objectUuid.getValue(), objectUuid.getValue(), server, converterTapiService,
- TapiNotificationDeserializer.class);
- notificationTapiList.addAll(subscriber.subscribe(objectUuid.getValue(), Notification.QNAME));
}
+// for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) {
+// if (!this.topicManager.getTapiTopicMap().containsKey(objectUuid.getValue())) {
+// LOG.warn("Topic doesnt exist for {}", objectUuid.getValue());
+// continue;
+// }
+// LOG.info("Going to get notifications for topic {}", objectUuid.getValue());
+// Subscriber<NotificationTapiService, Notification> subscriber = new Subscriber<>(
+// objectUuid.getValue(), objectUuid.getValue(), server, converterTapiService,
+// TapiNotificationDeserializer.class);
+// notificationTapiList.addAll(subscriber.subscribe(objectUuid.getValue(), Notification.QNAME));
+// }
LOG.info("TAPI notifications = {}", notificationTapiList);
Map<NotificationKey, Notification> notificationMap = new HashMap<>();
for (Notification notif:notificationTapiList) {
return false;
}
- private Uuid getUuidFromIput(String serviceIdOrName) {
- try {
- UUID.fromString(serviceIdOrName);
- LOG.info("Given attribute {} is a UUID", serviceIdOrName);
- return new Uuid(serviceIdOrName);
- } catch (IllegalArgumentException e) {
- LOG.info("Given attribute {} is not a UUID", serviceIdOrName);
- return new Uuid(UUID.nameUUIDFromBytes(serviceIdOrName.getBytes(StandardCharsets.UTF_8)).toString());
- }
- }
}
import org.opendaylight.transportpce.nbinotifications.listener.NbiNotificationsHandler;
import org.opendaylight.transportpce.nbinotifications.producer.Publisher;
import org.opendaylight.transportpce.nbinotifications.utils.TopicManager;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
import org.opendaylight.yangtools.concepts.Registration;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.transportpce.nbinotifications.producer.Publisher;
import org.opendaylight.transportpce.nbinotifications.utils.NbiNotificationsUtils;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService;
-import org.opendaylight.yangtools.concepts.Registration;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Map<String, Publisher<NotificationProcessService>> publishersServiceMap;
private Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap;
private Map<String, Publisher<NotificationTapiService>> tapiPublisherMap;
- private Registration reg;
public NbiNotificationsHandler(Map<String, Publisher<NotificationProcessService>> publishersServiceMap,
Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap,
import java.util.Map;
import org.apache.kafka.common.serialization.Deserializer;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.alarm.service.output.NotificationsAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmServiceBuilder;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.slf4j.Logger;
import java.util.Map;
import org.apache.kafka.common.serialization.Serializer;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.slf4j.Logger;
import java.util.Map;
import org.apache.kafka.common.serialization.Deserializer;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.process.service.output.NotificationsProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.process.service.output.NotificationsProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessServiceBuilder;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.slf4j.Logger;
import java.util.Map;
import org.apache.kafka.common.serialization.Serializer;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.slf4j.Logger;
import java.util.Map;
import org.apache.kafka.common.serialization.Deserializer;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.NotificationBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.AdditionalInfo;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.AdditionalInfoBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.AdditionalInfoKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.AlarmInfoBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TcaInfoBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.Notification;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.NotificationBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.AdditionalInfo;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.AdditionalInfoBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.AdditionalInfoKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameKey;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.slf4j.Logger;
}
String value = new String(data, StandardCharsets.UTF_8);
// The message published is
- // org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService
+ // org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService
// we have to map it to
// org.opendaylight.yang.gen.v1
- // .urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification
+ // .urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.Notification
NotificationTapiService mappedString = converter.createDataObjectFromJsonString(
YangInstanceIdentifier.of(NotificationTapiService.QNAME), value, JSONCodecFactorySupplier.RFC7951);
if (mappedString == null) {
LOG.info("Transforming TAPI notification for getNotificationList rpc");
Map<AdditionalInfoKey, AdditionalInfo> addInfoMap = new HashMap<>();
if (mappedString.getAdditionalInfo() != null) {
- for (org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.AdditionalInfo
+ for (org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.AdditionalInfo
addInfo:mappedString.getAdditionalInfo().values()) {
AdditionalInfo transAddInfo = new AdditionalInfoBuilder()
.setValue(addInfo.getValue())
Map<ChangedAttributesKey, ChangedAttributes> changedAttMap = new HashMap<>();
if (mappedString.getChangedAttributes() != null) {
for (org.opendaylight.yang.gen.v1
- .nbi.notifications.rev230726.notification.tapi.service.ChangedAttributes changedAtt:mappedString
+ .nbi.notifications.rev230728.notification.tapi.service.ChangedAttributes changedAtt:mappedString
.getChangedAttributes().values()) {
ChangedAttributes transChangedAtt = new ChangedAttributesBuilder(changedAtt).build();
changedAttMap.put(transChangedAtt.key(), transChangedAtt);
Map<TargetObjectNameKey, TargetObjectName> targetObjNameMap = new HashMap<>();
if (mappedString.getTargetObjectName() != null) {
for (org.opendaylight.yang.gen.v1
- .nbi.notifications.rev230726.notification.tapi.service.TargetObjectName
+ .nbi.notifications.rev230728.notification.tapi.service.TargetObjectName
targetObjectName:mappedString.getTargetObjectName().values()) {
TargetObjectName transTargetObjName = new TargetObjectNameBuilder(targetObjectName).build();
targetObjNameMap.put(transTargetObjName.key(), transTargetObjName);
}
}
+
+// In TAPI 2.4 get-notifcation-list, there is no more alarm-info and Tca-info
LOG.info("Notification uuid = {}", mappedString.getUuid().getValue());
return new NotificationBuilder()
- .setAlarmInfo(mappedString.getAlarmInfo() == null ? null
- : new AlarmInfoBuilder(mappedString.getAlarmInfo()).build())
+// .setAlarmInfo(mappedString.getAlarmInfo() == null ? null
+// : new AlarmInfoBuilder(mappedString.getAlarmInfo()).build())
.setAdditionalText(mappedString.getAdditionalText())
.setAdditionalInfo(addInfoMap)
.setNotificationType(mappedString.getNotificationType())
.setTargetObjectIdentifier(mappedString.getTargetObjectIdentifier())
.setTargetObjectName(targetObjNameMap)
.setTargetObjectType(mappedString.getTargetObjectType())
- .setTcaInfo(mappedString.getTcaInfo() == null ? null
- : new TcaInfoBuilder(mappedString.getTcaInfo()).build())
+// .setTcaInfo(mappedString.getTcaInfo() == null ? null
+// : new TcaInfoBuilder(mappedString.getTcaInfo()).build())
.setUuid(mappedString.getUuid())
.build();
}
import java.util.Map;
import org.apache.kafka.common.serialization.Serializer;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.slf4j.Logger;
import java.util.Properties;
import java.util.function.Function;
import java.util.stream.Collectors;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.AdditionalInfo;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.AdditionalInfoBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.AdditionalInfoKey;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.AlarmInfoBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.ChangedAttributes;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.ChangedAttributesBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.ChangedAttributesKey;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.TargetObjectName;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.TargetObjectNameBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.TargetObjectNameKey;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.tapi.service.TcaInfoBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.AdditionalInfo;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.AdditionalInfoBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.AdditionalInfoKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.ChangedAttributesKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.TargetObjectName;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.TargetObjectNameBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.TargetObjectNameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
e -> new TargetObjectNameKey(e.getValueName()),
e -> new TargetObjectNameBuilder(e).build()));
LOG.info("Notification uuid = {}", notification.getUuid());
+
return new NotificationTapiServiceBuilder()
- .setAlarmInfo(notification.getAlarmInfo() == null ? null
- : new AlarmInfoBuilder(notification.getAlarmInfo()).build())
+ .setAlarmInfo(notification.getAlarmInfo())
.setAdditionalText(notification.getAdditionalText())
.setAdditionalInfo(addInfoMap)
.setNotificationType(notification.getNotificationType())
.setTargetObjectIdentifier(notification.getTargetObjectIdentifier())
.setTargetObjectName(targetObjNameMap)
.setTargetObjectType(notification.getTargetObjectType())
- .setTcaInfo(notification.getTcaInfo() == null ? null
- : new TcaInfoBuilder(notification.getTcaInfo()).build())
+ .setTcaInfo(notification.getTcaInfo())
.setUuid(notification.getUuid())
.build();
}
import org.opendaylight.transportpce.nbinotifications.serialization.NotificationAlarmServiceSerializer;
import org.opendaylight.transportpce.nbinotifications.serialization.NotificationServiceSerializer;
import org.opendaylight.transportpce.nbinotifications.serialization.TapiNotificationSerializer;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.nbinotifications.utils.NotificationServiceDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.process.service.output.NotificationsProcessService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.Notification;
public class SubscriberTest extends AbstractTest {
private static final String TOPIC = "topic";
import org.opendaylight.transportpce.nbinotifications.utils.TopicManager;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsAlarmServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsAlarmServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsProcessServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.GetNotificationsProcessServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsAlarmServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.GetNotificationsProcessServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListInputBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
public class NbiNotificationsImplTest extends AbstractTest {
= NotificationServiceDataUtils.buildNotificationSubscriptionServiceInputBuilder();
ListenableFuture<RpcResult<CreateNotificationSubscriptionServiceOutput>> result =
nbiNotificationsImpl.createNotificationSubscriptionService(builder.build());
- GetNotificationListInputBuilder builder1 = new GetNotificationListInputBuilder()
- .setTimePeriod("Time Period")
- .setSubscriptionIdOrName(result.get().getResult().getSubscriptionService().getUuid().getValue());
- ListenableFuture<RpcResult<GetNotificationListOutput>> result1 =
- nbiNotificationsImpl.getNotificationList(builder1.build());
- assertNull(result1.get().getResult().getNotification(), "Should be null");
+ assertNull(nbiNotificationsImpl.getNotificationList(new GetNotificationListInputBuilder()
+ .setTimeRange(null)
+ .setSubscriptionId(result.get().getResult().getSubscriptionService().getUuid())
+ .build())
+ .get().getResult().getNotification(), "Should be null");
}
}
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationServiceBuilder;
public class NbiNotificationsHandlerTest extends AbstractTest {
@Mock
import org.opendaylight.transportpce.nbinotifications.utils.NotificationServiceDataUtils;
import org.opendaylight.transportpce.nbinotifications.utils.TopicManager;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.input.SubscriptionFilter;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.input.SubscriptionFilterBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.input.SubscriptionFilter;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.input.SubscriptionFilterBuilder;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmService;
public class NotificationAlarmServiceDeserializerTest extends AbstractTest {
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationAlarmService;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.skyscreamer.jsonassert.JSONAssert;
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessService;
public class NotificationServiceDeserializerTest extends AbstractTest {
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.skyscreamer.jsonassert.JSONAssert;
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.Notification;
public class NotificationTapiServiceDeserializerTest extends AbstractTest {
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.skyscreamer.jsonassert.JSONAssert;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.port.PortBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev191129.ServiceFormat;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.NotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.alarm.service.output.NotificationsAlarmServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.process.service.output.NotificationsProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.get.notifications.process.service.output.NotificationsProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.DateAndTime;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1Builder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.CreateNotificationSubscriptionServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.GetNotificationListInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.SubscriptionState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.context.NotificationContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.input.SubscriptionFilter;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.create.notification.subscription.service.input.SubscriptionFilterBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.NotificationBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.NwTopologyServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.alarm.service.output.NotificationsAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.get.notifications.process.service.output.NotificationsProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1Builder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEOBJECTCREATION;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEOBJECTDELETION;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.SubscriptionState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.context.NotificationContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.input.SubscriptionFilter;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.create.notification.subscription.service.input.SubscriptionFilterBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.Notification;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.get.notification.list.output.NotificationBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.NwTopologyServiceBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint8;
.setNewValue(OperationalState.ENABLED.getName())
.build();
return new NotificationBuilder()
- .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE)
+ .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE)
.setLayerProtocolName(LayerProtocolName.ETH)
- .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE)
+ .setTargetObjectType(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)
.setEventTimeStamp(datetime)
.setUuid(new Uuid(UUID.randomUUID().toString()))
.setTargetObjectIdentifier(targetObjectId)
.setValueName("Subscription name")
.build();
SubscriptionFilter subscriptionFilter = new SubscriptionFilterBuilder()
- .setRequestedObjectTypes(new HashSet<>(List.of(ObjectType.CONNECTIVITYSERVICE)))
- .setRequestedNotificationTypes(new HashSet<>(List.of(NotificationType.ALARMEVENT)))
+ .setRequestedObjectTypes(new HashSet<>(List.of(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)))
+ .setRequestedNotificationTypes(new HashSet<>(List.of(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE,
+ NOTIFICATIONTYPEOBJECTCREATION.VALUE, NOTIFICATIONTYPEOBJECTDELETION.VALUE)))
.setRequestedLayerProtocols(new HashSet<>(List.of(LayerProtocolName.ETH)))
.setRequestedObjectIdentifier(new HashSet<>(List.of(new Uuid(UUID.randomUUID().toString()))))
.setIncludeContent(true)
public static void createTapiContext(
NetworkTransactionService networkTransactionService) throws ExecutionException, InterruptedException {
// Augmenting tapi context to include topology and connectivity contexts
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name contextName
- = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name contextName
+ = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder()
.setValue(TAPI_CONTEXT).setValueName("TAPI Context Name").build();
Context1 connectivityContext =
.build())
.build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name nwTopoServiceName =
- new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name nwTopoServiceName =
+ new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder()
.setValue("Network Topo Service")
.setValueName("Network Topo Service Name")
.build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1 topologyContext
- = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1Builder()
- .setTopologyContext(new TopologyContextBuilder()
- .setNwTopologyService(new NwTopologyServiceBuilder()
- .setTopology(new HashMap<>())
- .setUuid(
- new Uuid(
- UUID.nameUUIDFromBytes("Network Topo Service".getBytes(Charset.forName("UTF-8")))
- .toString()))
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1 topologyContext
+ = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1Builder()
+ .setTopologyContext(new TopologyContextBuilder()
+ .setNwTopologyService(new NwTopologyServiceBuilder()
+ .setTopology(new HashMap<>())
+ .setUuid(
+ new Uuid(
+ UUID.nameUUIDFromBytes("Network Topo Service".getBytes(Charset.forName("UTF-8")))
+ .toString()))
.setName(Map.of(nwTopoServiceName.key(), nwTopoServiceName))
.build())
.setTopology(new HashMap<>())
.build())
.build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1 notificationContext
- = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1Builder()
- .setNotificationContext(new NotificationContextBuilder()
- .setNotification(new HashMap<>())
- .setNotifSubscription(new HashMap<>())
- .build())
- .build();
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1 notificationContext
+ = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1Builder()
+ .setNotificationContext(new NotificationContextBuilder()
+ .setNotification(new HashMap<>())
+ .setNotifSubscription(new HashMap<>())
+ .build())
+ .build();
ContextBuilder contextBuilder = new ContextBuilder()
.setName(Map.of(contextName.key(), contextName))
public static GetNotificationListInputBuilder buildGetNotificationListInputBuilder(String subscriptionUuid) {
return new GetNotificationListInputBuilder()
- .setSubscriptionIdOrName(subscriptionUuid)
- .setTimePeriod("some string");
+ .setSubscriptionId(new Uuid(UUID.fromString(subscriptionUuid).toString()))
+ .setTimeRange(null);
}
}
{
"nbi-notifications:notification-tapi-service": {
"layer-protocol-name": "ETH",
- "notification-type": "ATTRIBUTE_VALUE_CHANGE",
+ "notification-type": "tapi-notification:NOTIFICATION_TYPE_ATTRIBUTE_VALUE_CHANGE",
"changed-attributes": [
{
"value-name": "administrativeState",
}
],
"uuid": "6ae49721-7f96-4924-b23b-31e5bee4946b",
- "target-object-type": "CONNECTIVITY_SERVICE",
+ "target-object-type": "tapi-connectivity:CONNECTIVITY_OBJECT_TYPE_CONNECTIVITY_SERVICE",
"event-time-stamp": "2022-04-06T09:06:01+00:00",
"target-object-identifier": "76d8f07b-ead5-4132-8eb8-cf3fdef7e079"
}
{
"nbi-notifications:notification-tapi-service": {
"layer-protocol-name": "ETH",
- "notification-type": "ATTRIBUTE_VALUE_CHANGE",
+ "notification-type": "tapi-notification:NOTIFICATION_TYPE_ATTRIBUTE_VALUE_CHANGE",
"changed-attributes": [
{
"value-name": "administrativeState",
}
],
"uuid": "6ae49721-7f96-4924-b23b-31e5bee4946b",
- "target-object-type": "CONNECTIVITY_SERVICE",
+ "target-object-type": "tapi-connectivity:CONNECTIVITY_OBJECT_TYPE_CONNECTIVITY_SERVICE",
"event-time-stamp": "2022-04-06T09:06:01+00:00",
"target-object-identifier": "76d8f07b-ead5-4132-8eb8-cf3fdef7e079"
}
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools-artifacts</artifactId>
- <version>11.0.4</version>
+ <version>11.0.5</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-artifacts</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>6.0.5</version>
+ <version>6.0.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.Netconf;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.Streams;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.Stream;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.ConnectionOper.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.connection.oper.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.connection.oper.available.capabilities.AvailableCapability;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.transportpce.networkmodel.service.FrequenciesService;
import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
import org.opendaylight.transportpce.networkmodel.util.TpceNetwork;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
private static final Logger LOG = LoggerFactory.getLogger(NetworkModelProvider.class);
private static final InstanceIdentifier<Mapping> MAPPING_II = InstanceIdentifier.create(Network.class)
- .child(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network
+ .child(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network
.Nodes.class)
.child(Mapping.class);
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.networkmodel.util.TopologyUtils;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Protocols;
import org.opendaylight.transportpce.networkmodel.listeners.TcaListener;
import org.opendaylight.transportpce.networkmodel.listeners.TcaListener221;
import org.opendaylight.transportpce.networkmodel.listeners.TcaListener710;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev161014.OrgOpenroadmAlarmListener;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev161014.OrgOpenroadmDeOperationsListener;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceListener;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final NotificationService notificationService;
private final DataBroker dataBroker;
private final PortMapping portMapping;
- private final List<ListenerRegistration<?>> listeners;
+ private final List<Registration> listeners;
public NodeRegistration(String nodeId, String nodeVersion, NotificationService notificationService,
DataBroker dataBroker, PortMapping portMapping) {
this.notificationService = notificationService;
this.dataBroker = dataBroker;
this.portMapping = portMapping;
- listeners = new ArrayList<ListenerRegistration<?>>();
+ listeners = new ArrayList<Registration>();
}
public void registerListeners() {
public void unregisterListeners() {
LOG.info("Unregistering notification listeners for node: {}", this.nodeId);
- for (ListenerRegistration<?> listenerRegistration : listeners) {
+ for (Registration listenerRegistration : listeners) {
listenerRegistration.close();
}
}
private void registerListeners121() {
- OrgOpenroadmAlarmListener alarmListener = new AlarmNotificationListener(this.dataBroker);
+ AlarmNotificationListener alarmListener = new AlarmNotificationListener(this.dataBroker);
LOG.info("Registering notification listener on OrgOpenroadmAlarmListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(alarmListener));
+ listeners.add(notificationService.registerCompositeListener(alarmListener.getCompositeListener()));
- OrgOpenroadmDeOperationsListener deOperationsListener = new DeOperationsListener();
+ DeOperationsListener deOperationsListener = new DeOperationsListener();
LOG.info("Registering notification listener on OrgOpenroadmDeOperationsListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(deOperationsListener));
+ listeners.add(notificationService.registerCompositeListener(deOperationsListener.getCompositeListener()));
- OrgOpenroadmDeviceListener deviceListener = new DeviceListener121(nodeId, this.portMapping);
+ DeviceListener121 deviceListener = new DeviceListener121(nodeId, this.portMapping);
LOG.info("Registering notification listener on OrgOpenroadmDeviceListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(deviceListener));
+ listeners.add(notificationService.registerCompositeListener(deviceListener.getCompositeListener()));
TcaListener tcaListener = new TcaListener();
LOG.info("Registering notification listener on OrgOpenroadmTcaListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(tcaListener));
+ listeners.add(notificationService.registerCompositeListener(tcaListener.getCompositeListener()));
}
private void registerListeners221() {
AlarmNotificationListener221 alarmListener = new AlarmNotificationListener221(dataBroker);
LOG.info("Registering notification listener on OrgOpenroadmAlarmListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(alarmListener));
+ listeners.add(notificationService.registerCompositeListener(alarmListener.getCompositeListener()));
DeOperationsListener221 deOperationsListener = new DeOperationsListener221();
LOG.info("Registering notification listener on OrgOpenroadmDeOperationsListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(deOperationsListener));
+ listeners.add(notificationService.registerCompositeListener(deOperationsListener.getCompositeListener()));
DeviceListener221 deviceListener = new DeviceListener221(nodeId, this.portMapping);
LOG.info("Registering notification listener on OrgOpenroadmDeviceListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(deviceListener));
+ listeners.add(notificationService.registerCompositeListener(deviceListener.getCompositeListener()));
TcaListener221 tcaListener = new TcaListener221();
LOG.info("Registering notification listener on OrgOpenroadmTcaListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(tcaListener));
+ listeners.add(notificationService.registerCompositeListener(tcaListener.getCompositeListener()));
}
private void registerListeners710() {
AlarmNotificationListener710 alarmListener = new AlarmNotificationListener710(dataBroker);
LOG.info("Registering notification listener on OrgOpenroadmAlarmListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(alarmListener));
+ listeners.add(notificationService.registerCompositeListener(alarmListener.getCompositeListener()));
DeOperationsListener710 deOperationsListener = new DeOperationsListener710();
LOG.info("Registering notification listener on OrgOpenroadmDeOperationsListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(deOperationsListener));
+ listeners.add(notificationService.registerCompositeListener(deOperationsListener.getCompositeListener()));
DeviceListener710 deviceListener = new DeviceListener710(nodeId, this.portMapping);
LOG.info("Registering notification listener on OrgOpenroadmDeviceListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(deviceListener));
+ listeners.add(notificationService.registerCompositeListener(deviceListener.getCompositeListener()));
TcaListener710 tcaListener = new TcaListener710();
LOG.info("Registering notification listener on OrgOpenroadmTcaListener for node: {}", nodeId);
- listeners.add(notificationService.registerNotificationListener(tcaListener));
+ listeners.add(notificationService.registerCompositeListener(tcaListener.getCompositeListener()));
}
}
import java.util.List;
import java.util.Map;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
public class OtnTopoNode {
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
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.nodelist.Nodes;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.nodelist.NodesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev161014.AlarmNotification;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev161014.OrgOpenroadmAlarmListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev161014.alarm.ProbableCause;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.ResourceType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class AlarmNotificationListener implements OrgOpenroadmAlarmListener {
+public class AlarmNotificationListener {
private static final Logger LOG = LoggerFactory.getLogger(AlarmNotificationListener.class);
private static final String PIPE = "|";
this.dataBroker = dataBroker;
}
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(AlarmNotification.class, this::onAlarmNotification)));
+ }
/**
* Callback for alarm-notification.
*
* @param notification AlarmNotification object
*/
- @Override
- public void onAlarmNotification(AlarmNotification notification) {
+ private void onAlarmNotification(AlarmNotification notification) {
List<Nodes> allNodeList = new ArrayList<>();
InstanceIdentifier<ServiceNodelist> serviceNodeListIID = InstanceIdentifier.create(ServiceNodelist.class);
try (ReadTransaction rtx = dataBroker.newReadOnlyTransaction()) {
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
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.nodelist.Nodes;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.nodelist.NodesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev181019.AlarmNotification;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev181019.OrgOpenroadmAlarmListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev181019.alarm.ProbableCause;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev181019.resource.ResourceType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev181019.resource.resource.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class AlarmNotificationListener221 implements OrgOpenroadmAlarmListener {
+public class AlarmNotificationListener221 {
private static final Logger LOG = LoggerFactory.getLogger(AlarmNotificationListener221.class);
private static final String PIPE = "|";
this.dataBroker = dataBroker;
}
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(AlarmNotification.class, this::onAlarmNotification)));
+ }
/**
* Callback for alarm-notification.
*
* @param notification AlarmNotification object
*/
- @Override
- public void onAlarmNotification(AlarmNotification notification) {
+ private void onAlarmNotification(AlarmNotification notification) {
List<Nodes> allNodeList = new ArrayList<>();
InstanceIdentifier<ServiceNodelist> serviceNodeListIID = InstanceIdentifier.create(ServiceNodelist.class);
try {
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
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.nodelist.Nodes;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102.service.nodelist.nodelist.NodesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev200529.AlarmNotification;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev200529.OrgOpenroadmAlarmListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev200529.alarm.ProbableCause;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev200529.resource.ResourceType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev200529.resource.resource.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class AlarmNotificationListener710 implements OrgOpenroadmAlarmListener {
+public class AlarmNotificationListener710 {
private static final Logger LOG = LoggerFactory.getLogger(AlarmNotificationListener710.class);
private static final String PIPE = "|";
this.dataBroker = dataBroker;
}
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(AlarmNotification.class, this::onAlarmNotification)));
+ }
+
/**
* Callback for alarm-notification.
*
* @param notification AlarmNotification object
*/
- @Override
- public void onAlarmNotification(AlarmNotification notification) {
+ private void onAlarmNotification(AlarmNotification notification) {
List<Nodes> allNodeList = new ArrayList<>();
InstanceIdentifier<ServiceNodelist> serviceNodeListIID = InstanceIdentifier.create(ServiceNodelist.class);
try {
package org.opendaylight.transportpce.networkmodel.listeners;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev161014.OrgOpenroadmDeOperationsListener;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev161014.RestartNotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DeOperationsListener implements OrgOpenroadmDeOperationsListener {
+public class DeOperationsListener {
private static final Logger LOG = LoggerFactory.getLogger(DeOperationsListener.class);
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(RestartNotification.class, this::onRestartNotification)));
+ }
+
/**
* Callback for restart-notification.
*
* @param notification RestartNotification object
*/
- @Override
- public void onRestartNotification(RestartNotification notification) {
+ private void onRestartNotification(RestartNotification notification) {
LOG.info("Notification {} received {}", RestartNotification.QNAME, notification);
}
package org.opendaylight.transportpce.networkmodel.listeners;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev181019.OrgOpenroadmDeOperationsListener;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev181019.RestartNotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DeOperationsListener221 implements OrgOpenroadmDeOperationsListener {
+public class DeOperationsListener221 {
private static final Logger LOG = LoggerFactory.getLogger(DeOperationsListener221.class);
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(RestartNotification.class, this::onRestartNotification)));
+ }
+
/**
* Callback for restart-notification.
*
* @param notification RestartNotification object
*/
- @Override
- public void onRestartNotification(RestartNotification notification) {
+ private void onRestartNotification(RestartNotification notification) {
LOG.info("Notification {} received {}", RestartNotification.QNAME, notification);
}
package org.opendaylight.transportpce.networkmodel.listeners;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev200529.OrgOpenroadmDeOperationsListener;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.de.operations.rev200529.RestartNotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DeOperationsListener710 implements OrgOpenroadmDeOperationsListener {
+public class DeOperationsListener710 {
private static final Logger LOG = LoggerFactory.getLogger(DeOperationsListener710.class);
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(RestartNotification.class, this::onRestartNotification)));
+ }
+
/**
* Callback for restart-notification.
*
* @param notification RestartNotification object
*/
- @Override
- public void onRestartNotification(RestartNotification notification) {
+ private void onRestartNotification(RestartNotification notification) {
LOG.info("Notification {} received {}", RestartNotification.QNAME, notification);
}
package org.opendaylight.transportpce.networkmodel.listeners;
import java.util.LinkedList;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.ChangeNotification;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OtdrScanResult;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.change.notification.Edit;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.Ports;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DeviceListener121 implements OrgOpenroadmDeviceListener {
+public class DeviceListener121 {
private static final Logger LOG = LoggerFactory.getLogger(DeviceListener121.class);
private final String nodeId;
this.portMapping = portMapping;
}
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(ChangeNotification.class, this::onChangeNotification),
+ new CompositeListener.Component<>(OtdrScanResult.class, this::onOtdrScanResult)
+ ));
+ }
+
/**
* Callback for change-notification.
*
* @param notification ChangeNotification object
*/
- @Override
- public void onChangeNotification(ChangeNotification notification) {
+
+ void onChangeNotification(ChangeNotification notification) {
if (notification.getEdit() == null) {
LOG.warn("unable to handle {} notificatin received - list of edit is null", ChangeNotification.QNAME);
return;
*
* @param notification OtdrScanResult object
*/
- @Override
- public void onOtdrScanResult(OtdrScanResult notification) {
+ private void onOtdrScanResult(OtdrScanResult notification) {
LOG.info("Notification {} received {}", OtdrScanResult.QNAME, notification);
}
package org.opendaylight.transportpce.networkmodel.listeners;
import java.util.LinkedList;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.CreateTechInfoNotification;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OrgOpenroadmDeviceListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OtdrScanResult;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.change.notification.Edit;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.Ports;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DeviceListener221 implements OrgOpenroadmDeviceListener {
+public class DeviceListener221 {
private static final Logger LOG = LoggerFactory.getLogger(DeviceListener221.class);
private final String nodeId;
this.portMapping = portMapping;
}
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(ChangeNotification.class, this::onChangeNotification),
+ new CompositeListener.Component<>(CreateTechInfoNotification.class, this::onCreateTechInfoNotification),
+ new CompositeListener.Component<>(OtdrScanResult.class, this::onOtdrScanResult)
+ ));
+ }
+
/**
* Callback for change-notification.
*
* @param notification
* ChangeNotification object
*/
- @Override
- public void onChangeNotification(ChangeNotification notification) {
+ void onChangeNotification(ChangeNotification notification) {
LOG.info("notification received from device {}: {}", this.nodeId, notification.toString());
if (notification.getEdit() == null) {
LOG.warn("unable to handle {} notificatin received - list of edit is null", ChangeNotification.QNAME);
}
}
- @Override
- public void onCreateTechInfoNotification(CreateTechInfoNotification notification) {
+ private void onCreateTechInfoNotification(CreateTechInfoNotification notification) {
}
/**
* @param notification
* OtdrScanResult object
*/
- @Override
- public void onOtdrScanResult(OtdrScanResult notification) {
+ private void onOtdrScanResult(OtdrScanResult notification) {
LOG.info("Notification {} received {}", OtdrScanResult.QNAME, notification);
}
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.CreateTechInfoNotification;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OrgOpenroadmDeviceListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OtdrScanResult;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.change.notification.Edit;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.pack.Ports;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DeviceListener710 implements OrgOpenroadmDeviceListener {
+public class DeviceListener710 {
private static final Logger LOG = LoggerFactory.getLogger(DeviceListener710.class);
private final String nodeId;
this.portMapping = portMapping;
}
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(ChangeNotification.class, this::onChangeNotification),
+ new CompositeListener.Component<>(CreateTechInfoNotification.class, this::onCreateTechInfoNotification),
+ new CompositeListener.Component<>(OtdrScanResult.class, this::onOtdrScanResult)
+ ));
+ }
+
/**
* Callback for change-notification.
*
* @param notification
* ChangeNotification object
*/
- @Override
- public void onChangeNotification(ChangeNotification notification) {
+ void onChangeNotification(ChangeNotification notification) {
LOG.debug("device71 notification received = {}", notification);
if (notification.getEdit() == null) {
LOG.warn("unable to handle {} notificatin received - list of edit is null", ChangeNotification.QNAME);
}
}
- @Override
- public void onCreateTechInfoNotification(CreateTechInfoNotification notification) {
+ private void onCreateTechInfoNotification(CreateTechInfoNotification notification) {
}
/**
* @param notification
* OtdrScanResult object
*/
- @Override
- public void onOtdrScanResult(OtdrScanResult notification) {
+ private void onOtdrScanResult(OtdrScanResult notification) {
LOG.info("Notification {} received {}", OtdrScanResult.QNAME, notification);
}
import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
package org.opendaylight.transportpce.networkmodel.listeners;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.tca.rev161014.OrgOpenroadmTcaListener;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.tca.rev161014.TcaNotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class TcaListener implements OrgOpenroadmTcaListener {
+public class TcaListener {
private static final Logger LOG = LoggerFactory.getLogger(TcaListener.class);
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(TcaNotification.class, this::onTcaNotification)));
+ }
+
/**
* Callback for tca-notification.
* @param notification TcaNotification object
*/
- @Override
- public void onTcaNotification(TcaNotification notification) {
+ private void onTcaNotification(TcaNotification notification) {
LOG.info("Notification {} received {}", TcaNotification.QNAME, notification);
}
package org.opendaylight.transportpce.networkmodel.listeners;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.tca.rev181019.OrgOpenroadmTcaListener;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.tca.rev181019.TcaNotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class TcaListener221 implements OrgOpenroadmTcaListener {
+public class TcaListener221 {
private static final Logger LOG = LoggerFactory.getLogger(TcaListener221.class);
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(TcaNotification.class, this::onTcaNotification)));
+ }
+
/**
* Callback for tca-notification.
* @param notification TcaNotification object
*/
- @Override
- public void onTcaNotification(TcaNotification notification) {
+ private void onTcaNotification(TcaNotification notification) {
LOG.info("Notification {} received {}", TcaNotification.QNAME, notification);
}
package org.opendaylight.transportpce.networkmodel.listeners;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.tca.rev200327.OrgOpenroadmTcaListener;
+import java.util.Set;
+import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.tca.rev200327.TcaNotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class TcaListener710 implements OrgOpenroadmTcaListener {
+public class TcaListener710 {
private static final Logger LOG = LoggerFactory.getLogger(TcaListener710.class);
+ public CompositeListener getCompositeListener() {
+ return new CompositeListener(Set.of(
+ new CompositeListener.Component<>(TcaNotification.class, this::onTcaNotification)));
+ }
+
/**
* Callback for tca-notification.
* @param notification TcaNotification object
*/
- @Override
- public void onTcaNotification(TcaNotification notification) {
+ private void onTcaNotification(TcaNotification notification) {
LOG.info("Notification {} received {}", TcaNotification.QNAME, notification);
}
import java.util.List;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
import org.opendaylight.yangtools.yang.common.Uint32;
/**
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChangesBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChangesKey;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1;
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.TerminationPointKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPoint;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.osgi.service.component.annotations.Activate;
package org.opendaylight.transportpce.networkmodel.util;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1Builder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
import com.google.common.collect.ImmutableMap;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev230526.Node1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.transportpce.networkmodel.dto.OtnTopoNode;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
import org.opendaylight.transportpce.common.fixedflex.GridUtils;
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.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.transportpce.common.NetworkUtils;
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.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.ConnectionOper.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.connection.oper.AvailableCapabilities;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.connection.oper.AvailableCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.connection.oper.available.capabilities.AvailableCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.connection.oper.available.capabilities.AvailableCapabilityBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.credentials.credentials.LoginPasswordBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.connection.oper.AvailableCapabilities;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.connection.oper.AvailableCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.connection.oper.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.connection.oper.available.capabilities.AvailableCapabilityBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.credentials.credentials.LoginPasswordBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.change.notification.Edit;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.change.notification.Edit;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.transportpce.common.mapping.PortMapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.ChangeNotification;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.change.notification.Edit;
import org.opendaylight.mdsal.binding.api.DataObjectModification;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
@ExtendWith(MockitoExtension.class)
import static org.junit.jupiter.api.Assertions.assertNull;
import org.junit.jupiter.api.Test;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev191129.Node1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.transportpce.networkmodel.util.test.JsonUtil;
import org.opendaylight.transportpce.networkmodel.util.test.NetworkmodelTestUtil;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
import org.opendaylight.transportpce.networkmodel.util.test.NetworkmodelTestUtil;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import java.util.Set;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.Interface1;
LOG.info("Spanloss TX is {}", spanLossTx);
// TODO: The span-loss limits should be obtained from optical specifications
- if (spanLossTx == null || spanLossTx.intValue() <= 0 || spanLossTx.intValue() > 27) {
- LOG.error("Power Value is null: spanLossTx null or out of openROADM range ]0,27] {}",
+ if (spanLossTx == null || spanLossTx.intValue() < 0 || spanLossTx.intValue() > 27) {
+ LOG.error("Power Value is null: spanLossTx null or out of openROADM range [0,27] {}",
spanLossTx);
return false;
}
import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
import org.opendaylight.transportpce.common.device.DeviceTransaction;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.OpticalControlMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.PowerDBm;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.calculate.spanloss.base.output.Spans;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.calculate.spanloss.base.output.SpansBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
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.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.transportpce.olm.util.OlmPowerServiceRpcImplUtil;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
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.device.rev170206.interfaces.grp.Interface;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.CurrentPmlist;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.CurrentPmlistBuilder;
.build();
}
- public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network
+ public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network
.Nodes getMappingNodeTpdr(String nodeId, OpenroadmNodeVersion nodeVersion, List<String> lcps) {
Map<MappingKey, Mapping> mappings = new HashMap<>();
for (String lcp:lcps) {
.build();
mappings.put(mapping.key(), mapping);
}
- return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network
+ return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network
.NodesBuilder()
.setNodeId(nodeId)
.setNodeInfo(new NodeInfoBuilder()
.build();
}
- public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network
+ public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network
.Nodes getMappingNodeRdm(String nodeId, OpenroadmNodeVersion nodeVersion, List<String> lcps) {
Map<MappingKey, Mapping> mappings = new HashMap<>();
for (String lcp:lcps) {
}
mappings.put(mappingBldr.build().key(), mappingBldr.build());
}
- return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network
+ return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network
.NodesBuilder()
.setNodeId(nodeId)
.setNodeInfo(new NodeInfoBuilder()
.build();
}
- public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network
+ public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network
.Nodes getMappingNodeIla() {
- return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network
+ return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network
.NodesBuilder()
.setNodeId("ila node")
.setNodeInfo(new NodeInfoBuilder()
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.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction;
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.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-artifacts</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<scope>import</scope>
<type>pom</type>
</dependency>
*/
package org.opendaylight.transportpce.pce;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInput;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.transportpce.pce.graph.PceGraph;
import org.opendaylight.transportpce.pce.networkanalyzer.PceCalculation;
import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PceConstraintMode;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.reroute.request.input.Endpoints;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PceConstraintMode;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.reroute.request.input.Endpoints;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.routing.constraints.HardConstraints;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirection;
}
LOG.info("PceGraph ...");
PceGraph graph = new PceGraph(nwAnalizer.getaendPceNode(), nwAnalizer.getzendPceNode(),
- nwAnalizer.getAllPceNodes(), nwAnalizer.getAllPceLinks(), hardConstraints, softConstraints,
+ nwAnalizer.getAllPceNodes(), nwAnalizer.getAllPceLinks(), hardConstraints,
rc, serviceType, networkTransaction, mode);
graph.calcPath();
rc = graph.getReturnStructure();
private PceGraph patchRerunGraph(PceGraph graph) {
LOG.info("In pathComputation patchRerunGraph : rerun Graph with metric = PROPAGATION-DELAY ");
- graph.setConstrains(pceHardConstraints, pceSoftConstraints);
+ graph.setConstrains(pceHardConstraints);
graph.calcPath();
return graph;
}
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.pce.constraints.PceConstraints.ResourcePair;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.Constraints;
import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.constraints.CoRouting;
import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.SynchronizationBuilder;
import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.synchronization.Svec;
import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.synchronization.SvecBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev230526.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirection;
import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.generic.path.properties.path.properties.PathRouteObjects;
import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.service.PathRequest;
import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.Synchronization;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.routing.constraints.HardConstraints;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirectionBuilder;
import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
import org.opendaylight.transportpce.pce.networkanalyzer.PceResult.LocalCause;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PceConstraintMode;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PceConstraintMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
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.topology.rev180226.LinkId;
private String serviceType = "";
private Double margin = null;
PceConstraints pceHardConstraints;
- PceConstraints pceSoftConstraints;
private PceConstraintMode pceConstraintMode;
// results
private final NetworkTransactionService networkTransactionService;
public PceGraph(PceNode aendNode, PceNode zendNode, Map<NodeId, PceNode> allPceNodes,
- Map<LinkId, PceLink> allPceLinks, PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints,
- PceResult pceResult, String serviceType, NetworkTransactionService networkTransactionService,
- PceConstraintMode mode) {
+ Map<LinkId, PceLink> allPceLinks, PceConstraints pceHardConstraints,PceResult pceResult, String serviceType,
+ NetworkTransactionService networkTransactionService, PceConstraintMode mode) {
super();
this.apceNode = aendNode;
this.zpceNode = zendNode;
this.allPceLinks = allPceLinks;
this.pceResult = pceResult;
this.pceHardConstraints = pceHardConstraints;
- this.pceSoftConstraints = pceSoftConstraints;
this.serviceType = serviceType;
this.networkTransactionService = networkTransactionService;
this.pceConstraintMode = mode;
return margin;
}
- public void setConstrains(PceConstraints pceHardConstraintsInput, PceConstraints pceSoftConstraintsInput) {
+ public void setConstrains(PceConstraints pceHardConstraintsInput) {
this.pceHardConstraints = pceHardConstraintsInput;
- this.pceSoftConstraints = pceSoftConstraintsInput;
}
}
import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PceConstraintMode;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.SpectrumAssignment;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.SpectrumAssignmentBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PceConstraintMode;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.SpectrumAssignment;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.SpectrumAssignmentBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmLinkType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserve;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.TransportpcePceService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserve;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequest;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequest;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.TransportpcePceService;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.Rpc;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.transportpce.common.service.ServiceTypes;
import org.opendaylight.transportpce.pce.PceComplianceCheck;
import org.opendaylight.transportpce.pce.constraints.PceConstraints;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.reroute.request.input.Endpoints;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.reroute.request.input.Endpoints;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mc.capabilities.McCapabilities;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.transportpce.common.fixedflex.GridConstant;
import org.opendaylight.transportpce.common.mapping.PortMapping;
import org.opendaylight.transportpce.pce.SortPortsByName;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.reroute.request.input.Endpoints;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.reroute.request.input.Endpoints;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
package org.opendaylight.transportpce.pce.service;
import com.google.common.util.concurrent.ListenableFuture;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutput;
/**
* Path Computation Service.
import org.opendaylight.transportpce.pce.gnpy.GnpyResult;
import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumer;
import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.result.Response;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.ServicePathRpcResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.ServicePathRpcResultBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.gnpy.GnpyResponse;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.gnpy.GnpyResponseBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.gnpy.gnpy.response.response.type.NoPathCaseBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.gnpy.gnpy.response.response.type.PathCaseBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.performance.PathPropertiesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.performance.path.properties.PathMetric;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.performance.path.properties.PathMetricBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResult;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResultBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.gnpy.GnpyResponse;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.gnpy.GnpyResponseBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.gnpy.gnpy.response.response.type.NoPathCaseBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.gnpy.gnpy.response.response.type.PathCaseBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.performance.PathPropertiesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.performance.path.properties.PathMetric;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.performance.path.properties.PathMetricBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirection;
import org.opendaylight.transportpce.pce.utils.PceTestData;
import org.opendaylight.transportpce.pce.utils.PceTestUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
@ExtendWith(MockitoExtension.class)
import org.opendaylight.transportpce.test.converter.JSONDataObjectConverter;
import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
import org.opendaylight.transportpce.test.stub.MountPointStub;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PceConstraintMode;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PceConstraintMode;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.port.PortBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev230526.OpenroadmVersionType;
private static final String MAPPING_FILE = "src/test/resources/topologyData/portMapping2.json";
private static OperationalModeCatalog omCatalog;
private static org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.portmapping.rev220922.Network networkNode;
+ .transportpce.portmapping.rev231221.Network networkNode;
private DataBroker dataBroker;
private MountPoint mountPoint;
private MountPointService mountPointService;
try (Reader reader = new FileReader(MAPPING_FILE, StandardCharsets.UTF_8)) {
NormalizedNode normalizedNode = dataObjectConverter.transformIntoNormalizedNode(reader).orElseThrow();
networkNode = (org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.portmapping.rev220922.Network) getDataStoreContextUtil()
+ .transportpce.portmapping.rev231221.Network) getDataStoreContextUtil()
.getBindingDOMCodecServices()
.fromNormalizedNode(
YangInstanceIdentifier.of(org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.portmapping.rev220922.Network.QNAME), normalizedNode)
+ .transportpce.portmapping.rev231221.Network.QNAME), normalizedNode)
.getValue();
@NonNull
WriteTransaction newWriteOnlyTransaction = dataBroker.newWriteOnlyTransaction();
newWriteOnlyTransaction
.put(LogicalDatastoreType.CONFIGURATION,
InstanceIdentifier.create(org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.portmapping.rev220922.Network.class),
+ .transportpce.portmapping.rev231221.Network.class),
networkNode);
newWriteOnlyTransaction.commit().get();
} catch (IOException e) {
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_100GE_T, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_100GE_T, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(3.0919881995992924));
}
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_OTUC2, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_OTUC2, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(1.1559963686478447));
}
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_OTUC3, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_OTUC3, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(0.3351048800367167));
}
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_400GE, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_400GE, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), false);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(0.0));
}
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_400GE, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_400GE, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(1.4432381874659086));
}
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_OTUC4, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_OTUC4, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(1.4432381874659086));
}
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_OTUC4, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_OTUC4, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(0.0));
}
pceCalc.retrievePceNetwork();
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_100GE_T, netTransServ, PceConstraintMode.Loose);
+ rc, StringConstants.SERVICE_TYPE_100GE_T, netTransServ, PceConstraintMode.Loose);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getmargin()), Optional.ofNullable(3.0919881995992924));
}
pceHardConstraints.setPceMetrics(PceMetric.PropagationDelay);
pceGraph = new PceGraph(pceCalc.getaendPceNode(), pceCalc.getzendPceNode(),
pceCalc.getAllPceNodes(), pceCalc.getAllPceLinks(), pceHardConstraints,
- null, rc, StringConstants.SERVICE_TYPE_100GE_T, netTransServ, PceConstraintMode.Loose);
- pceGraph.setConstrains(pceHardConstraints, null);
+ rc, StringConstants.SERVICE_TYPE_100GE_T, netTransServ, PceConstraintMode.Loose);
+ pceGraph.setConstrains(pceHardConstraints);
assertEquals(pceGraph.calcPath(), true);
assertEquals(Optional.ofNullable(pceGraph.getPathAtoZ().get(2).getLatency()),
allPceNodes = Map.of(
new NodeId("optical"), pceOtnNode,
new NodeId("optical2"), pceOtnNode2);
- return new PceGraph(pceOtnNode, pceOtnNode2, allPceNodes, allPceLinks, pceHardConstraints, null,
+ return new PceGraph(pceOtnNode, pceOtnNode2, allPceNodes, allPceLinks, pceHardConstraints,
new PceResult(), type, null, PceConstraintMode.Loose);
}
import org.opendaylight.transportpce.pce.utils.PceTestUtils;
import org.opendaylight.transportpce.pce.utils.TransactionUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveInputBuilder;
@ExtendWith(MockitoExtension.class)
public class PceServiceRPCImplTest extends AbstractTest {
import org.opendaylight.transportpce.pce.utils.PceTestUtils;
import org.opendaylight.transportpce.pce.utils.TransactionUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
@ExtendWith(MockitoExtension.class)
import java.util.Map;
import java.util.Set;
import org.opendaylight.transportpce.common.ResponseCodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.reroute.request.input.EndpointsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.reroute.request.input.EndpointsBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommon;
.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
.setRequestId("request1")
.build())
- .setServiceAEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ .setServiceAEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceAEndBuilder()
.setServiceFormat(ServiceFormat.Ethernet)
.setServiceRate(Uint32.valueOf(100))
.build())
.build())
.build())
- .setServiceZEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ .setServiceZEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceZEndBuilder()
.setServiceFormat(ServiceFormat.Ethernet)
.setServiceRate(Uint32.valueOf(0))
.setRequestId("request 1")
.build())
.setPceRoutingMetric(PceMetric.HopCount)
- .setServiceAEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ .setServiceAEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceAEndBuilder()
.setServiceRate(Uint32.valueOf(100))
.setServiceFormat(ServiceFormat.Ethernet)
.setNodeId("XPONDER-1-2")
.build())
- .setServiceZEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ .setServiceZEnd(new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceZEndBuilder()
.setServiceRate(Uint32.valueOf(0))
.setServiceFormat(ServiceFormat.Ethernet)
import org.opendaylight.transportpce.test.DataStoreContext;
import org.opendaylight.transportpce.test.converter.DataObjectConverter;
import org.opendaylight.transportpce.test.converter.XMLDataObjectConverter;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZKey;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.Node;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.fixedflex.GridUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.RatioDB;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1Builder;
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>13.0.7</version>
+ <version>13.0.10</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
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.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.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.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.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.ModulationFormat;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.TrailTraceOther.TimDetectMode;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.ParentOduAllocationBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.parent.odu.allocation.trib.slots.choice.OpucnBuilder;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OpucnTribSlotDef;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev171215.AdminStates;
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.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.ParentOduAllocationBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.attributes.rev200327.parent.odu.allocation.parent.odu.allocation.trib.slots.choice.OpucnBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev200529.Off;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollback;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollbackBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollbackKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.Topology;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
"Service compliant, submitting service implementation Request ...");
Uint32 serviceRate = getServiceRate(input);
LOG.info("Using {}G rate", serviceRate);
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221
.network.Nodes mappingNode =
portMapping.isNodeExist(input.getServiceAEnd().getNodeId())
? portMapping.getNode(input.getServiceAEnd().getNodeId())
.setNodes(this.powerSetupInput.getNodes())
.setServiceName(this.powerSetupInput.getServiceName())
.setWaveNumber(this.powerSetupInput.getWaveNumber())
+ .setLowerSpectralSlotNumber(this.powerSetupInput.getLowerSpectralSlotNumber())
+ .setHigherSpectralSlotNumber(this.powerSetupInput.getHigherSpectralSlotNumber())
.build();
Future<RpcResult<ServicePowerTurndownOutput>> powerTurndownResultFuture =
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.rev220922.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
public class OpenRoadMInterface221Test extends AbstractTest {
import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.CreateOtsOmsOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.nodes.NodeInfoBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class DeviceRendererServiceImplCreateOtsOmsTest extends AbstractTest {
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
import org.opendaylight.transportpce.test.stub.MountPointStub;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.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;
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.HashMap;
import java.util.Map;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceAEnd;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceZEnd;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
.build();
}
- public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceAEnd createServiceAEndReroute(ServiceEndpoint serviceAEnd) {
- return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceAEndBuilder()
.setClli(serviceAEnd.getClli())
.setNodeId(serviceAEnd.getNodeId().getValue())
.build();
}
- public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceZEnd createServiceZEndReroute(ServiceEndpoint serviceZEnd) {
- return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.path.computation.reroute.request.input.ServiceZEndBuilder()
.setClli(serviceZEnd.getClli())
.setNodeId(serviceZEnd.getNodeId().getValue())
import org.opendaylight.transportpce.servicehandler.validation.ServiceCreateValidation;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.reroute.request.input.EndpointsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.reroute.request.input.EndpointsBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.RpcActions;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ServiceNotificationTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommon;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZKey;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.Rpc;
public final ListenableFuture<RpcResult<ServiceDeleteOutput>> serviceDelete(ServiceDeleteInput input) {
String serviceName = input.getServiceDeleteReqInfo().getServiceName();
LOG.info("RPC serviceDelete request received for {}", serviceName);
-
/*
* Upon receipt of service-deleteService RPC, service header and sdnc-request
* header compliance are verified.
input, ResponseCodes.FINAL_ACK_YES,
LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED);
}
-
//Check presence of service to be deleted
Optional<Services> serviceOpt = this.serviceDataStoreOperations.getService(serviceName);
Services service;
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutput output =
this.rendererServiceWrapper.performRenderer(
serviceDeleteInput, ServiceNotificationTypes.ServiceDeleteResult, service);
-
if (output == null) {
LOG.error(SERVICE_DELETE_MSG, LogMessages.RENDERER_DELETE_FAILED);
sendNbiNotification(new PublishNotificationProcessServiceBuilder()
import org.opendaylight.transportpce.servicehandler.ServiceInput;
import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.ServicePathRpcResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResult;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.ResponseParametersBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.rpc.result.PathComputationResultBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.rpc.result.path.computation.result.AToZBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.rpc.result.path.computation.result.ZToABuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
.setResponseFailed("")
.setMessage("Temp Service implemented")
.setAToZ(
- new org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service
+ new org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service
.AToZBuilder()
.setFrequency(serviceRpcResult.getPathComputationResult().getAToZ().getFrequency())
.setWidth(serviceRpcResult.getPathComputationResult().getAToZ().getWidth())
// TODO: add GNSR, OSNR, min/max output powers
.build())
.setZToA(
- new org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service
+ new org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service
.ZToABuilder()
.setFrequency(serviceRpcResult.getPathComputationResult().getZToA().getFrequency())
.setWidth(serviceRpcResult.getPathComputationResult().getZToA().getWidth())
* @param notification RendererRpcResultSp
* @param type ServiceNotificationTypes
*/
- private void sendServiceHandlerNotification(RendererRpcResultSp notification, ServiceNotificationTypes type) {
+ private void sendServiceHandlerNotification(
+ RendererRpcResultSp notification, ServiceNotificationTypes type) {
try {
ServiceRpcResultSh serviceHandlerNotification = new ServiceRpcResultShBuilder()
.setAToZDirection(notification.getAToZDirection())
} else {
deleteServiceOperationResult = this.serviceDataStoreOperations.deleteService(serviceName);
}
- if (deleteServiceOperationResult.isSuccess()) {
+ if (!deleteServiceOperationResult.isSuccess()) {
LOG.warn("{}Service was not removed from datastore!", serviceType);
}
}
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmServiceBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.opendaylight.transportpce.common.ResponseCodes;
import org.opendaylight.transportpce.pce.service.PathComputationService;
import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.reroute.request.input.Endpoints;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.reroute.request.input.EndpointsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.reroute.request.input.Endpoints;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.reroute.request.input.EndpointsBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultSh;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultShBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ServiceEndpoint;
import java.util.Optional;
import org.opendaylight.transportpce.common.OperationResult;
import org.opendaylight.transportpce.servicehandler.ServiceInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
* @return result of createTempService operation
*/
OperationResult createTempService(TempServiceCreateInput tempServiceCreateInput,
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.service.path.rpc.result.PathDescription pathDescription);
Optional<ServicePathList> getServicePaths();
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
import org.opendaylight.transportpce.servicehandler.ServiceInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
@Override
public OperationResult createTempService(
TempServiceCreateInput tempServiceCreateInput,
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
.service.path.rpc.result.PathDescription pathDescription) {
LOG.debug("Writing '{}' Temp Service", tempServiceCreateInput.getCommonId());
try {
import org.opendaylight.transportpce.common.ResponseCodes;
import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.sdnc.request.header.SdncRequestHeaderBuilder;
import org.opendaylight.transportpce.servicehandler.utils.CatalogDataUtils;
import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRerouteRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmServiceBuilder;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint8;
import org.opendaylight.transportpce.pce.service.PathComputationService;
import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.CancelResourceReserveOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.CancelResourceReserveOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ServiceNotificationTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommon;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
import org.opendaylight.transportpce.servicehandler.ServiceInput;
import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommon;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import com.google.common.util.concurrent.ListenableFuture;
import org.opendaylight.transportpce.servicehandler.ServiceInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceAEnd;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceZEnd;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.path.computation.request.input.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.PathComputationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.ServicePathRpcResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.ServicePathRpcResultBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResult;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResultBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSp;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSpBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultSh;
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>6.0.5</version>
+ <version>6.0.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>tapi-2.1.1</artifactId>
+ <artifactId>tapi-2.4.0</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Protocols;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.nbr.list.IfName;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.Direction;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+ "DestDegId: {}, DestTPId: {}", nodeId.getValue(), srcDegId, srcTpTx, destNodeId, destDegId, destTpRx);
Link omsLink = this.tapiLink.createTapiLink(nodeId.getValue(), srcTpTx, destNodeId.getValue(), destTpTx,
TapiStringConstants.OMS_RDM_RDM_LINK, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
this.tapiLink.getAdminState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
this.tapiLink.getOperState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
LOG.info("Tapi R2R Link OMS link created = {}", omsLink);
+ LOG.debug("inputAdminstate= {}, inputoperstate = {}",
+ this.tapiLink.getAdminState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
+ this.tapiLink.getOperState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx));
return omsLink;
}
public static final String E_OTSI = "eOTSi";
public static final String I_OTSI = "iOTSi";
public static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
+ public static final String PHTNC_MEDIA_OTS = "PHOTONIC_MEDIA_OTS";
+ public static final String PHTNC_MEDIA_OMS = "PHOTONIC_MEDIA_OMS";
public static final String MC = "MEDIA_CHANNEL";
public static final String OTSI_MC = "OTSi_MEDIA_CHANNEL";
public static final String RDM_INFRA = "ROADM-infra";
public static final String CLIENT = "-CLIENT";
public static final String NETWORK = "-NETWORK";
- public static final String XPDR = "-XPDR";
+ public static final String XPDR = "XPONDER";
+ public static final String XXPDR = "-XPDR";
public static final String TP = "TerminationPoint";
public static final String NODE = "Node";
public static final String LGX_PORT_NAME = "Some lgx-port-name";
*/
package org.opendaylight.transportpce.tapi.connectivity;
+import java.math.BigDecimal;
+import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import org.opendaylight.transportpce.tapi.utils.GenericServiceEndpoint;
import org.opendaylight.transportpce.tapi.utils.ServiceEndpointType;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.equipment.types.rev191129.OpticTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.BandwidthProfileBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ProtectionRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.CapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ProtectionRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ParentNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ParentNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.CapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIERMC;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Decimal64;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint64;
private final ServiceDataStoreOperations serviceDataStoreOperations;
private final TapiContext tapiContext;
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> sipMap;
- private final Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection>
+ private final Map<
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection>
connectionFullMap; // this variable is for complete connection objects
private final NetworkTransactionService networkTransactionService;
private Connection topConnRdmRdm;
.build();
}
- private static ServiceAEnd getServiceAEnd(GenericServiceEndpoint sepA, GenericServiceEndpoint sepZ) {
- if (sepA.getType().equals(ServiceEndpointType.SERVICEAEND)) {
- return new ServiceAEndBuilder(sepA.getValue()).build();
- } else if (sepZ.getType().equals(ServiceEndpointType.SERVICEAEND)) {
- return new ServiceAEndBuilder(sepZ.getValue()).build();
- } else {
- return null;
- }
- }
-
- private static ServiceZEnd getServiceZEnd(GenericServiceEndpoint sepA, GenericServiceEndpoint sepZ) {
- if (sepA.getType().equals(ServiceEndpointType.SERVICEZEND)) {
- return new ServiceZEndBuilder(sepA.getValue()).build();
- } else if (sepZ.getType().equals(ServiceEndpointType.SERVICEZEND)) {
- return new ServiceZEndBuilder(sepZ.getValue()).build();
- } else {
- return null;
- }
- }
-
public void setSipMap(Map<ServiceInterfacePointKey, ServiceInterfacePoint> sips) {
this.sipMap = sips;
}
.build();
// Connection creation
Map<ConnectionKey, Connection> connMap =
- createConnectionsFromService(serviceAEnd, serviceZEnd, pathDescription);
+ createConnectionsFromService(pathDescription, mapServiceLayerToAend(serviceAEnd));
+ LOG.debug("connectionMap for service {} = {} ", name.toString(), connMap.toString());
+ ConnectivityConstraint conConstr =
+ new ConnectivityConstraintBuilder().setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).build();
// TODO: full connectivity service?? With constraints and the rest of fields...
return new ConnectivityServiceBuilder()
.setAdministrativeState(AdministrativeState.UNLOCKED)
.setLifecycleState(LifecycleState.INSTALLED)
.setUuid(new Uuid(UUID.nameUUIDFromBytes(service.getServiceName().getBytes(StandardCharsets.UTF_8))
.toString()))
- .setServiceLayer(mapServiceLayer(serviceAEnd.getServiceFormat(), endPoint1, endPoint2))
- .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
- .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL)
+ .setLayerProtocolName(mapServiceLayer(serviceAEnd.getServiceFormat(), endPoint1, endPoint2))
+ .setConnectivityConstraint(conConstr)
+ .setDirection(ForwardingDirection.BIDIRECTIONAL)
.setName(Map.of(name.key(), name))
.setConnection(connMap)
.setEndPoint(endPointMap)
.build();
}
- private LayerProtocolName mapServiceLayer(ServiceFormat serviceFormat, EndPoint endPoint1, EndPoint endPoint2) {
- switch (serviceFormat) {
- case OC:
- case OTU:
- return LayerProtocolName.PHOTONICMEDIA;
- case ODU:
- return LayerProtocolName.ODU;
- case Ethernet:
- String node1 = endPoint1.getLocalId();
- String node2 = endPoint2.getLocalId();
- if (getOpenroadmType(node1).equals(OpenroadmNodeType.TPDR)
- && getOpenroadmType(node2).equals(OpenroadmNodeType.TPDR)) {
- return LayerProtocolName.ETH;
- }
- return LayerProtocolName.DSR;
- default:
- LOG.info("Service layer mapping not supported for {}", serviceFormat.getName());
- }
- return null;
- }
-
- private OpenroadmNodeType getOpenroadmType(String nodeName) {
- LOG.info("Node name = {}", nodeName);
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",nodeName, TapiStringConstants.DSR))
- .getBytes(StandardCharsets.UTF_8)).toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node tapiNode
- = this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid);
- if (tapiNode != null) {
- return OpenroadmNodeType.forName(tapiNode.getName().get(new NameKey("Node Type"))
- .getValue());
- }
- return null;
- }
-
- private Map<ConnectionKey, Connection> createConnectionsFromService(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.ServiceAEnd
- serviceAEnd,
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.ServiceZEnd
- serviceZEnd,
- PathDescription pathDescription) {
+ public Map<ConnectionKey, Connection> createConnectionsFromService(PathDescription pathDescription,
+ LayerProtocolName lpn) {
Map<ConnectionKey, Connection> connectionServMap = new HashMap<>();
// build lists with ROADM nodes, XPDR/MUX/SWITCH nodes, ROADM DEG TTPs, ROADM SRG TTPs, XPDR CLIENT TTPs
// and XPDR NETWORK TTPs (if any). From the path description. This will help to build the uuid of the CEPs
}
// create corresponding CEPs and Connections. Connections should be added to the corresponding context
// CEPs must be included in the topology context as an augmentation for each ONEP!!
- ServiceFormat serviceFormat = serviceAEnd.getServiceFormat(); // should be equal to serviceZEnd
// TODO -> Maybe we dont need to create the connections and ceps if the previous service doesnt exist??
// As mentioned above, for 100GbE service creation there are ROADMs in the path description.
// What are the configurations needed here? No OTU, ODU... what kind of cross connections is needed?
// this needs to be changed
// TODO: OpenROADM getNodeType from the NamesList to verify what needs to be created
OpenroadmNodeType openroadmNodeType = getOpenRoadmNodeType(xpdrNodelist);
- switch (serviceFormat) {
- case OC:
+ switch (lpn) {
+ case PHOTONICMEDIA:
// Identify number of ROADMs
// - XC Connection between MC CEPs mapped from MC NEPs (within a roadm)
// - XC Connection between OTSiMC CEPs mapped from OTSiMC NEPs (within a roadm)
// - Top Connection OTSiMC betwwen OTSiMC CEPs of extreme roadms
connectionServMap.putAll(createRoadmCepsAndConnections(rdmAddDropTplist, rdmDegTplist, rdmNodelist,
edgeRoadm1, edgeRoadm2));
- break;
- case OTU:
- // Identify number of ROADMs between XPDRs and check if OC is created
- // - XC Connection between MC CEPs mapped from MC NEPs (within a roadm)
- // - Top Connection MC betwwen MC CEPs of different roadms
- // - XC Connection between OTSiMC CEPs mapped from OTSiMC NEPs (within a roadm)
- // - Top Connection OTSiMC betwwen OTSiMC CEPs of different roadms
- connectionServMap.putAll(createRoadmCepsAndConnections(rdmAddDropTplist, rdmDegTplist, rdmNodelist,
- edgeRoadm1, edgeRoadm2));
- // - XC Connection OTSi betwwen iOTSi y eOTSi of xpdr
- // - Top connection OTSi between network ports of xpdrs in the Photonic media layer -> i_OTSi
- connectionServMap.putAll(createXpdrCepsAndConnectionsPht(xpdrNetworkTplist, xpdrNodelist));
+ if (!pathDescription.getAToZDirection().getAToZ().values().stream().findFirst().orElseThrow().getId()
+ .contains("ROADM")) {
+ // - XC Connection OTSi betwwen iOTSi y eOTSi of xpdr
+ // - Top connection OTSi between network ports of xpdrs in the Photonic media layer -> i_OTSi
+ connectionServMap.putAll(createXpdrCepsAndConnectionsPht(xpdrNetworkTplist, xpdrNodelist));
+ }
this.topConnRdmRdm = null;
break;
case ODU:
this.topConnXpdrXpdrPhtn = null;
}
break;
- case Ethernet:
+ case ETH:
// Check if OC, OTU and ODU are created
if (openroadmNodeType.equals(OpenroadmNodeType.TPDR)) {
LOG.info("WDM ETH service");
connectionServMap));
this.topConnXpdrXpdrPhtn = null;
}
+ break;
+ case DSR:
+ LOG.info("OTN XGE/ODUe service");
+ // - XC connection between iODU and eODU
+ // - Top connection between eODU ports
+ // - Top connection between DSR ports
if (openroadmNodeType.equals(OpenroadmNodeType.SWITCH)) {
// TODO: We create both ODU and DSR because there is no ODU service creation for the switch
- // - XC Connection OTSi betwwen iODU and eODU of xpdr
+ // - XC Connection OTSi between iODU and eODU of xpdr
// - Top connection in the ODU layer, between xpdr eODU ports (?)
connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNetworkTplist,
xpdrNodelist));
default:
LOG.error("Service type format not supported");
}
+ LOG.debug("CONNSERVERMAP = {}", connectionServMap.toString());
return connectionServMap;
}
+ public void updateTopologyWithNep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, OwnedNodeEdgePoint onep) {
+ // TODO: verify this is correct. Should we identify the context IID with the context UUID??
+ InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
+ .child(Topology.class, new TopologyKey(topoUuid))
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
+ new NodeKey(nodeUuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
+ .build();
+ try {
+ Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onepIID).get();
+ if (optionalOnep.isPresent()) {
+ LOG.error("ONEP is already present in datastore");
+ return;
+ }
+ // merge in datastore
+ this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, onepIID,
+ onep);
+ this.networkTransactionService.commit().get();
+ LOG.info("NEP {} added successfully.", onep.getName().toString());
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Couldnt put NEP {} in topology, error = ", onep.getName().toString(), e);
+ }
+ }
+
+ public Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
+ .connectivity.context.ConnectionKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
+ .connectivity.context.Connection> getConnectionFullMap() {
+ return this.connectionFullMap;
+ }
+
+ public ServiceCreateInput createORServiceInput(CreateConnectivityServiceInput input, Uuid serviceUuid) {
+ // TODO: not taking into account all the constraints. Only using EndPoints and Connectivity Constraint.
+ Map<org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointKey,
+ org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint>
+ endPointMap = input.getEndPoint();
+ ConnectionType connType = null;
+ ServiceFormat serviceFormat = null;
+ String nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(),
+ TapiStringConstants.XPDR);
+ String nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().orElseThrow().getLocalId(),
+ TapiStringConstants.XPDR);
+ LOG.info("NodeAid = {}", nodeAid);
+ LOG.info("NodeZid = {}", nodeZid);
+ //switch (constraint.getServiceLayer().getIntValue()) {
+ switch (input.getLayerProtocolName().getIntValue()) {
+ case 0:
+ LOG.info("ODU");
+ connType = ConnectionType.Infrastructure;
+ serviceFormat = ServiceFormat.ODU;
+ break;
+ case 1:
+ LOG.info("ETH, no need to create OTU and ODU");
+ connType = ConnectionType.Service;
+ serviceFormat = ServiceFormat.Ethernet;
+ break;
+ case 2:
+ LOG.info("DSR, need to create OTU and ODU");
+ connType = ConnectionType.Service;
+ serviceFormat = ServiceFormat.Ethernet;
+ break;
+ case 3:
+ LOG.info("PHOTONIC");
+ connType = getConnectionTypePhtnc(endPointMap.values());
+ serviceFormat = getServiceFormatPhtnc(endPointMap.values());
+ LOG.debug("Node a photonic = {}", nodeAid);
+ LOG.debug("Node z photonic = {}", nodeZid);
+ break;
+ default:
+ LOG.info("Service type {} not supported", input.getLayerProtocolName().getName());
+ }
+ // Requested Capacity for connectivity service
+ Uint64 capacity = Uint64.valueOf(Math.abs(
+ input.getConnectivityConstraint().getRequestedCapacity().getTotalSize().getValue().intValue()));
+ // map endpoints into service end points. Map the type of service from TAPI to OR
+ ServiceAEnd serviceAEnd = tapiEndPointToServiceAPoint(endPointMap.values().stream().findFirst().orElseThrow(),
+ serviceFormat, nodeAid, capacity, input.getLayerProtocolName());
+ ServiceZEnd serviceZEnd = tapiEndPointToServiceZPoint(endPointMap.values().stream().skip(1).findFirst()
+ .orElseThrow(), serviceFormat, nodeZid, capacity, input.getLayerProtocolName());
+ if (serviceAEnd == null || serviceZEnd == null) {
+ LOG.error("Couldnt map endpoints to service end");
+ return null;
+ }
+ LOG.info("Service a end = {}", serviceAEnd);
+ LOG.info("Service z end = {}", serviceZEnd);
+ return new ServiceCreateInputBuilder()
+ .setServiceAEnd(serviceAEnd)
+ .setServiceZEnd(serviceZEnd)
+ .setConnectionType(connType)
+ .setServiceName(serviceUuid.getValue())
+ .setCommonId("common id")
+ .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request-1")
+ .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url")
+ .setRequestSystemId("appname")
+ .build())
+ .setCustomer("customer")
+ .setDueDate(DateAndTime.getDefaultInstance("2018-06-15T00:00:01Z"))
+ .setOperatorContact("pw1234")
+ .build();
+ }
+
+ private static ServiceAEnd getServiceAEnd(GenericServiceEndpoint sepA, GenericServiceEndpoint sepZ) {
+ if (sepA.getType().equals(ServiceEndpointType.SERVICEAEND)) {
+ return new ServiceAEndBuilder(sepA.getValue()).build();
+ }
+ if (sepZ.getType().equals(ServiceEndpointType.SERVICEAEND)) {
+ return new ServiceAEndBuilder(sepZ.getValue()).build();
+ }
+ return null;
+ }
+
+ private static ServiceZEnd getServiceZEnd(GenericServiceEndpoint sepA, GenericServiceEndpoint sepZ) {
+ if (sepA.getType().equals(ServiceEndpointType.SERVICEZEND)) {
+ return new ServiceZEndBuilder(sepA.getValue()).build();
+ }
+ if (sepZ.getType().equals(ServiceEndpointType.SERVICEZEND)) {
+ return new ServiceZEndBuilder(sepZ.getValue()).build();
+ }
+ return null;
+ }
+
+ private LayerProtocolName mapServiceLayerToAend(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.ServiceAEnd
+ serviceAEnd) {
+ ServiceFormat serviceFormat = serviceAEnd.getServiceFormat();
+ switch (serviceFormat) {
+ case OC:
+ case OTU:
+ return LayerProtocolName.PHOTONICMEDIA;
+ case ODU:
+ return LayerProtocolName.ODU;
+ case Ethernet:
+ if (getOpenroadmType(serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow().getPort()
+ .getPortDeviceName()).equals(OpenroadmNodeType.TPDR)) {
+ return LayerProtocolName.ETH;
+ }
+ return LayerProtocolName.DSR;
+ default:
+ LOG.info("Service layer mapping not supported for {}", serviceFormat.getName());
+ }
+ return null;
+ }
+
+ private LayerProtocolName mapServiceLayer(ServiceFormat serviceFormat, EndPoint endPoint1, EndPoint endPoint2) {
+ switch (serviceFormat) {
+ case OC:
+ case OTU:
+ return LayerProtocolName.PHOTONICMEDIA;
+ case ODU:
+ return LayerProtocolName.ODU;
+ case Ethernet:
+ String node1 = endPoint1.getLocalId();
+ String node2 = endPoint2.getLocalId();
+ if (getOpenroadmType(node1).equals(OpenroadmNodeType.TPDR)
+ && getOpenroadmType(node2).equals(OpenroadmNodeType.TPDR)) {
+ return LayerProtocolName.ETH;
+ }
+ return LayerProtocolName.DSR;
+ default:
+ LOG.info("Service layer mapping not supported for {}", serviceFormat.getName());
+ }
+ return null;
+ }
+
+ private OpenroadmNodeType getOpenroadmType(String nodeName) {
+ LOG.info("Node name = {}", nodeName);
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",nodeName, TapiStringConstants.XPDR))
+ .getBytes(StandardCharsets.UTF_8)).toString());
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node tapiNode
+ = this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid);
+ if (tapiNode != null) {
+ return OpenroadmNodeType.forName(tapiNode.getName().get(new NameKey("Node Type"))
+ .getValue());
+ }
+ return null;
+ }
+
private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsEth(List<String> xpdrClientTplist,
List<String> xpdrNodelist,
Map<ConnectionKey, Connection> lowerConn) {
xcMap.put(conn.key(), conn);
}
Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMapDsr = new HashMap<>();
// Create 1 cep per Xpdr in the CLIENT
// 1 top connection DSR between the CLIENT xpdrs
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.XPDR,
LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, netCep1);
cepMapDsr.put(netCep1.key(), netCep1);
}
.get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
// DSR top connection between edge xpdr CLIENT DSR
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR,
LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn);
this.connectionFullMap.put(connectionDsr.key(), connectionDsr);
List<String> xpdrNetworkTplist,
List<String> xpdrNodelist) {
Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMapDsr = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMapOdu = new HashMap<>();
// TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
// be added to the lower connection of a top connection
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
- LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
+ ConnectionEndPoint clientCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, LayerProtocolName.DSR);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.XPDR,
+ clientCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.DSR,
- netCep2);
+ ConnectionEndPoint clientCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
+ TapiStringConstants.XPDR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.XPDR,
+ clientCep2);
String spcXpdrNetwork = getAssociatedNetworkPort(spcXpdrClient, xpdrNetworkTplist);
ConnectionEndPoint netCep3 = getAssociatediODUCep(spcXpdrNetwork);
- cepMapDsr.put(netCep1.key(), netCep1);
- cepMapOdu.put(netCep2.key(), netCep2);
+ cepMapDsr.put(clientCep1.key(), clientCep1);
+ cepMapOdu.put(clientCep2.key(), clientCep2);
// Create x connection between I_ODU and E_ODU within xpdr
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
+ connection = createXCBetweenCeps(clientCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
TapiStringConstants.ODU, LayerProtocolName.ODU);
this.connectionFullMap.put(connection.key(), connection);
String spcXpdr2 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
connectionOdu = createTopConnection(spcXpdr1, spcXpdr2, cepMapOdu, TapiStringConstants.E_ODU,
LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrOdu);
this.connectionFullMap.put(connectionOdu.key(), connectionOdu);
LowerConnection lowerConn = new LowerConnectionBuilder().setConnectionUuid(connectionOdu.getUuid()).build();
xcMap.put(lowerConn.key(), lowerConn);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR,
LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn);
this.connectionFullMap.put(connectionDsr.key(), connectionDsr);
private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsOdu(List<String> xpdrNetworkTplist,
List<String> xpdrNodelist) {
Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMap = new HashMap<>();
// TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
// be added to the lower connection of a top connection
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.XPDR,
netCep1);
cepMap.put(netCep1.key(), netCep1);
.get(0))).findFirst().orElseThrow();
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_ODU,
LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrPhtn);
this.connectionFullMap.put(connection.key(), connection);
private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsPht(List<String> xpdrNetworkTplist,
List<String> xpdrNodelist) {
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap = new HashMap<>();
+
// TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
// be added to the lower connection of a top connection
- Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
-
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
+ ConnectionEndPoint> cepMap = new HashMap<>();
// create ceps and x connections within xpdr
for (String xpdr:xpdrNodelist) {
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
// There should be 1 network tp per xpdr
- // TODO photonic media model should be updated to have the corresponding CEPs. I will just create
- // 3 different MC CEPs giving different IDs to show that they are different
- // Create 3 CEPs for each xpdr otsi node and the corresponding cross connection matchin the NEPs
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.OTSI,
- netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.E_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.E_OTSI, TapiStringConstants.OTSI,
+ // Just create 2 different CEPs (1 OTS + 1 OTSI_MC)
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA_OTS,
+ TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA_OTS,
+ TapiStringConstants.XPDR, netCep1);
+ ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.OTSI_MC,
+ TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.OTSI_MC, TapiStringConstants.XPDR,
netCep2);
- ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
- netCep3);
+// ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
+// TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+// putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
+// netCep3);
+
cepMap.put(netCep1.key(), netCep1);
cepMap.put(netCep2.key(), netCep2);
- cepMap.put(netCep3.key(), netCep3);
+// cepMap.put(netCep3.key(), netCep3);
- // Create x connection between I_OTSi and E_OTSi within xpdr
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- this.connectionFullMap.put(connection.key(), connection);
-
- // Create X connection that will be added to the service object
- LowerConnection conn = new LowerConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- xcMap.put(conn.key(), conn);
}
- // OTSi top connection between edge I_OTSI Xpdr
+
+ // OTSi top connection between edge OTSI_MC Xpdr
+ Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(0))).findFirst().orElseThrow();
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
+ connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA, xcMap, this.topConnRdmRdm);
this.connectionFullMap.put(connection.key(), connection);
- // OTSi top connection that will be added to the service object
+ // OTSi top connection that will be added to the service object
+ Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
connServMap.put(conn.key(), conn);
this.topConnXpdrXpdrPhtn = conn;
List<String> rdmNodelist,
String edgeRoadm1, String edgeRoadm2) {
// TODO: will need to check if things exist already or not
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMap = new HashMap<>();
// create ceps and x connections within roadm
Map<LowerConnectionKey, LowerConnection> xcLowerMap = new HashMap<>();
// Create 3 CEPs for each AD and DEG and the corresponding cross connections, matching the NEPs
// created in the topology creation
// add CEPs to the topology to the corresponding ONEP
- ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA, adCep1);
+ ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA_OTS, adCep1);
ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.MC, adCep2);
ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, TapiStringConstants.OTSI_MC);
String spcRdmDEG = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
LOG.info("Degree port of ROADm {} = {}", roadm, spcRdmDEG);
- ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA, degCep1);
+ ConnectionEndPoint degCep0 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OTS, degCep0);
+ ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OMS, degCep1);
ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.MC, degCep2);
ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.OTSI_MC, degCep3);
+ cepMap.put(degCep0.key(), degCep0);
cepMap.put(degCep1.key(), degCep1);
cepMap.put(degCep2.key(), degCep2);
cepMap.put(degCep3.key(), degCep3);
LOG.info("Going to create cross connections for ROADM {}", roadm);
// Create X connections between MC and OTSi_MC for full map
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1
= createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, TapiStringConstants.MC,
LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 1 created = {}", connection1.toString());
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection2
= createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 2 created = {}", connection2.toString());
String spcRdmDEG1 = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
LOG.info("Degree 1 port of ROADm {} = {}", roadm, spcRdmDEG1);
- ConnectionEndPoint deg1Cep1 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA, deg1Cep1);
+ ConnectionEndPoint deg1Cep0 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OTS, deg1Cep0);
+ ConnectionEndPoint deg1Cep1 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OMS, deg1Cep1);
ConnectionEndPoint deg1Cep2 = createCepRoadm(spcRdmDEG1, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.MC, deg1Cep2);
ConnectionEndPoint deg1Cep3 = createCepRoadm(spcRdmDEG1, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.OTSI_MC, deg1Cep3);
+ cepMap.put(deg1Cep0.key(), deg1Cep0);
cepMap.put(deg1Cep1.key(), deg1Cep1);
cepMap.put(deg1Cep2.key(), deg1Cep2);
cepMap.put(deg1Cep3.key(), deg1Cep3);
.orElseThrow();
LOG.info("Degree 2 port of ROADm {} = {}", roadm, spcRdmDEG2);
- ConnectionEndPoint deg2Cep1 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA, deg2Cep1);
+ ConnectionEndPoint deg2Cep0 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OTS, deg2Cep0);
+ ConnectionEndPoint deg2Cep1 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OMS, deg2Cep1);
ConnectionEndPoint deg2Cep2 = createCepRoadm(spcRdmDEG2, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.MC, deg2Cep2);
ConnectionEndPoint deg2Cep3 = createCepRoadm(spcRdmDEG2, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.OTSI_MC, deg2Cep3);
+ cepMap.put(deg2Cep0.key(), deg2Cep0);
cepMap.put(deg2Cep1.key(), deg2Cep1);
cepMap.put(deg2Cep2.key(), deg2Cep2);
cepMap.put(deg2Cep3.key(), deg2Cep3);
LOG.info("Going to create cross connections for ROADM {}", roadm);
// Create X connections between MC and OTSi_MC for full map
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1
= createXCBetweenCeps(deg1Cep2, deg2Cep2, spcRdmDEG1, spcRdmDEG2,
TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 1 created = {}", connection1.toString());
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection2
= createXCBetweenCeps(deg1Cep3, deg2Cep3, spcRdmDEG1, spcRdmDEG2,
TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA);
LOG.info("Cross connection 2 created = {}", connection2.toString());
String spcRdmAD2 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm2)).findFirst().orElseThrow();
// MC top connection between edge roadms
LOG.info("Going to created top connection between MC");
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.MC,
LayerProtocolName.PHOTONICMEDIA, xcLowerMap, null);
this.connectionFullMap.put(connection.key(), connection);
// OTSiMC top connection between edge roadms
LOG.info("Going to created top connection between OTSiMC");
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
connection1 = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA, topLowerMap, null);
this.connectionFullMap.put(connection1.key(), connection1);
return connServMap;
}
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
createTopConnection(String tp1, String tp2,
Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
+ .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMap, String qual, LayerProtocolName topPortocol,
Map<LowerConnectionKey, LowerConnection> xcMap, Connection additionalLowerConn) {
// find cep for each AD MC of roadm 1 and 2
LOG.info("Top connection name = {}", String.join("+", "TOP", tp1, tp2, qual));
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep1 =
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep1 =
cepMap.get(new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(
+ .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey(
new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp1.split("\\+")[0],
qual, tp1.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString())));
LOG.info("ADCEP1 = {}", adCep1);
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep1 =
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep1 =
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
+ .setNodeEdgePointUuid(adCep1.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(adCep1.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(adCep1.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(adCep1.getUuid())
.build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep2 =
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep2 =
cepMap.get(new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(
+ .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey(
new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp2.split("\\+")[0],
qual, tp2.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString())));
LOG.info("ADCEP2 = {}", adCep2);
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep2 =
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep2 =
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
+ .setNodeEdgePointUuid(adCep2.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(adCep2.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(adCep2.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(adCep1.getUuid())
.build();
Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint> ceps = new HashMap<>();
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ceps = new HashMap<>();
ceps.put(cep1.key(), cep1);
ceps.put(cep2.key(), cep2);
Name connName = new NameBuilder()
new LowerConnectionBuilder().setConnectionUuid(additionalLowerConn.getConnectionUuid()).build());
}
return new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder()
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder()
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "TOP", tp1, tp2, qual))
.getBytes(StandardCharsets.UTF_8)).toString()))
.setName(Map.of(connName.key(), connName))
.build();
}
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
createXCBetweenCeps(ConnectionEndPoint cep1, ConnectionEndPoint cep2, String tp1, String tp2, String qual,
LayerProtocolName xcProtocol) {
LOG.info("Creation cross connection between: {} and {}", tp1, tp2);
LOG.info("Cross connection name = {}", String.join("+", "XC", tp1, tp2, qual));
- LOG.info("CEP1 = {}", cep1.getClientNodeEdgePoint());
- LOG.info("CEP2 = {}", cep2.getClientNodeEdgePoint());
+ LOG.debug("Parent NEP of CEP1 = {}", cep1.getParentNodeEdgePoint().toString());
+ LOG.debug("Parent NEP CEP2 = {}", cep2.getParentNodeEdgePoint().toString());
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ1 =
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ1 =
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(cep1.getUuid())
- .build();
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
+ .setNodeEdgePointUuid(cep1.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(cep1.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(cep1.getParentNodeEdgePoint().getTopologyUuid())
+ .setConnectionEndPointUuid(cep1.getUuid())
+ .build();
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ2 =
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ2 =
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(cep2.getUuid())
- .build();
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
+ .setNodeEdgePointUuid(cep2.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(cep2.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(cep2.getParentNodeEdgePoint().getTopologyUuid())
+ .setConnectionEndPointUuid(cep2.getUuid())
+ .build();
Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint> ceps = new HashMap<>();
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ceps = new HashMap<>();
ceps.put(cepServ1.key(), cepServ1);
ceps.put(cepServ2.key(), cepServ2);
Name connName = new NameBuilder()
.build();
// TODO: lower connection, supported link.......
return new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder()
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder()
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "XC", tp1, tp2, qual))
.getBytes(StandardCharsets.UTF_8)).toString()))
.setName(Map.of(connName.key(), connName))
.setValue(String.join("+", id.split("\\+")[0], qualifier,
id.split("\\+")[1]))
.build();
- ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ ParentNodeEdgePoint pnep = new ParentNodeEdgePointBuilder()
.setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- qualifier)).getBytes(StandardCharsets.UTF_8))
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(StandardCharsets.UTF_8)).toString()))
+ .build();
+ String clientQualifier = "";
+ switch (qualifier) {
+ case TapiStringConstants.PHTNC_MEDIA_OTS:
+ clientQualifier = TapiStringConstants.PHTNC_MEDIA_OMS;
+ break;
+ case TapiStringConstants.PHTNC_MEDIA_OMS:
+ clientQualifier = TapiStringConstants.MC;
+ OwnedNodeEdgePoint onepMC = createRoadmNep(id.split("\\+")[0], id.split("\\+")[1],
+ false, OperationalState.ENABLED, AdministrativeState.UNLOCKED, clientQualifier);
+ putRdmNepInTopologyContext(id.split("\\+")[0], id.split("\\+")[1], TapiStringConstants.MC, onepMC);
+ break;
+ case TapiStringConstants.MC:
+ clientQualifier = TapiStringConstants.OTSI_MC;
+ OwnedNodeEdgePoint onepOTSiMC = createRoadmNep(id.split("\\+")[0], id.split("\\+")[1],
+ false, OperationalState.ENABLED, AdministrativeState.UNLOCKED, clientQualifier);
+ putRdmNepInTopologyContext(id.split("\\+")[0], id.split("\\+")[1],
+ TapiStringConstants.OTSI_MC, onepOTSiMC);
+ break;
+ default:
+ LOG.debug("not currently handling client NEP for OTSiMC CEP {}",
+ String.join("+", id.split("\\+")[0], qualifier, id.split("\\+")[1]));
+ break;
+ }
+ ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
+ clientQualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(StandardCharsets.UTF_8))
.toString()))
.setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(StandardCharsets.UTF_8)).toString()))
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
+ .setParentNodeEdgePoint(pnep)
.setName(Map.of(cepName.key(), cepName))
.setConnectionPortRole(PortRole.SYMMETRIC)
- .setConnectionPortDirection(PortDirection.BIDIRECTIONAL)
+ .setDirection(Direction.BIDIRECTIONAL)
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA);
+ if (!(TapiStringConstants.OTSI_MC.equals(qualifier))) {
+ cepBldr.setClientNodeEdgePoint(Map.of(cnep.key(), cnep));
+ }
return cepBldr.build();
}
.setValue(String.join("+", id.split("\\+")[0], qualifier,
id.split("\\+")[1]))
.build();
- ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ ParentNodeEdgePoint pnep = new ParentNodeEdgePointBuilder()
.setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- nodeLayer)).getBytes(StandardCharsets.UTF_8))
+ TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(StandardCharsets.UTF_8)).toString()))
+ .build();
+ String clientQualifier = "";
+ String clientNodeLayer = TapiStringConstants.PHTNC_MEDIA;
+ switch (qualifier) {
+ case TapiStringConstants.PHTNC_MEDIA_OTS:
+ clientQualifier = TapiStringConstants.OTSI_MC;
+ break;
+ case TapiStringConstants.OTSI_MC:
+ clientQualifier = TapiStringConstants.E_ODU;
+ clientNodeLayer = TapiStringConstants.ODU;
+ break;
+ case TapiStringConstants.E_ODU:
+ clientQualifier = TapiStringConstants.DSR;
+ clientNodeLayer = TapiStringConstants.DSR;
+ break;
+ default :
+ LOG.debug("no client CEP for DSR NEP {}",
+ String.join("+", id.split("\\+")[0], qualifier, id.split("\\+")[1]));
+ break;
+ }
+ ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
+ clientQualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
+ TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8))
.toString()))
.setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(StandardCharsets.UTF_8)).toString()))
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
+ .setParentNodeEdgePoint(pnep)
.setName(Map.of(cepName.key(), cepName))
.setConnectionPortRole(PortRole.SYMMETRIC)
- .setConnectionPortDirection(PortDirection.BIDIRECTIONAL)
+ .setDirection(Direction.BIDIRECTIONAL)
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setLayerProtocolName(cepProtocol);
+ if (!(TapiStringConstants.DSR.equals(qualifier))) {
+ cepBldr.setClientNodeEdgePoint(Map.of(cnep.key(), cnep));
+ }
return cepBldr.build();
}
default:
LOG.error("Service Format not supported");
}
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.Name name =
- new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name name =
+ new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder()
.setValueName("OpenROADM info")
.setValue(String.join("-", serviceZEnd.getClli(),
serviceZEnd.getTxDirection().values().stream().findFirst().orElseThrow().getPort()
.build())
.setName(Map.of(name.key(), name))
.setAdministrativeState(AdministrativeState.UNLOCKED)
- .setDirection(PortDirection.BIDIRECTIONAL)
+ .setDirection(Direction.BIDIRECTIONAL)
.setLifecycleState(LifecycleState.INSTALLED)
.setOperationalState(OperationalState.ENABLED)
.setLayerProtocolName(layerProtocols)
.setCapacity(new CapacityBuilder()
.setTotalSize(new TotalSizeBuilder()
- .setValue(Uint64.valueOf(serviceZEnd.getServiceRate()))
- .setUnit(CapacityUnit.GBPS)
+ .setValue(Decimal64.valueOf(BigDecimal.valueOf(serviceZEnd.getServiceRate().doubleValue())))
+ .setUnit(CAPACITYUNITGBPS.VALUE)
.build())
- .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile
+// .setBandwidthProfile(new BandwidthProfileBuilder().build())
.build())
.setProtectionRole(ProtectionRole.WORK)
.setRole(PortRole.SYMMETRIC)
default:
LOG.error("Service Format not supported");
}
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.Name name =
- new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name name =
+ new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder()
.setValueName("OpenROADM info")
.setValue(String.join("-", serviceAEnd.getClli(),
serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow().getPort()
.build())
.setName(Map.of(name.key(), name))
.setAdministrativeState(AdministrativeState.UNLOCKED)
- .setDirection(PortDirection.BIDIRECTIONAL)
+ .setDirection(Direction.BIDIRECTIONAL)
.setLifecycleState(LifecycleState.INSTALLED)
.setOperationalState(OperationalState.ENABLED)
.setLayerProtocolName(layerProtocols)
.setCapacity(new CapacityBuilder()
.setTotalSize(new TotalSizeBuilder()
- .setValue(Uint64.valueOf(serviceAEnd.getServiceRate()))
- .setUnit(CapacityUnit.GBPS)
+ .setValue(Decimal64.valueOf(BigDecimal.valueOf(serviceAEnd.getServiceRate().doubleValue())))
+ .setUnit(CAPACITYUNITGBPS.VALUE)
.build())
- .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile
+// .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile
.build())
.setProtectionRole(ProtectionRole.WORK)
.setRole(PortRole.SYMMETRIC)
LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.MC, tp.getTpId()));
for (ServiceInterfacePoint sip:this.sipMap.values()) {
if (!sip.getUuid().equals(sipUuid)) {
- LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
+ LOG.debug("SIP {} does not match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
continue;
}
zendUuid = sip.getUuid();
}
for (ServiceInterfacePoint sip:this.sipMap.values()) {
if (!sip.getUuid().equals(sipUuid)) {
- LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
+ LOG.debug("SIP {} does not match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
continue;
}
zendUuid = sip.getUuid();
tp.getTpId()));
for (ServiceInterfacePoint sip:this.sipMap.values()) {
if (!sip.getUuid().equals(sipUuid)) {
- LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
+ LOG.debug("SIP {} does not match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
continue;
}
aendUuid = sip.getUuid();
}
for (ServiceInterfacePoint sip:this.sipMap.values()) {
if (!sip.getUuid().equals(sipUuid)) {
- LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
+ LOG.debug("SIP {} does not match sipname {}", sip.getUuid().getValue(), sipUuid.getValue());
continue;
}
aendUuid = sip.getUuid();
this.tapiContext.updateTopologyWithCep(topoUuid, nodeUuid, nepUuid, cep);
}
- public Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection>
- getConnectionFullMap() {
- return this.connectionFullMap;
+
+ private void putRdmNepInTopologyContext(String orNodeId, String orTpId, String qual, OwnedNodeEdgePoint onep) {
+ LOG.info("NEP id before Merge = {}", String.join("+", orNodeId, qual, orTpId));
+ LOG.info("Node of NEP id before Merge = {}", String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA));
+ // Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA)
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", orNodeId, qual, orTpId)
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ updateTopologyWithNep(topoUuid, nodeUuid, nepUuid, onep);
}
private String getIdBasedOnModelVersion(String nodeid) {
nodeid.split("-")[1]) : nodeid.split("-")[0];
}
- public ServiceCreateInput createORServiceInput(CreateConnectivityServiceInput input, Uuid serviceUuid) {
- // TODO: not taking into account all the constraints. Only using EndPoints and Connectivity Constraint.
- Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPointKey,
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint>
- endPointMap = input.getEndPoint();
- ConnectivityConstraint constraint = input.getConnectivityConstraint();
- ConnectionType connType = null;
- ServiceFormat serviceFormat = null;
- String nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.DSR);
- String nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.DSR);
- LOG.debug("Node a = {}", nodeAid);
- LOG.debug("Node z = {}", nodeZid);
- switch (constraint.getServiceLayer().getIntValue()) {
- case 0:
- LOG.info("ODU");
- connType = ConnectionType.Infrastructure;
- serviceFormat = ServiceFormat.ODU;
- break;
- case 1:
- LOG.info("ETH, no need to create OTU and ODU");
- connType = ConnectionType.Service;
- serviceFormat = ServiceFormat.Ethernet;
- break;
- case 2:
- LOG.info("DSR, need to create OTU and ODU");
- connType = ConnectionType.Service;
- serviceFormat = ServiceFormat.Ethernet;
- break;
- case 3:
- LOG.info("PHOTONIC");
- connType = getConnectionTypePhtnc(endPointMap.values());
- serviceFormat = getServiceFormatPhtnc(endPointMap.values());
- if (serviceFormat.equals(ServiceFormat.OC)) {
- nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.PHTNC_MEDIA);
- nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().orElseThrow()
- .getLocalId(), TapiStringConstants.PHTNC_MEDIA);
- } else {
- nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.OTSI);
- nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().orElseThrow()
- .getLocalId(), TapiStringConstants.OTSI);
- }
- LOG.debug("Node a photonic = {}", nodeAid);
- LOG.debug("Node z photonic = {}", nodeZid);
- break;
- default:
- LOG.info("Service type {} not supported", constraint.getServiceLayer().getName());
- }
- // Requested Capacity for connectivity service
- Uint64 capacity = input.getConnectivityConstraint().getRequestedCapacity().getTotalSize().getValue();
- // map endpoints into service end points. Map the type of service from TAPI to OR
- ServiceAEnd serviceAEnd = tapiEndPointToServiceAPoint(endPointMap.values().stream().findFirst().orElseThrow(),
- serviceFormat, nodeAid, capacity, constraint.getServiceLayer());
- ServiceZEnd serviceZEnd = tapiEndPointToServiceZPoint(endPointMap.values().stream().skip(1).findFirst()
- .orElseThrow(), serviceFormat, nodeZid, capacity, constraint.getServiceLayer());
- if (serviceAEnd == null || serviceZEnd == null) {
- LOG.error("Couldnt map endpoints to service end");
- return null;
- }
- LOG.info("Service a end = {}", serviceAEnd);
- LOG.info("Service z end = {}", serviceZEnd);
- return new ServiceCreateInputBuilder()
- .setServiceAEnd(serviceAEnd)
- .setServiceZEnd(serviceZEnd)
- .setConnectionType(connType)
- .setServiceName(serviceUuid.getValue())
- .setCommonId("common id")
- .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request-1")
- .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url")
- .setRequestSystemId("appname")
- .build())
- .setCustomer("customer")
- .setDueDate(DateAndTime.getDefaultInstance("2018-06-15T00:00:01Z"))
- .setOperatorContact("pw1234")
- .build();
- }
-
private ServiceZEnd tapiEndPointToServiceZPoint(
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint endPoint,
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint endPoint,
ServiceFormat serviceFormat, String nodeZid, Uint64 capacity, LayerProtocolName serviceLayer) {
// TODO -> change way this is being created. The name includes only SPDR-SA1-XPDR1.
// Not the rest which is needed in the txPortDeviceName.
Uuid sipUuid = endPoint.getServiceInterfacePoint().getServiceInterfacePointUuid();
// Todo -> need to find the NEP associated to that SIP
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(nodeZid.getBytes(StandardCharsets.UTF_8)).toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node =
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node =
this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid);
if (node == null) {
LOG.error("Node not found in datastore");
LOG.error("Nep not found in datastore");
return null;
}
- String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
+ String nodeName = "";
+ for (Map.Entry<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name> entry:
+ endPoint.getName().entrySet()) {
+ if (!("Node Type").equals(entry.getValue().getValueName())) {
+ nodeName = entry.getValue().getValue();
+ }
+ }
+// String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
String nodeid = String.join("-", nodeName.split("-")[0], nodeName.split("-")[1]);
String nepName = nep.getName().values().stream().findFirst().orElseThrow().getValue();
String txPortDeviceName = nepName.split("\\+")[0];
private ServiceAEnd tapiEndPointToServiceAPoint(
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint endPoint,
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint endPoint,
ServiceFormat serviceFormat, String nodeAid, Uint64 capacity, LayerProtocolName serviceLayer) {
// TODO -> change way this is being created. The name includes only SPDR-SA1-XPDR1.
// Not the rest which is needed in the txPortDeviceName.
Uuid sipUuid = endPoint.getServiceInterfacePoint().getServiceInterfacePointUuid();
// Todo -> need to find the NEP associated to that SIP
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(nodeAid.getBytes(StandardCharsets.UTF_8)).toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node =
+ LOG.info("NodeA {} Uuid is {}", nodeAid, nodeUuid);
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node =
this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid);
if (node == null) {
LOG.error("Node not found in datastore");
LOG.error("Nep not found in datastore");
return null;
}
- String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
+ String nodeName = "";
+ for (Map.Entry<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name> entry:
+ endPoint.getName().entrySet()) {
+ if (!("Node Type").equals(entry.getValue().getValueName())) {
+ nodeName = entry.getValue().getValue();
+ }
+ }
+// String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
String nodeid = String.join("-", nodeName.split("-")[0], nodeName.split("-")[1]);
String nepName = nep.getName().values().stream().findFirst().orElseThrow().getValue();
String txPortDeviceName = nepName.split("\\+")[0];
}
private ConnectionType getConnectionTypePhtnc(Collection<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint> endPoints) {
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint> endPoints) {
if (endPoints.stream().anyMatch(ep -> ep.getName().values().stream()
.anyMatch(name -> name.getValue().contains("ROADM")))) {
// EndPoints are ROADMs
}
private ServiceFormat getServiceFormatPhtnc(Collection<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint> endPoints) {
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint> endPoints) {
if (endPoints.stream().anyMatch(ep -> ep.getName().values().stream()
.anyMatch(name -> name.getValue().contains("ROADM")))) {
// EndPoints are ROADMs
private ConnectionEndPoint getAssociatediODUCep(String spcXpdrNetwork) {
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
- TapiStringConstants.DSR).getBytes(StandardCharsets.UTF_8))).toString());
+ TapiStringConstants.XPDR).getBytes(StandardCharsets.UTF_8))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]).getBytes(StandardCharsets.UTF_8)))
.toString());
private OpenroadmNodeType getOpenRoadmNodeType(List<String> xpdrNodelist) {
List<OpenroadmNodeType> openroadmNodeTypeList = new ArrayList<>();
for (String xpdrNode:xpdrNodelist) {
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.DSR))
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.XPDR))
.getBytes(StandardCharsets.UTF_8)).toString());
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.topology.Node> nodeIID = InstanceIdentifier.builder(
+ .onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeIID = InstanceIdentifier.builder(
Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.Context1.class).child(TopologyContext.class)
+ .onf.otcc.yang.tapi.topology.rev221121.Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(this.tapiTopoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
new NodeKey(nodeUuid)).build();
try {
- Optional<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> optNode
+ Optional<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> optNode
= this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID).get();
- if (!optNode.isPresent()) {
+ if (optNode.isEmpty()) {
return null;
}
OpenroadmNodeType openroadmNodeType = OpenroadmNodeType.forName(optNode.orElseThrow().getName().get(
}
return openroadmNodeTypeList.get(0);
}
+
+ private OwnedNodeEdgePoint createRoadmNep(String orNodeId, String tpId,
+ boolean withSip, OperationalState operState, AdministrativeState adminState, String nepPhotonicSublayer) {
+
+ //TODO : complete implementation with SIP
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, nepPhotonicSublayer,
+ tpId)).getBytes(StandardCharsets.UTF_8)).toString());
+ Name nepName = new NameBuilder()
+ .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
+ .setValue(String.join("+", orNodeId, nepPhotonicSublayer, tpId))
+ .build();
+ List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
+ if (TapiStringConstants.MC.equals(nepPhotonicSublayer)) {
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIERMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ } else {
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ }
+ OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
+ .setUuid(nepUuid)
+ .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
+ .setName(Map.of(nepName.key(), nepName))
+ .setSupportedCepLayerProtocolQualifierInstances(sclpqiList)
+ .setDirection(Direction.BIDIRECTIONAL)
+ .setLinkPortRole(PortRole.SYMMETRIC)
+ .setAdministrativeState(adminState).setOperationalState(operState)
+ .setLifecycleState(LifecycleState.INSTALLED)
+ .build();
+
+ return onep;
+ }
+
}
import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.util.concurrent.ListenableFuture;
-import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.OperationResult;
import org.opendaylight.transportpce.common.ResponseCodes;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.listeners.TapiPceNotificationHandler;
import org.opendaylight.transportpce.tapi.listeners.TapiRendererNotificationHandler;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfoBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.BandwidthProfileBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.TapiConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.CapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.output.ServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connection.details.output.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connection.end.point.details.output.ConnectionEndPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.Service;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.ServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionEndPointDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionEndPointDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionEndPointDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceListInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceListOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.TapiConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.UpdateConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.UpdateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.UpdateConnectivityServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.CapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.output.ServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.get.connection.details.output.ConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.list.output.Service;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.list.output.ServiceKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Rpc;
import org.opendaylight.yangtools.yang.common.ErrorTag;
import org.opendaylight.yangtools.yang.common.ErrorType;
* Top level service interface providing main TAPI Connectivity services.
*/
public class TapiConnectivityImpl implements TapiConnectivityService {
-
+ private final NetworkTransactionService networkTransactionService;
private static final Logger LOG = LoggerFactory.getLogger(TapiConnectivityImpl.class);
private OrgOpenroadmServiceService serviceHandler;
public TapiConnectivityImpl(OrgOpenroadmServiceService serviceHandler, TapiContext tapiContext,
ConnectivityUtils connectivityUtils, TapiPceNotificationHandler pceListenerImpl,
- TapiRendererNotificationHandler rendererListenerImpl) {
+ TapiRendererNotificationHandler rendererListenerImpl,
+ NetworkTransactionService nts) {
LOG.info("inside TapiImpl constructor");
this.serviceHandler = serviceHandler;
this.tapiContext = tapiContext;
this.connectivityUtils = connectivityUtils;
this.pceListenerImpl = pceListenerImpl;
this.rendererListenerImpl = rendererListenerImpl;
+ this.networkTransactionService = nts;
}
@Override
.setValueName("Connectivity Service Name")
.setValue(serviceUuid.getValue())
.build();
+ ConnectivityConstraint conConstr = new ConnectivityConstraintBuilder()
+ .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
+ .setServiceLevel(input.getConnectivityConstraint().getServiceLevel()).build();
+
ConnectivityService service = new ConnectivityServiceBuilder()
.setUuid(serviceUuid)
.setAdministrativeState(AdministrativeState.LOCKED)
.setOperationalState(OperationalState.DISABLED)
.setLifecycleState(LifecycleState.PLANNED)
- .setServiceLayer(input.getConnectivityConstraint().getServiceLayer())
- .setServiceLevel(input.getConnectivityConstraint().getServiceLevel())
- .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
- .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL)
+ .setLayerProtocolName(input.getLayerProtocolName())
+ .setConnectivityConstraint(conConstr)
+ .setDirection(ForwardingDirection.BIDIRECTIONAL)
.setName(Map.of(name.key(), name))
.setConnection(new HashMap<>())
.setEndPoint(endPointList)
.setService(new ServiceBuilder(service).build()).build()).buildFuture();
}
-
@Override
public ListenableFuture<RpcResult<GetConnectivityServiceDetailsOutput>> getConnectivityServiceDetails(
GetConnectivityServiceDetailsInput input) {
// TODO Auto-generated method stub
- Uuid serviceUuid = getUuidFromIput(input.getServiceIdOrName());
+ Uuid serviceUuid = input.getUuid();
ConnectivityService service = this.tapiContext.getConnectivityService(serviceUuid);
if (service == null) {
- LOG.error("Service {} doesnt exist in tapi context", input.getServiceIdOrName());
+ LOG.error("Service {} doesnt exist in tapi context", input.getUuid());
return RpcResultBuilder.<GetConnectivityServiceDetailsOutput>failed()
.withError(ErrorType.RPC, "Service doesnt exist in datastore")
.buildFuture();
}
return RpcResultBuilder.success(new GetConnectivityServiceDetailsOutputBuilder().setService(
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.details.output.ServiceBuilder(
+ .onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.details.output.ServiceBuilder(
service).build()).build()).buildFuture();
}
public ListenableFuture<RpcResult<GetConnectionDetailsOutput>> getConnectionDetails(
GetConnectionDetailsInput input) {
// TODO Auto-generated method stub
- Uuid connectionUuid = getUuidFromIput(input.getConnectionIdOrName());
+ Uuid connectionUuid = input.getUuid();
Connection connection = this.tapiContext.getConnection(connectionUuid);
if (connection == null) {
- LOG.error("Connection {} doesnt exist in tapi context", input.getConnectionIdOrName());
+ LOG.error("Connection {} doesnt exist in tapi context", input.getUuid());
return RpcResultBuilder.<GetConnectionDetailsOutput>failed()
.withError(ErrorType.RPC, "Connection doesnt exist in datastore")
.buildFuture();
@Override
public ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> deleteConnectivityService(
DeleteConnectivityServiceInput input) {
- //TODO Auto-generated method stub
- // TODO add try
- if (input.getServiceIdOrName() != null) {
+ List<String> serviceName = null;
+ if (input.getUuid() != null) {
try {
- Uuid serviceUuid = getUuidFromIput(input.getServiceIdOrName());
+ serviceName = getNameFromUuid(input.getUuid(), "Service");
+ } catch (ExecutionException e) {
+ LOG.error("Service {} to be deleted not found in the DataStore", e.getMessage());
+ return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
+ .withError(ErrorType.RPC, "Failed to delete Service")
+ .buildFuture();
+ } catch (NoSuchElementException e) {
+ LOG.error("Service {} to be deleted not found in the DataStore", e.getMessage());
+ return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
+ .withError(ErrorType.RPC, "Failed to delete Service")
+ .buildFuture();
+ }
+ LOG.debug("The service {}, of name {} has been found in the DS", input.getUuid().toString(), serviceName);
+ try {
+ Uuid serviceUuid = input.getUuid();
this.tapiContext.deleteConnectivityService(serviceUuid);
ListenableFuture<RpcResult<ServiceDeleteOutput>> output =
this.serviceHandler.serviceDelete(new ServiceDeleteInputBuilder()
.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
- .setServiceName(input.getServiceIdOrName())
+ .setServiceName(input.getUuid().getValue())
.setTailRetention(ServiceDeleteReqInfo.TailRetention.No)
.build())
.setSdncRequestHeader(new SdncRequestHeaderBuilder()
LOG.error("Failed to delete service. Deletion process failed");
} catch (InterruptedException | ExecutionException e) {
LOG.error("Failed to delete service.", e);
+ return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
+ .withError(ErrorType.RPC, "Failed to delete Service")
+ .buildFuture();
}
}
return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
- .withError(ErrorType.RPC, "Failed to delete Service")
+ .withError(ErrorType.RPC, "Failed to delete Service, service uuid in input is null")
.buildFuture();
}
Map<ServiceKey, Service> serviceMap = new HashMap<>();
for (ConnectivityService connectivityService: connMap.values()) {
Service service = new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.ServiceBuilder(
+ .onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.list.output.ServiceBuilder(
connectivityService).build();
serviceMap.put(service.key(), service);
}
@Override
public ListenableFuture<RpcResult<GetConnectionEndPointDetailsOutput>> getConnectionEndPointDetails(
GetConnectionEndPointDetailsInput input) {
- // TODO Auto-generated method stub
- Uuid topoUuid = getUuidFromIput(input.getTopologyIdOrName());
- Uuid nodeUuid = getUuidFromIput(input.getNodeIdOrName());
- Uuid nepUuid = getUuidFromIput(input.getNepIdOrName());
- Uuid cepUuid = getUuidFromIput(input.getCepIdOrName());
- ConnectionEndPoint cep = this.tapiContext.getTapiCEP(topoUuid, nodeUuid, nepUuid, cepUuid);
- if (cep == null) {
- LOG.error("Cep doesnt exist in tapi context");
- return RpcResultBuilder.<GetConnectionEndPointDetailsOutput>failed()
- .withError(ErrorType.RPC, "No cep with given Uuid exists in datastore")
- .buildFuture();
- }
- return RpcResultBuilder.success(new GetConnectionEndPointDetailsOutputBuilder().setConnectionEndPoint(
- new ConnectionEndPointBuilder(cep).build()).build()).buildFuture();
+// TODO: Leveraging previous code, provide TAPI2.4 compliant implementation for this function
+ LOG.error("Method getConnectionEndPointDetails not currently implemented");
+ return null;
}
public ImmutableClassToInstanceMap<Rpc<?, ?>> registerRPCs() {
.build();
}
+ public List<String> getNameFromUuid(Uuid uuid, String typeOfNode) throws ExecutionException,
+ NoSuchElementException {
+ Map<NameKey, Name> nameMap = new HashMap<>();
+ if ("Service".equals(typeOfNode)) {
+ ConnectivityService conServ = null;
+ InstanceIdentifier<ConnectivityService> nodeIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
+ .child(ConnectivityContext.class)
+ .child(ConnectivityService.class, new ConnectivityServiceKey(uuid))
+ .build();
+ ListenableFuture<Optional<ConnectivityService>> conServFuture =
+ this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID);
+ try {
+ conServ = conServFuture.get().orElseThrow();
+ } catch (InterruptedException e) {
+ LOG.error("GetNamefromUuid Interrupt exception: Service not in Datastore, Interruption of the process");
+ Thread.currentThread().interrupt();
+ //TODO: investigate on how to throw Interrupted exception (generate a check violation error)
+ } catch (ExecutionException e) {
+ throw new ExecutionException("Unable to get from mdsal service: " + nodeIID
+ .firstKeyOf(ConnectivityService.class).getUuid().getValue(), e);
+ } catch (NoSuchElementException e) {
+ throw new NoSuchElementException("Unable to get from mdsal service: " + nodeIID
+ .firstKeyOf(ConnectivityService.class).getUuid().getValue(), e);
+ //return null;
+ }
+ nameMap = conServ.getName();
+ }
+
+ List<String> nameList = new ArrayList<>();
+ for (Map.Entry<NameKey, Name> entry : nameMap.entrySet()) {
+ nameList.add(entry.getValue().getValue());
+ }
+ LOG.debug("The service name of service {}, is {}", uuid.toString(), nameList.toString());
+ return nameList;
+ }
+
private Map<EndPointKey, EndPoint> createEndPoints(
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210
- .create.connectivity.service.input.EndPointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210
- .create.connectivity.service.input.EndPoint> endPoints) {
+ Map<org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointKey,
+ org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint> endPoints) {
Map<EndPointKey, EndPoint> endPointMap = new HashMap<>();
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210
- .create.connectivity.service.input.EndPoint ep: endPoints.values()) {
+ for (org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint ep:
+ endPoints.values()) {
EndPoint endpoint = new EndPointBuilder()
.setServiceInterfacePoint(new ServiceInterfacePointBuilder()
.setServiceInterfacePointUuid(ep.getServiceInterfacePoint().getServiceInterfacePointUuid())
.setLifecycleState(ep.getLifecycleState())
.setOperationalState(ep.getOperationalState())
.setLayerProtocolName(ep.getLayerProtocolName())
- // TODO: implement bandwidth profile
+ // TODO: implement bandwidth profile
.setCapacity(new CapacityBuilder()
.setTotalSize(new TotalSizeBuilder().build())
- .setBandwidthProfile(new BandwidthProfileBuilder().build())
+// .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile
.build())
.setProtectionRole(ep.getProtectionRole())
.setRole(ep.getRole())
return endPointMap;
}
- private Uuid getUuidFromIput(String serviceIdOrName) {
- try {
- UUID.fromString(serviceIdOrName);
- LOG.info("Given attribute {} is a UUID", serviceIdOrName);
- return new Uuid(serviceIdOrName);
- } catch (IllegalArgumentException e) {
- LOG.info("Given attribute {} is not a UUID", serviceIdOrName);
- return new Uuid(UUID.nameUUIDFromBytes(serviceIdOrName.getBytes(StandardCharsets.UTF_8)).toString());
- }
- }
+
+
}
import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl;
import org.opendaylight.transportpce.tapi.utils.TapiListener;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService;
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.networks.NetworkKey;
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.networks.network.Link;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.ServiceInterfacePoints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.ServiceInterfacePoints;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.osgi.service.component.annotations.Activate;
private static final InstanceIdentifier<Nodes> MAPPING_II = InstanceIdentifier.create(Network.class)
.child(org.opendaylight.yang.gen.v1.http
- .org.opendaylight.transportpce.portmapping.rev220922.network.Nodes.class);
+ .org.opendaylight.transportpce.portmapping.rev231221.network.Nodes.class);
private static final InstanceIdentifier<Link> LINK_II = InstanceIdentifier.create(Networks.class).child(
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network.class,
new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))).augmentation(Network1.class)
private final NetworkTransactionService networkTransactionService;
private final OrgOpenroadmServiceService serviceHandler;
private final ServiceDataStoreOperations serviceDataStoreOperations;
- private ObjectRegistration<TransportpceTapinetworkutilsService> tapiNetworkutilsServiceRpcRegistration;
private List<Registration> listeners;
private List<Registration> rpcRegistrations = new ArrayList<>();
private Registration pcelistenerRegistration;
tapiContext, this.serviceDataStoreOperations);
tapiInitialORMapping.performTopoInitialMapping();
tapiInitialORMapping.performServInitialMapping();
- TapiPceNotificationHandler pceListenerImpl = new TapiPceNotificationHandler(dataBroker);
+ TapiPceNotificationHandler pceListenerImpl = new TapiPceNotificationHandler(dataBroker, connectivityUtils);
TapiRendererNotificationHandler rendererListenerImpl = new TapiRendererNotificationHandler(dataBroker,
notificationPublishService);
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(this.serviceHandler, tapiContext,
- connectivityUtils, pceListenerImpl, rendererListenerImpl);
+ connectivityUtils, pceListenerImpl, rendererListenerImpl, networkTransactionService);
rpcRegistrations.add(rpcProviderService.registerRpcImplementations(tapiConnectivity.registerRPCs()));
- TapiTopologyImpl topo = new TapiTopologyImpl(this.dataBroker, tapiContext, topologyUtils, tapiLink);
+ TapiTopologyImpl topo = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils, tapiLink);
rpcRegistrations.add(rpcProviderService.registerRpcImplementations(topo.registerRPCs()));
this.listeners = new ArrayList<>();
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.DateAndTime;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NameAndValueChange;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Notification;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.NodeEdgePointRef;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NameAndValueChange;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Notification;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.NodeEdgePointRef;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODEEDGEPOINT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.EnumTypeObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.osgi.service.component.annotations.Activate;
private void onNotification(Notification notification) {
LOG.info("Received network model notification {}", notification);
- if (notification.getNotificationType() == NotificationType.ATTRIBUTEVALUECHANGE
- && notification.getTargetObjectType() == ObjectType.NODEEDGEPOINT) {
+ if (notification.getNotificationType().equals(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE)
+ && notification.getTargetObjectType().equals(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE)) {
if (notification.getChangedAttributes() == null) {
return;
}
// TODO: need to re-think this to update first the connections from roadm to roadm and then the others
updateConnections(notification.getChangedAttributes().keySet().stream()
.map(changedAttributesKey -> new Uuid(changedAttributesKey.getValueName()))
- .collect(Collectors.toList()),
- notification.getChangedAttributes().values().stream()
+ .collect(Collectors.toList()), notification.getChangedAttributes().values().stream()
.map(NameAndValueChange::getNewValue)
.collect(Collectors.toList()));
updateConnectivityServices();
}
}
+// @Override
+// public void onEventNotification(EventNotification notification) {
+// LOG.info("Received network model notification {}", notification);
+// //TODO: see if implementation needed and if in TAPI2.4, something supersedes this method
+// }
+
private PublishTapiNotificationService createNbiNotification(ConnectivityService connService) {
if (connService == null) {
LOG.error("ConnService is null");
.setUuid(new Uuid(UUID.randomUUID().toString()))
.setTopic(connService.getUuid().getValue())
.setTargetObjectIdentifier(connService.getUuid())
- .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE)
+ .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE)
.setChangedAttributes(changedStates)
.setEventTimeStamp(datetime)
.setTargetObjectName(targetObjectNames)
- .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE)
- .setLayerProtocolName(connService.getServiceLayer())
+ .setTargetObjectType(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)
+ .setLayerProtocolName(connService.getLayerProtocolName())
.build();
}
this.connectivityServiceChanges.clear();
InstanceIdentifier<ConnectivityContext> connectivityContextIID =
InstanceIdentifier.builder(Context.class).augmentation(
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(ConnectivityContext.class)
.build();
Optional<ConnectivityContext> optConnContext =
InstanceIdentifier<ConnectivityService> connServIID = InstanceIdentifier
.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(connService.getUuid()))
.build();
LOG.info("No connections on service = {}", connService);
return new EnumTypeObject[]{null, null};
}
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
.connectivity.service.Connection connection : connService.getConnection().values()) {
InstanceIdentifier<Connection> connIID =
InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(ConnectivityContext.class)
.child(Connection.class, new ConnectionKey(connection.getConnectionUuid()))
.build();
try {
//should it return a list of connections?
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext> connectivityContextIID =
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivityContextIID =
InstanceIdentifier.builder(Context.class).augmentation(
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.build();
Optional<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext> optConnContext =
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> optConnContext =
this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectivityContextIID).get();
if (optConnContext.isEmpty()) {
LOG.error(TapiStringConstants.TAPI_CONNECTION_UPDATE_ERROR);
if (connService.getConnection() == null) {
continue;
}
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
.connectivity.service.Connection connection : connService.getConnection().values()) {
InstanceIdentifier<Connection> connIID =
InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(Connection.class, new ConnectionKey(connection.getConnectionUuid()))
.build();
Optional<Connection> optConn =
// To check if the oneps are from the original Top connection
newConnState = getConnectionState(changedOneps, onepStates, newConn);
}
-
+ LOG.debug("Analysing connection = {} ", newConn.getName().toString());
LOG.info("Previous connection state = {} & New connection state = {}",
newConn.getOperationalState().getName(), newConnState.getName());
Connection changedConn = new ConnectionBuilder(newConn).setOperationalState(newConnState).build();
Map<ConnectivityServiceKey, ConnectivityService> orderedServiceMap = new HashMap<>();
for (LayerProtocolName lpn:this.orderedServiceLayerList) {
for (ConnectivityService connServ:connServMap.values()) {
- if (connServ.getServiceLayer().equals(lpn)) {
+ if (connServ.getLayerProtocolName().equals(lpn)) {
LOG.info("Layer of service is equal to entry of lpn = {}", lpn);
orderedServiceMap.put(connServ.key(), connServ);
}
for (LowerConnection lowerConn:lowerConnections) {
InstanceIdentifier<Connection> connIID =
InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(Connection.class, new ConnectionKey(lowerConn.getConnectionUuid()))
.build();
Optional<Connection> optConn =
LOG.info("Didnt transform correctly the states");
for (Uuid connectionNep : connectionNeps) {
Optional<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint> ocep
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ocep
= conn.getConnectionEndPoint().values().stream()
.filter(connectionEndPoint -> connectionEndPoint.getNodeEdgePointUuid() == connectionNep)
.findFirst();
for (LowerConnection lowerConn:lowerConnections) {
InstanceIdentifier<Connection> connIID =
InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context
+ .onf.otcc.yang.tapi.connectivity.rev221121.context
.ConnectivityContext.class)
.child(Connection.class, new ConnectionKey(lowerConn.getConnectionUuid()))
.build();
for (ConnectivityService supportedConnService : connServices) {
// TODO currently supporting service uuid is saved in service layer, replace with name as soon
// as name is implemented
- if (supportedConnService.getServiceLayer() != layer) {
+ if (supportedConnService.getLayerProtocolName() != layer) {
continue;
}
InstanceIdentifier<ConnectivityService> supportedConnServIID = InstanceIdentifier
.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(supportedConnService.getUuid()))
.build();
Optional<ConnectivityService> optNewConnService = this.networkTransactionService.read(
continue;
}
ConnectivityService newConnService = optNewConnService.orElseThrow();
- if (supportedConnService.getServiceLevel() != null
- && supportedConnService.getServiceLevel().equals(supportingConnService.getValue())
+ if (supportedConnService.getConnectivityConstraint().getServiceLevel() != null
+ && supportedConnService.getConnectivityConstraint().getServiceLevel()
+ .equals(supportingConnService.getValue())
&& newConnService.getAdministrativeState() != AdministrativeState.LOCKED
&& newConnService.getOperationalState() != OperationalState.DISABLED) {
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Comparator;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
-import java.util.stream.Collectors;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
-import org.opendaylight.transportpce.tapi.TapiStringConstants;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.ServicePathRpcResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev230925.service.path.rpc.result.PathDescriptionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.Node;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.transportpce.tapi.connectivity.ConnectivityUtils;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResult;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1Builder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1Builder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(TapiPceNotificationHandler.class);
- private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString());
private ServicePathRpcResult servicePathRpcResult;
private CreateConnectivityServiceInput input;
private Uuid serviceUuid;
private final DataBroker dataBroker;
private final NetworkTransactionService networkTransactionService;
+ private final ConnectivityUtils connectivityUtils;
private final Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection>
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection>
connectionFullMap; // this variable is for complete connection objects
- private Connection topConnRdmRdm;
- private Connection topConnXpdrXpdrPhtn;
- private Connection topConnXpdrXpdrOdu;
- public TapiPceNotificationHandler(DataBroker dataBroker) {
+ public TapiPceNotificationHandler(DataBroker dataBroker, ConnectivityUtils connecUtil) {
this.connectionFullMap = new HashMap<>();
this.dataBroker = dataBroker;
this.networkTransactionService = new NetworkTransactionImpl(this.dataBroker);
- this.topConnRdmRdm = null;
- this.topConnXpdrXpdrPhtn = null;
- this.topConnXpdrXpdrOdu = null;
+ this.connectivityUtils = connecUtil;
}
public CompositeListener getCompositeListener() {
// verify the type of XPDR and the capacity and determine if it is an OTN service or pure WDM service
// Create connections and ceps for the connectivity service.
// Connections must be with a locked stated. As the renderer hasnt implemented yet the oc's
- Map<ConnectionKey, Connection> connectionMap = createConnectionsAndCepsForService(pathDescription,
- input.getConnectivityConstraint().getServiceLayer());
+ Map<ConnectionKey, Connection> connectionMap = connectivityUtils.createConnectionsFromService(
+ pathDescription, input.getLayerProtocolName());
+ this.connectionFullMap.putAll(connectivityUtils.getConnectionFullMap());
+ LOG.debug("Connection Map from createConnectionsAndCepsForService is {}, LAYERPROTOCOL of service is {} ",
+ connectionMap.toString(), input.getLayerProtocolName());
// add connections to connection context and to connectivity context
updateConnectionContextWithConn(this.connectionFullMap, connectionMap, serviceUuid);
}
- private Map<ConnectionKey, Connection> createConnectionsAndCepsForService(PathDescription pathDescription,
- LayerProtocolName serviceProtName) {
- Map<ConnectionKey, Connection> connectionServMap = new HashMap<>();
- // build lists with ROADM nodes, XPDR/MUX/SWITCH nodes, ROADM DEG TTPs, ROADM SRG TTPs, XPDR CLIENT TTPs
- // and XPDR NETWORK TTPs (if any). From the path description. This will help to build the uuid of the CEPs
- // and the connections
- String resourceType;
- List<String> xpdrClientTplist = new ArrayList<>();
- List<String> xpdrNetworkTplist = new ArrayList<>();
- List<String> rdmAddDropTplist = new ArrayList<>();
- List<String> rdmDegTplist = new ArrayList<>();
- List<String> rdmNodelist = new ArrayList<>();
- List<String> xpdrNodelist = new ArrayList<>();
- for (AToZ elem:pathDescription.getAToZDirection().getAToZ().values().stream()
- .sorted((Comparator.comparing(atoz -> Integer.valueOf(atoz.getId())))).collect(Collectors.toList())) {
- resourceType = elem.getResource().getResource().implementedInterface().getSimpleName();
- switch (resourceType) {
- case TapiStringConstants.TP:
- TerminationPoint tp = (TerminationPoint) elem.getResource().getResource();
- String tpID = tp.getTpId();
- String tpNode;
- if (tpID.contains("CLIENT")) {
- tpNode = tp.getTpNodeId();
- if (!xpdrClientTplist.contains(String.join("+", tpNode, tpID))) {
- xpdrClientTplist.add(String.join("+", tpNode, tpID));
- }
- }
- if (tpID.contains("NETWORK")) {
- tpNode = tp.getTpNodeId();
- if (!xpdrNetworkTplist.contains(String.join("+", tpNode, tpID))) {
- xpdrNetworkTplist.add(String.join("+", tpNode, tpID));
- }
- }
- if (tpID.contains("PP")) {
- tpNode = getIdBasedOnModelVersion(tp.getTpNodeId());
- LOG.info("ROADM Node of tp = {}", tpNode);
- if (!rdmAddDropTplist.contains(String.join("+", tpNode, tpID))) {
- rdmAddDropTplist.add(String.join("+", tpNode, tpID));
- }
- }
- if (tpID.contains("TTP")) {
- tpNode = getIdBasedOnModelVersion(tp.getTpNodeId());
- LOG.info("ROADM Node of tp = {}", tpNode);
- if (!rdmDegTplist.contains(String.join("+", tpNode, tpID))) {
- rdmDegTplist.add(String.join("+", tpNode, tpID));
- }
- }
- break;
- case TapiStringConstants.NODE:
- Node node = (Node) elem.getResource().getResource();
- String nodeId = node.getNodeId();
- if (nodeId.contains("XPDR") || nodeId.contains("SPDR") || nodeId.contains("MXPDR")) {
- LOG.info("Node id = {}", nodeId);
- if (!xpdrNodelist.contains(nodeId)) {
- xpdrNodelist.add(nodeId); // should contain only 2
- }
- }
- if (nodeId.contains("ROADM")) {
- nodeId = getIdBasedOnModelVersion(nodeId);
- LOG.info("Node id = {}", nodeId);
- if (!rdmNodelist.contains(nodeId)) {
- rdmNodelist.add(nodeId);
- }
- }
- break;
- default:
- LOG.warn("Resource is a {}", resourceType);
- }
- }
- LOG.info("ROADM node list = {}", rdmNodelist.toString());
- LOG.info("ROADM degree list = {}", rdmDegTplist.toString());
- LOG.info("ROADM addrop list = {}", rdmAddDropTplist.toString());
- LOG.info("XPDR node list = {}", xpdrNodelist.toString());
- LOG.info("XPDR network list = {}", xpdrNetworkTplist.toString());
- LOG.info("XPDR client list = {}", xpdrClientTplist.toString());
- // TODO -> for 10GB eth and ODU services there are no ROADMs in path description as they use the OTU link,
- // but for 100GB eth all is created at once. Check if the roadm list is empty to determine whether we need
- // to trigger all the steps or not
- String edgeRoadm1 = "";
- String edgeRoadm2 = "";
- if (!rdmNodelist.isEmpty()) {
- edgeRoadm1 = rdmNodelist.get(0);
- edgeRoadm2 = rdmNodelist.get(rdmNodelist.size() - 1);
- LOG.info("edgeRoadm1 = {}", edgeRoadm1);
- LOG.info("edgeRoadm2 = {}", edgeRoadm2);
- }
- // create corresponding CEPs and Connections. Connections should be added to the corresponding context
- // CEPs must be included in the topology context as an augmentation for each ONEP!!
- // TODO -> Maybe we dont need to create the connections and ceps if the previous service doesnt exist??
- // As mentioned above, for 100GbE service creation there are ROADMs in the path description.
- // What are the configurations needed here? No OTU, ODU... what kind of cross connections is needed?
- // this needs to be changed
-
- // TODO: OpenROADM getNodeType from the NamesList to verify what needs to be created
- OpenroadmNodeType openroadmNodeType = getOpenRoadmNodeType(xpdrNodelist);
- switch (serviceProtName) {
- case PHOTONICMEDIA:
- // Identify number of ROADMs
- // - XC Connection between MC CEPs mapped from MC NEPs (within a roadm)
- // - XC Connection between OTSiMC CEPs mapped from OTSiMC NEPs (within a roadm)
- // - Top Connection MC betwwen MC CEPs of different roadms
- // - Top Connection OTSiMC betwwen OTSiMC CEPs of extreme roadms
- connectionServMap.putAll(createRoadmCepsAndConnections(rdmAddDropTplist, rdmDegTplist, rdmNodelist,
- edgeRoadm1, edgeRoadm2));
- if (!pathDescription.getAToZDirection().getAToZ().values().stream().findFirst().orElseThrow().getId()
- .contains("ROADM")) {
- // - XC Connection OTSi betwwen iOTSi y eOTSi of xpdr
- // - Top connection OTSi between network ports of xpdrs in the Photonic media layer -> i_OTSi
- connectionServMap.putAll(createXpdrCepsAndConnectionsPht(xpdrNetworkTplist, xpdrNodelist));
- this.topConnRdmRdm = null;
- }
- break;
- case ODU:
- // TODO: verify if this is correct
- LOG.info("OTN ODU service");
- // - XC Connection OTSi between iODU and eODU of xpdr
- // - Top connection in the ODU layer, between xpdr iODU ports
- if (openroadmNodeType.equals(OpenroadmNodeType.MUXPDR)) {
- connectionServMap.putAll(createXpdrCepsAndConnectionsOdu(xpdrNetworkTplist, xpdrNodelist));
- this.topConnXpdrXpdrPhtn = null;
- }
- break;
- case ETH:
- LOG.info("WDM service");
- if (openroadmNodeType.equals(OpenroadmNodeType.TPDR)) {
- // TODO: WDM service. Only och/otu4 needed and then directly DSR top connection.
- // Need to find the associated client ports of the network port
- // - Same as for PHOTONIC MEDIA service
- // - Do we nedd cross connection in the ODU layer??
- // - Top connection DSR between client ports of the transponder
- connectionServMap.putAll(createRoadmCepsAndConnections(rdmAddDropTplist, rdmDegTplist, rdmNodelist,
- edgeRoadm1, edgeRoadm2));
- connectionServMap.putAll(createXpdrCepsAndConnectionsPht(xpdrNetworkTplist, xpdrNodelist));
- this.topConnRdmRdm = null;
- xpdrClientTplist = getAssociatedClientsPort(xpdrNetworkTplist);
- LOG.info("Associated client ports = {}", xpdrClientTplist);
- connectionServMap.putAll(createXpdrCepsAndConnectionsEth(xpdrClientTplist, xpdrNodelist,
- connectionServMap));
- this.topConnXpdrXpdrPhtn = null;
- }
- break;
- case DSR:
- LOG.info("OTN XGE/ODUe service");
- // - XC connection between iODU and eODU
- // - Top connection between eODU ports
- // - Top connection between DSR ports
- if (openroadmNodeType.equals(OpenroadmNodeType.SWITCH)) {
- // TODO: We create both ODU and DSR because there is no ODU service creation for the switch
- // - XC Connection OTSi betwwen iODU and eODU of xpdr
- // - Top connection in the ODU layer, between xpdr eODU ports (?)
- connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNetworkTplist,
- xpdrNodelist));
- this.topConnXpdrXpdrPhtn = null;
- }
- if (openroadmNodeType.equals(OpenroadmNodeType.MUXPDR)) {
- // TODO: OTN service but mux has 3 steps at rendering. Verify that things exist
- connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNetworkTplist,
- xpdrNodelist));
- this.topConnXpdrXpdrOdu = null;
- }
- break;
- default:
- LOG.error("Service type format {} not supported", serviceProtName.getName());
- }
- return connectionServMap;
- }
-
/**
* Process cancel resource result.
* @param serviceName Service name to build uuid.
return true;
}
- private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsEth(List<String> xpdrClientTplist,
- List<String> xpdrNodelist,
- Map<ConnectionKey, Connection> lowerConn) {
- // TODO: do we need to create cross connection between iODU and eODU??
- // add the lower connections of the previous steps for this kind of service
- Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
- for (Connection lowConn: lowerConn.values()) {
- LowerConnection conn = new LowerConnectionBuilder().setConnectionUuid(lowConn.getConnectionUuid()).build();
- xcMap.put(conn.key(), conn);
- }
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMapDsr = new HashMap<>();
- // Create 1 cep per Xpdr in the CLIENT
- // 1 top connection DSR between the CLIENT xpdrs
- for (String xpdr:xpdrNodelist) {
- LOG.info("Creating ceps and xc for xpdr {}", xpdr);
- String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
- .orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
- LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
-
- cepMapDsr.put(netCep1.key(), netCep1);
- }
- String spcXpdr1 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(0))).findFirst().orElseThrow();
- String spcXpdr2 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
-
- // DSR top connection between edge xpdr CLIENT DSR
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR,
- LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn);
- this.connectionFullMap.put(connectionDsr.key(), connectionDsr);
-
- // DSR top connection that will be added to the service object
- Connection conn1 = new ConnectionBuilder().setConnectionUuid(connectionDsr.getUuid()).build();
- connServMap.put(conn1.key(), conn1);
-
- return connServMap;
- }
-
- private Map<ConnectionKey,Connection> createXpdrCepsAndConnectionsDsr(List<String> xpdrClientTplist,
- List<String> xpdrNetworkTplist,
- List<String> xpdrNodelist) {
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMapDsr = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMapOdu = new HashMap<>();
- // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
- // be added to the lower connection of a top connection
- Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
-
- // Create 1 cep per Xpdr in the CLIENT, 1 cep per Xpdr eODU, 1 XC between eODU and iODE,
- // 1 top connection between eODU and a top connection DSR between the CLIENT xpdrs
- for (String xpdr:xpdrNodelist) {
- LOG.info("Creating ceps and xc for xpdr {}", xpdr);
- String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
- .orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
- LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
-
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.DSR,
- netCep2);
-
- String spcXpdrNetwork = getAssociatedNetworkPort(spcXpdrClient, xpdrNetworkTplist);
- ConnectionEndPoint netCep3 = getAssociatediODUCep(spcXpdrNetwork);
-
- cepMapDsr.put(netCep1.key(), netCep1);
- cepMapOdu.put(netCep2.key(), netCep2);
- // Create x connection between I_ODU and E_ODU within xpdr
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
- TapiStringConstants.ODU, LayerProtocolName.ODU);
- this.connectionFullMap.put(connection.key(), connection);
-
- // Create X connection that will be added to the service object
- LowerConnection conn = new LowerConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- xcMap.put(conn.key(), conn);
- }
-
- String spcXpdr1 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(0))).findFirst().orElseThrow();
- String spcXpdr2 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
-
- // eODU top connection between edge xpdr CLIENT eODU
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connectionOdu = createTopConnection(spcXpdr1, spcXpdr2, cepMapOdu, TapiStringConstants.E_ODU,
- LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrOdu);
- this.connectionFullMap.put(connectionOdu.key(), connectionOdu);
-
- // ODU top connection that will be added to the service object and also lower connection
- Connection conn = new ConnectionBuilder().setConnectionUuid(connectionOdu.getUuid()).build();
- connServMap.put(conn.key(), conn);
- LowerConnection lowerConn = new LowerConnectionBuilder().setConnectionUuid(connectionOdu.getUuid()).build();
- xcMap.put(lowerConn.key(), lowerConn);
-
- // DSR top connection between edge xpdr CLIENT DSR
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR,
- LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn);
- this.connectionFullMap.put(connectionDsr.key(), connectionDsr);
-
- // DSR top connection that will be added to the service object
- Connection conn1 = new ConnectionBuilder().setConnectionUuid(connectionDsr.getUuid()).build();
- connServMap.put(conn1.key(), conn1);
-
- return connServMap;
- }
-
- private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsOdu(List<String> xpdrNetworkTplist,
- List<String> xpdrNodelist) {
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap = new HashMap<>();
- // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
- // be added to the lower connection of a top connection
- Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
- // Create 1 cep per Xpdr in the I_ODU and a top
- // connection iODU between the xpdrs
- for (String xpdr:xpdrNodelist) {
- LOG.info("Creating ceps and xc for xpdr {}", xpdr);
- String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
- .orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.DSR,
- netCep1);
-
- cepMap.put(netCep1.key(), netCep1);
- }
-
- // ODU top connection between edge xpdr i_ODU
- String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(0))).findFirst().orElseThrow();
- String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_ODU,
- LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrPhtn);
- this.connectionFullMap.put(connection.key(), connection);
-
- // ODU top connection that will be added to the service object
- Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- connServMap.put(conn.key(), conn);
- this.topConnXpdrXpdrOdu = conn;
-
- return connServMap;
- }
-
- private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsPht(List<String> xpdrNetworkTplist,
- List<String> xpdrNodelist) {
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap = new HashMap<>();
- // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
- // be added to the lower connection of a top connection
- Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
-
- // create ceps and xc connections within xpdr
- for (String xpdr:xpdrNodelist) {
- LOG.info("Creating ceps and xc for xpdr {}", xpdr);
- String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
- .orElseThrow();
- // There should be 1 network tp per xpdr
- // TODO photonic media model should be updated to have the corresponding CEPs. I will just create
- // 3 different MC CEPs giving different IDs to show that they are different
- // Create 3 CEPs for each xpdr otsi node and the corresponding cross connection matchin the NEPs
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.OTSI,
- netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.E_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.E_OTSI, TapiStringConstants.OTSI,
- netCep2);
- ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
- netCep3);
- cepMap.put(netCep1.key(), netCep1);
- cepMap.put(netCep2.key(), netCep2);
- cepMap.put(netCep3.key(), netCep3);
-
- // Create x connection between I_OTSi and E_OTSi within xpdr
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- this.connectionFullMap.put(connection.key(), connection);
-
- // Create X connection that will be added to the service object
- LowerConnection conn = new LowerConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- xcMap.put(conn.key(), conn);
- }
- // OTSi top connection between edge I_OTSI Xpdr
- String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(0))).findFirst().orElseThrow();
- String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
- .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI,
- LayerProtocolName.PHOTONICMEDIA, xcMap, this.topConnRdmRdm);
- this.connectionFullMap.put(connection.key(), connection);
-
- // OTSi top connection that will be added to the service object
- Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- connServMap.put(conn.key(), conn);
- this.topConnXpdrXpdrPhtn = conn;
- return connServMap;
- }
-
- private Map<ConnectionKey, Connection> createRoadmCepsAndConnections(List<String> rdmAddDropTplist,
- List<String> rdmDegTplist,
- List<String> rdmNodelist,
- String edgeRoadm1, String edgeRoadm2) {
- // TODO: will need to check if things exist already or not
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap = new HashMap<>();
- // create ceps and x connections within roadm
- Map<LowerConnectionKey, LowerConnection> xcLowerMap = new HashMap<>();
- for (String roadm : rdmNodelist) {
- LOG.info("Creating ceps and xc for roadm {}", roadm);
- if (roadm.equals(edgeRoadm1) || roadm.equals(edgeRoadm2)) {
- LOG.info("EDGE ROADM, cross connections needed between SRG and DEG");
- String spcRdmAD = rdmAddDropTplist.stream().filter(adp -> adp.contains(roadm)).findFirst()
- .orElseThrow();
- LOG.info("AD port of ROADm {} = {}", roadm, spcRdmAD);
- // There should be only 1 AD and 1 DEG per roadm
- // TODO photonic media model should be updated to have the corresponding CEPs. I will just create
- // 3 different MC CEPs giving different IDs to show that they are different
- // Create 3 CEPs for each AD and DEG and the corresponding cross connections, matching the NEPs
- // created in the topology creation
- // add CEPs to the topology to the corresponding ONEP
- ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA, adCep1);
- ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, TapiStringConstants.MC);
- putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.MC, adCep2);
- ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, TapiStringConstants.OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.OTSI_MC, adCep3);
- cepMap.put(adCep1.key(), adCep1);
- cepMap.put(adCep2.key(), adCep2);
- cepMap.put(adCep3.key(), adCep3);
-
- String spcRdmDEG = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
- LOG.info("Degree port of ROADm {} = {}", roadm, spcRdmDEG);
-
- ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA, degCep1);
- ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, TapiStringConstants.MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.MC, degCep2);
- ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, TapiStringConstants.OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.OTSI_MC, degCep3);
- cepMap.put(degCep1.key(), degCep1);
- cepMap.put(degCep2.key(), degCep2);
- cepMap.put(degCep3.key(), degCep3);
-
- LOG.info("Going to create cross connections for ROADM {}", roadm);
- // Create X connections between MC and OTSi_MC for full map
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1
- = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, TapiStringConstants.MC,
- LayerProtocolName.PHOTONICMEDIA);
- LOG.info("Cross connection 1 created = {}", connection1.toString());
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2
- = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, TapiStringConstants.OTSI_MC,
- LayerProtocolName.PHOTONICMEDIA);
- LOG.info("Cross connection 2 created = {}", connection2.toString());
- this.connectionFullMap.put(connection1.key(), connection1);
- this.connectionFullMap.put(connection2.key(), connection2);
-
- // Create X connections that will be added to the service object
- LowerConnection conn1 = new LowerConnectionBuilder().setConnectionUuid(connection1.getUuid()).build();
- LowerConnection conn2 = new LowerConnectionBuilder().setConnectionUuid(connection2.getUuid()).build();
-
- xcLowerMap.put(conn1.key(), conn1);
- xcLowerMap.put(conn2.key(), conn2);
- } else {
- LOG.info("MIDDLE ROADM, cross connections needed between DEG and DEG");
- String spcRdmDEG1 = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
- LOG.info("Degree 1 port of ROADm {} = {}", roadm, spcRdmDEG1);
-
- ConnectionEndPoint deg1Cep1 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA, deg1Cep1);
- ConnectionEndPoint deg1Cep2 = createCepRoadm(spcRdmDEG1, TapiStringConstants.MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.MC, deg1Cep2);
- ConnectionEndPoint deg1Cep3 = createCepRoadm(spcRdmDEG1, TapiStringConstants.OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.OTSI_MC, deg1Cep3);
- cepMap.put(deg1Cep1.key(), deg1Cep1);
- cepMap.put(deg1Cep2.key(), deg1Cep2);
- cepMap.put(deg1Cep3.key(), deg1Cep3);
-
- String spcRdmDEG2 = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).skip(1).findFirst()
- .orElseThrow();
- LOG.info("Degree 2 port of ROADm {} = {}", roadm, spcRdmDEG2);
-
- ConnectionEndPoint deg2Cep1 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA, deg2Cep1);
- ConnectionEndPoint deg2Cep2 = createCepRoadm(spcRdmDEG2, TapiStringConstants.MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.MC, deg2Cep2);
- ConnectionEndPoint deg2Cep3 = createCepRoadm(spcRdmDEG2, TapiStringConstants.OTSI_MC);
- putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.OTSI_MC, deg2Cep3);
- cepMap.put(deg2Cep1.key(), deg2Cep1);
- cepMap.put(deg2Cep2.key(), deg2Cep2);
- cepMap.put(deg2Cep3.key(), deg2Cep3);
-
- LOG.info("Going to create cross connections for ROADM {}", roadm);
- // Create X connections between MC and OTSi_MC for full map
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1
- = createXCBetweenCeps(deg1Cep2, deg2Cep2, spcRdmDEG1, spcRdmDEG2,
- TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA);
- LOG.info("Cross connection 1 created = {}", connection1.toString());
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2
- = createXCBetweenCeps(deg1Cep3, deg2Cep3, spcRdmDEG1, spcRdmDEG2,
- TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA);
- LOG.info("Cross connection 2 created = {}", connection2.toString());
- this.connectionFullMap.put(connection1.key(), connection1);
- this.connectionFullMap.put(connection2.key(), connection2);
-
- // Create X connections that will be added to the service object
- LowerConnection conn1 = new LowerConnectionBuilder().setConnectionUuid(connection1.getUuid()).build();
- LowerConnection conn2 = new LowerConnectionBuilder().setConnectionUuid(connection2.getUuid()).build();
-
- xcLowerMap.put(conn1.key(), conn1);
- xcLowerMap.put(conn2.key(), conn2);
- }
- }
- LOG.info("Going to create top connections between roadms");
- String spcRdmAD1 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm1)).findFirst().orElseThrow();
- String spcRdmAD2 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm2)).findFirst().orElseThrow();
- // MC top connection between edge roadms
- LOG.info("Going to created top connection between MC");
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.MC,
- LayerProtocolName.PHOTONICMEDIA, xcLowerMap, null);
- this.connectionFullMap.put(connection.key(), connection);
- LOG.info("Top connection created = {}", connection.toString());
-
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- // OTSiMC top connections that will be added to the service object
- Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- connServMap.put(conn.key(), conn);
- LowerConnection conn1 = new LowerConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- Map<LowerConnectionKey, LowerConnection> topLowerMap = new HashMap<>();
- topLowerMap.put(conn1.key(), conn1);
-
- // OTSiMC top connection between edge roadms
- LOG.info("Going to created top connection between OTSiMC");
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- connection1 = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.OTSI_MC,
- LayerProtocolName.PHOTONICMEDIA, topLowerMap, null);
- this.connectionFullMap.put(connection1.key(), connection1);
- LOG.info("Top connection created = {}", connection1.toString());
-
- // OTSiMC top connections that will be added to the service object
- Connection conn2 = new ConnectionBuilder().setConnectionUuid(connection1.getUuid()).build();
- connServMap.put(conn2.key(), conn2);
- this.topConnRdmRdm = conn2;
- return connServMap;
- }
-
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- createTopConnection(String tp1, String tp2,
- Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap, String qual, LayerProtocolName topPortocol,
- Map<LowerConnectionKey, LowerConnection> xcMap, Connection additionalLowerConn) {
- // find cep for each AD MC of roadm 1 and 2
- LOG.info("Top connection name = {}", String.join("+", "TOP", tp1, tp2, qual));
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep1 =
- cepMap.get(new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(
- new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp1.split("\\+")[0],
- qual, tp1.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
- .toString())));
- LOG.info("ADCEP1 = {}", adCep1.toString());
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep1 =
- new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(adCep1.getUuid())
- .build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep2 =
- cepMap.get(new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(
- new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp2.split("\\+")[0],
- qual, tp2.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
- .toString())));
- LOG.info("ADCEP2 = {}", adCep2.toString());
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep2 =
- new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(adCep1.getUuid())
- .build();
- Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint> ceps = new HashMap<>();
- ceps.put(cep1.key(), cep1);
- ceps.put(cep2.key(), cep2);
- Name connName = new NameBuilder()
- .setValueName("Connection name")
- .setValue(String.join("+", "TOP", tp1, tp2, qual))
- .build();
- // TODO: lower connection, supported link.......
- if (additionalLowerConn != null) {
- xcMap.putIfAbsent(new LowerConnectionKey(additionalLowerConn.getConnectionUuid()),
- new LowerConnectionBuilder().setConnectionUuid(additionalLowerConn.getConnectionUuid()).build());
- }
- return new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "TOP", tp1, tp2, qual))
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .setName(Map.of(connName.key(), connName))
- .setConnectionEndPoint(ceps)
- .setOperationalState(OperationalState.DISABLED)
- .setLayerProtocolName(topPortocol)
- .setLifecycleState(LifecycleState.POTENTIALAVAILABLE)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .setLowerConnection(xcMap)
- .build();
- }
-
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
- createXCBetweenCeps(ConnectionEndPoint cep1, ConnectionEndPoint cep2, String tp1, String tp2, String qual,
- LayerProtocolName xcProtocol) {
- LOG.info("Creation cross connection between: {} and {}", tp1, tp2);
- LOG.info("Cross connection name = {}", String.join("+", "XC", tp1, tp2, qual));
- LOG.info("CEP1 = {}", cep1.getClientNodeEdgePoint().toString());
- LOG.info("CEP2 = {}", cep2.getClientNodeEdgePoint().toString());
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ1 =
- new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(cep1.getUuid())
- .build();
- org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ2 =
- new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(cep2.getUuid())
- .build();
- Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint> ceps = new HashMap<>();
- ceps.put(cepServ1.key(), cepServ1);
- ceps.put(cepServ2.key(), cepServ2);
- Name connName = new NameBuilder()
- .setValueName("Connection name")
- .setValue(String.join("+", "XC", tp1, tp2, qual))
- .build();
- // TODO: lower connection, supported link.......
- return new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "XC", tp1, tp2, qual))
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .setName(Map.of(connName.key(), connName))
- .setConnectionEndPoint(ceps)
- .setOperationalState(OperationalState.ENABLED)
- .setLayerProtocolName(xcProtocol)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setDirection(ForwardingDirection.BIDIRECTIONAL)
- .build();
- }
-
- private ConnectionEndPoint createCepRoadm(String id, String qualifier) {
- LOG.info("NEP = {}", String.join("+", id.split("\\+")[0], qualifier, id.split("\\+")[1]));
- Name cepName = new NameBuilder()
- .setValueName("ConnectionEndPoint name")
- .setValue(String.join("+", id.split("\\+")[0], qualifier,
- id.split("\\+")[1]))
- .build();
- ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- "PHOTONIC_MEDIA")).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .build();
- // TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
- // TODO: add parent ONEP??
- ConnectionEndPointBuilder cepBldr = new ConnectionEndPointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
- .setName(Map.of(cepName.key(), cepName))
- .setConnectionPortRole(PortRole.SYMMETRIC)
- .setConnectionPortDirection(PortDirection.BIDIRECTIONAL)
- .setOperationalState(OperationalState.ENABLED)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA);
- return cepBldr.build();
- }
-
- private ConnectionEndPoint createCepXpdr(String id, String qualifier, String nodeLayer,
- LayerProtocolName cepProtocol) {
- Name cepName = new NameBuilder()
- .setValueName("ConnectionEndPoint name")
- .setValue(String.join("+", id.split("\\+")[0], qualifier,
- id.split("\\+")[1]))
- .build();
- ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- nodeLayer)).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .build();
- // TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
- // TODO: add parent ONEP??
- ConnectionEndPointBuilder cepBldr = new ConnectionEndPointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
- .setName(Map.of(cepName.key(), cepName))
- .setConnectionPortRole(PortRole.SYMMETRIC)
- .setConnectionPortDirection(PortDirection.BIDIRECTIONAL)
- .setOperationalState(OperationalState.ENABLED)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setLayerProtocolName(cepProtocol);
- return cepBldr.build();
- }
-
- private void putRdmCepInTopologyContext(String node, String spcRdmAD, String qual, ConnectionEndPoint cep) {
- LOG.info("NEP id before Merge = {}", String.join("+", node, qual, spcRdmAD.split("\\+")[1]));
- LOG.info("Node of NEP id before Merge = {}", String.join("+", node, TapiStringConstants.PHTNC_MEDIA));
- // Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, TapiStringConstants.PHTNC_MEDIA)
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, qual, spcRdmAD.split("\\+")[1])
- .getBytes(Charset.forName("UTF-8"))).toString());
- updateTopologyWithCep(topoUuid, nodeUuid, nepUuid, cep);
- }
-
- private void putXpdrCepInTopologyContext(String node, String spcXpdrNet, String qual, String nodeLayer,
- ConnectionEndPoint cep) {
- // Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, nodeLayer)
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, qual, spcXpdrNet.split("\\+")[1])
- .getBytes(Charset.forName("UTF-8"))).toString());
- updateTopologyWithCep(topoUuid, nodeUuid, nepUuid, cep);
- }
public void updateTopologyWithCep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, ConnectionEndPoint cep) {
// TODO: verify this is correct. Should we identify the context IID with the context UUID??
InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
.child(Topology.class, new TopologyKey(topoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
new NodeKey(nodeUuid))
.child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
.build();
if (onep1 != null && onep1.getCepList() != null && onep1.getCepList().getConnectionEndPoint() != null) {
if (onep1.getCepList().getConnectionEndPoint().containsKey(
new org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(cep.key()))) {
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey(cep.key()))) {
LOG.info("CEP already in topology, skipping merge");
return;
}
}
}
+ public void updateTopologyWithNep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, OwnedNodeEdgePoint onep) {
+ // TODO: verify this is correct. Should we identify the context IID with the context UUID??
+ InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
+ .child(Topology.class, new TopologyKey(topoUuid))
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
+ new NodeKey(nodeUuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
+ .build();
+ try {
+ Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onepIID).get();
+ if (optionalOnep.isPresent()) {
+ LOG.error("ONEP is already present in datastore");
+ return;
+ }
+ // merge in datastore
+ this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, onepIID,
+ onep);
+ this.networkTransactionService.commit().get();
+ LOG.info("NEP {} added successfully.", onep.getName().toString());
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Couldnt put NEP {} in topology, error = ", onep.getName().toString(), e);
+ }
+ }
+
+
private void updateConnectionContextWithConn(
Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey,
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey,
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection> connFullMap,
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connFullMap,
Map<ConnectionKey, Connection> connMap, Uuid suuid) {
// TODO: verify this is correct. Should we identify the context IID with the context UUID??
try {
.build();
// Perform the merge operation with the new conn service and the connection context updated
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext
connectivityContext = new ConnectivityContextBuilder()
.setConnectivityService(Map.of(updtConnServ.key(), updtConnServ))
.setConnection(connFullMap)
.build();
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext> connectivitycontextIID =
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivitycontextIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.build();
// merge in datastore
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectivitycontextIID,
InstanceIdentifier<ConnectivityService> connectivityServIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(suuid))
.build();
Optional<ConnectivityService> optConnServ =
this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectivityServIID).get();
- if (!optConnServ.isPresent()) {
+ if (optConnServ.isEmpty()) {
LOG.error("Connectivity service not found in tapi context");
return null;
}
InstanceIdentifier<ConnectivityService> connectivityServIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(suuid))
.build();
try {
private void deleteConnection(Uuid connectionUuid) {
// First read connectivity service with service uuid and update info
InstanceIdentifier<org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection> connectionIID =
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class,
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class,
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey(
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey(
connectionUuid))
.build();
try {
}
}
- private String getIdBasedOnModelVersion(String nodeid) {
- return nodeid.matches("[A-Z]{5}-[A-Z0-9]{2}-.*")
- ? String.join("-", nodeid.split("-")[0], nodeid.split("-")[1]) : nodeid.split("-")[0];
- }
-
- private ConnectionEndPoint getAssociatediODUCep(String spcXpdrNetwork) {
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
- TapiStringConstants.DSR).getBytes(Charset.forName("UTF-8")))).toString());
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
- TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]).getBytes(Charset.forName("UTF-8"))))
- .toString());
- Uuid cepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP",
- spcXpdrNetwork.split("\\+")[0], TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]))
- .getBytes(Charset.forName("UTF-8"))).toString());
- InstanceIdentifier<OwnedNodeEdgePoint> nepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
- .child(Topology.class, new TopologyKey(topoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
- new NodeKey(nodeUuid)).child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)).build();
- try {
- Optional<OwnedNodeEdgePoint> optNode = this.networkTransactionService
- .read(LogicalDatastoreType.OPERATIONAL, nepIID).get();
- if (!optNode.isPresent()) {
- LOG.error("Node is not present in datastore");
- return null;
- }
- if (optNode.orElseThrow().augmentation(OwnedNodeEdgePoint1.class) == null) {
- LOG.error("Node doesnt have ceps");
- return null;
- }
- return optNode.orElseThrow().augmentation(OwnedNodeEdgePoint1.class).getCepList().getConnectionEndPoint()
- .get(new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(cepUuid));
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Couldnt read node in topology", e);
- return null;
- }
- }
-
- private String getAssociatedNetworkPort(String spcXpdrClient, List<String> xpdrNetworkTplist) {
- for (String networkPort:xpdrNetworkTplist) {
- if (networkPort.split("\\+")[0].equals(spcXpdrClient.split("\\+")[0])) {
- return networkPort;
- }
- }
- return null;
- }
-
- private OpenroadmNodeType getOpenRoadmNodeType(List<String> xpdrNodelist) {
- List<OpenroadmNodeType> openroadmNodeTypeList = new ArrayList<>();
- for (String xpdrNode:xpdrNodelist) {
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.DSR))
- .getBytes(Charset.forName("UTF-8"))).toString());
- InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.topology.Node> nodeIID
- = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(this.tapiTopoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
- new NodeKey(nodeUuid)).build();
- try {
- Optional<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> optNode
- = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID).get();
- if (!optNode.isPresent()) {
- return null;
- }
- OpenroadmNodeType openroadmNodeType = OpenroadmNodeType.forName(optNode.orElseThrow().getName().get(
- new NameKey("Node Type")).getValue());
- if (!openroadmNodeTypeList.contains(openroadmNodeType)) {
- openroadmNodeTypeList.add(openroadmNodeType);
- }
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Couldnt read node in topology", e);
- return null;
- }
- }
- // TODO for now check that there is only one type, otherwise error
- if (openroadmNodeTypeList.size() != 1) {
- LOG.error("More than one xpdr type. List = {}", openroadmNodeTypeList);
- return null;
- }
- return openroadmNodeTypeList.get(0);
- }
-
- private List<String> getAssociatedClientsPort(List<String> xpdrNetworkTplist) {
- List<String> clientPortList = new ArrayList<>();
- for (String networkPort:xpdrNetworkTplist) {
- String nodeId = String.join("-", networkPort.split("\\+")[0].split("-")[0],
- networkPort.split("\\+")[0].split("-")[1]);
- String tpId = networkPort.split("\\+")[1];
- InstanceIdentifier<Mapping> mapIID = InstanceIdentifier.builder(Network.class)
- .child(Nodes.class, new NodesKey(nodeId))
- .child(Mapping.class, new MappingKey(tpId)).build();
- try {
- Optional<Mapping> optMapping = this.networkTransactionService.read(LogicalDatastoreType.CONFIGURATION,
- mapIID).get();
- if (!optMapping.isPresent()) {
- LOG.error("Couldnt find mapping for port {} of node {}", tpId, nodeId);
- }
- Mapping mapping = optMapping.orElseThrow();
- LOG.info("Mapping for node+port {}+{} = {}", nodeId, tpId, mapping);
- String key = String.join("+", String.join("-", nodeId, tpId.split("\\-")[0]),
- mapping.getConnectionMapLcp());
- LOG.info("Key to be added to list = {}", key);
- if (!clientPortList.contains(key)) {
- clientPortList.add(key);
- }
- } catch (InterruptedException | ExecutionException e) {
- LOG.error("Couldnt read mapping from datastore", e);
- return null;
- }
-
- }
- return clientPortList;
- }
-
public void setInput(CreateConnectivityServiceInput input) {
this.input = input;
}
import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSp;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.DateAndTime;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
InstanceIdentifier<ConnectivityService> connectivityServIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(suuid))
.build();
try {
// First read connection with connection uuid and update info
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection> connectionIID =
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class,
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class,
new ConnectionKey(connectionUuid))
.build();
Optional<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection> optConn =
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> optConn =
this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectionIID).get();
if (!optConn.isPresent()) {
LOG.error("Connection not found in tapi context");
return;
}
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
newConnection = new ConnectionBuilder(optConn.orElseThrow()).setLifecycleState(LifecycleState.INSTALLED)
.setOperationalState(OperationalState.ENABLED).build();
// merge in datastore
InstanceIdentifier<ConnectivityService> connServIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(updtConnServ.getUuid()))
.build();
InstanceIdentifier<ConnectivityService> connectivityServIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(suuid))
.build();
try {
private void deleteConnection(Uuid connectionUuid) {
// First read connectivity service with service uuid and update info
InstanceIdentifier<org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection> connectionIID =
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class,
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class,
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey(
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey(
connectionUuid))
.build();
try {
.setUuid(new Uuid(UUID.randomUUID().toString()))
.setTopic(connService.getUuid().getValue())
.setTargetObjectIdentifier(connService.getUuid())
- .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE)
+ .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE)
.setChangedAttributes(changedStates)
.setEventTimeStamp(datetime)
.setTargetObjectName(targetObjectNames)
- .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE)
- .setLayerProtocolName(connService.getServiceLayer())
+ .setTargetObjectType(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)
+ .setLayerProtocolName(connService.getLayerProtocolName())
.build();
}
--- /dev/null
+/*
+ * Copyright © 2023 Orange, Inc. 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.tapi.topology;
+
+import java.math.RoundingMode;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.stream.Collectors;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.networks.network.node.termination.point.PpAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPools;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmTpType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev230526.xpdr.mode.attributes.supported.operational.modes.OperationalModeKey;
+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.topology.rev180226.TpId;
+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.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.AvailableCapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.TotalPotentialCapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.payload.structure.CapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU0;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODUCN;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.OTUTYPEOTUCN;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPEGigE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.context.topology.context.topology.node.owned.node.edge.point.PhotonicMediaNodeEdgePointSpecBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.photonic.media.node.edge.point.spec.SpectrumCapabilityPacBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.AvailableSpectrum;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.AvailableSpectrumBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.AvailableSpectrumKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.OccupiedSpectrumBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.OccupiedSpectrumKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.SupportableSpectrumBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.SupportableSpectrumKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.AvailablePayloadStructure;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.AvailablePayloadStructureBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedPayloadStructure;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedPayloadStructureBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder;
+import org.opendaylight.yangtools.yang.common.Decimal64;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class ConvertORToTapiTopology {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ConvertORToTapiTopology.class);
+ private String ietfNodeId;
+ private OpenroadmNodeType ietfNodeType;
+ private AdminStates ietfNodeAdminState;
+ private State ietfNodeOperState;
+ private List<TerminationPoint> oorClientPortList;
+ private List<TerminationPoint> oorNetworkPortList;
+ private OduSwitchingPools oorOduSwitchingPool;
+ private Uuid tapiTopoUuid;
+ private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
+ tapiNodes;
+ private Map<LinkKey, Link> tapiLinks;
+ private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
+ private Map<String, Uuid> uuidMap;
+
+
+ public ConvertORToTapiTopology(Uuid tapiTopoUuid) {
+ this.tapiTopoUuid = tapiTopoUuid;
+ this.tapiNodes = new HashMap<>();
+ this.tapiLinks = new HashMap<>();
+ this.uuidMap = new HashMap<>();
+ this.tapiSips = new HashMap<>();
+ }
+
+ public void convertNode(Node ietfNode, List<String> networkPorts) {
+ this.ietfNodeId = ietfNode.getNodeId().getValue();
+ var ietfAug =
+ ietfNode.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class);
+ if (ietfAug == null) {
+ return;
+ }
+ this.ietfNodeType = ietfAug.getNodeType();
+ this.ietfNodeAdminState = ietfAug.getAdministrativeState();
+ this.ietfNodeOperState = ietfAug.getOperationalState();
+ var ietfAugTopo =
+ ietfNode.augmentation(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class);
+ this.oorNetworkPortList = ietfAugTopo.getTerminationPoint().values().stream()
+ .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
+ == OpenroadmTpType.XPONDERNETWORK.getIntValue()
+ && networkPorts.contains(tp.getTpId().getValue()))
+ .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
+ .collect(Collectors.toList());
+ if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
+ this.oorOduSwitchingPool = createOduSwitchingPoolForTp100G();
+ List<TpId> tpList = this.oorOduSwitchingPool.getNonBlockingList().values().stream()
+ .flatMap(nbl -> nbl.getTpList().stream())
+ .collect(Collectors.toList());
+ this.oorClientPortList = ietfAugTopo.getTerminationPoint().values().stream()
+ .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
+ == OpenroadmTpType.XPONDERCLIENT.getIntValue()
+ && tpList.contains(tp.getTpId()))
+ .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
+ .collect(Collectors.toList());
+ this.oorClientPortList.forEach(tp -> LOG.info("tp = {}", tp.getTpId()));
+ } else {
+ this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
+ .values().stream().findFirst().orElseThrow();
+ this.oorClientPortList = ietfAugTopo.getTerminationPoint().values().stream()
+ .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
+ == OpenroadmTpType.XPONDERCLIENT.getIntValue())
+ .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
+ .collect(Collectors.toList());
+ }
+
+ // node creation [DSR/ODU] ([DSR/ODU] and OTSI merged in R 2.4.X)
+ LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId);
+ String nodeIdXpdr = String.join("+", this.ietfNodeId, TapiStringConstants.XPDR);
+ this.uuidMap.put(nodeIdXpdr,
+ //nodeUuid
+ new Uuid(UUID.nameUUIDFromBytes(nodeIdXpdr.getBytes(Charset.forName("UTF-8"))).toString()));
+ Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(nodeIdXpdr).build();
+ Name namePhot = new NameBuilder().setValueName("otsi node name").setValue(nodeIdXpdr).build();
+ Name nameNodeType = new NameBuilder().setValueName("Node Type").setValue(this.ietfNodeType.getName()).build();
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .topology.Node dsrNode =
+ createTapiNode(
+ Map.of(nameDsr.key(), nameDsr, namePhot.key(), namePhot,nameNodeType.key(), nameNodeType),
+ //dsrLayerProtocols
+ Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU,
+ LayerProtocolName.DIGITALOTN, LayerProtocolName.PHOTONICMEDIA));
+ LOG.debug("XPDR Node {} should have {} NEPs and SIPs",
+ this.ietfNodeId, this.oorClientPortList.size() + this.oorNetworkPortList.size());
+ LOG.info("XPDR Node {} has {} NEPs and {} SIPs",
+ this.ietfNodeId,
+ dsrNode.getOwnedNodeEdgePoint().values().size(),
+ dsrNode.getOwnedNodeEdgePoint().values().stream()
+ .filter(nep -> nep.getMappedServiceInterfacePoint() != null).count());
+ tapiNodes.put(dsrNode.key(), dsrNode);
+ }
+
+ public Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForRdmNode(
+ String topoType, Uuid nodeUuid, String orNodeId, Collection<OwnedNodeEdgePoint> onepl) {
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
+ nepMap = new HashMap<>();
+ for (OwnedNodeEdgePoint onep : onepl) {
+ var nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .node.rule.group.NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(nodeUuid)
+ .setNodeEdgePointUuid(onep.key().getUuid())
+ .build();
+ nepMap.put(nep.key(), nep);
+ }
+ Rule rule = new RuleBuilder()
+ .setLocalId("forward")
+ .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE)
+ .setRuleType(new HashSet<>(Set.of(RuleType.FORWARDING)))
+ .build();
+ NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes((
+ topoType.equals("Abstracted") ? "rdm infra node rule group" : orNodeId + " node rule group")
+ .getBytes(Charset.forName("UTF-8"))).toString()))
+ .setRule(new HashMap<>(Map.of(rule.key(), rule)))
+ .setNodeEdgePoint(nepMap)
+ .build();
+ return new HashMap<>(Map.of(nodeRuleGroup.key(), nodeRuleGroup));
+ }
+
+ public Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> createMSIP(
+ int nb, LayerProtocolName layerProtocol, String tpId, String nodeid,
+ Collection<SupportedInterfaceCapability> supportedInterfaceCapability,
+ OperationalState operState, AdministrativeState adminState) {
+ // add them to SIP context
+ Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
+ for (int i = 0; i < nb; i++) {
+ String sipName =
+ nb == 1
+ ? String.join("+", "SIP", nodeid, tpId)
+ : String.join("+", "SIP", nodeid, tpId, "Nber", String.valueOf(i));
+ LOG.info("SIP = {}", sipName);
+ Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes(sipName.getBytes(Charset.forName("UTF-8"))).toString());
+ MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
+ .setServiceInterfacePointUuid(sipUuid)
+ .build();
+ ServiceInterfacePoint sip =
+ createSIP(sipUuid, layerProtocol, tpId, nodeid, supportedInterfaceCapability, operState, adminState);
+ this.tapiSips.put(sip.key(), sip);
+ msipl.put(msip.key(), msip);
+ LOG.debug("SIP created {}", sip.getUuid());
+ LOG.debug("This SIP corresponds to SIP+nodeId {} + TpId {}", nodeid, tpId);
+ }
+ return msipl;
+ }
+
+ public List<AvailablePayloadStructure> createAvailablePayloadStructureForPhtncMedia(
+ Boolean otsiProvisioned,
+ Collection<SupportedInterfaceCapability> sicList,
+ List<OperationalModeKey> supportedOpModes) {
+ if (supportedOpModes == null || supportedOpModes.isEmpty()) {
+ return null;
+ }
+ Integer nepRate = 0;
+ Integer loopRate = 0;
+ for (OperationalModeKey operationalMode : supportedOpModes) {
+ if (operationalMode.toString().contains("800G")) {
+ loopRate = 8;
+ } else if (operationalMode.toString().contains("600G")) {
+ loopRate = 6;
+ } else if (operationalMode.toString().contains("400G")) {
+ loopRate = 4;
+ } else if (operationalMode.toString().contains("300G")) {
+ loopRate = 3;
+ } else if (operationalMode.toString().contains("200G")) {
+ loopRate = 2;
+ } else if (operationalMode.toString().contains("100G")) {
+ loopRate = 1;
+ }
+ if (loopRate >= nepRate) {
+ nepRate = loopRate;
+ }
+ }
+ List<AvailablePayloadStructure> aps = new ArrayList<>();
+ Integer cepInstanceNber = otsiProvisioned ? 0 : 1;
+ for (SupportedInterfaceCapability sic : sicList) {
+ switch (sic.getIfCapType().toString().split("\\{")[0]) {
+ case "IfOCHOTU4ODU4":
+ case "IfOCHOTU4ODU4Regen":
+ case "IfOCHOTU4ODU4Uniregen":
+ aps.add(new AvailablePayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(cepInstanceNber))
+ .setCapacity(
+ new CapacityBuilder()
+ .setUnit(CAPACITYUNITGBPS.VALUE)
+ .setValue(Decimal64.valueOf(100.0 * cepInstanceNber, RoundingMode.DOWN))
+ .build())
+ .build());
+ break;
+ case "IfOCHOTUCnODUCn":
+ case "IfOtsiOtucnOducn":
+ case "IfOCHOTUCnODUCnRegen":
+ case "IfOCHOTUCnODUCnUniregen":
+ aps.add(new AvailablePayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, OTUTYPEOTUCN.VALUE,
+ ODUTYPEODUCN.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(nepRate * cepInstanceNber))
+ .setCapacity(
+ new CapacityBuilder()
+ .setUnit(CAPACITYUNITGBPS.VALUE)
+ .setValue(Decimal64.valueOf(nepRate * 100.0 * cepInstanceNber, RoundingMode.DOWN))
+ .build())
+ .build());
+ break;
+ default:
+ break;
+ }
+ }
+ return aps.stream().distinct().toList();
+ }
+
+ public List<SupportedPayloadStructure> createSupportedPayloadStructureForPhtncMedia(
+ Collection<SupportedInterfaceCapability> sicList, List<OperationalModeKey> supportedOpModes) {
+ if (supportedOpModes == null || supportedOpModes.isEmpty()) {
+ return null;
+ }
+ Integer nepRate = 0;
+ Integer loopRate = 0;
+ for (OperationalModeKey operationalMode : supportedOpModes) {
+ if (operationalMode.toString().contains("800G")) {
+ loopRate = 8;
+ } else if (operationalMode.toString().contains("600G")) {
+ loopRate = 6;
+ } else if (operationalMode.toString().contains("400G")) {
+ loopRate = 4;
+ } else if (operationalMode.toString().contains("300G")) {
+ loopRate = 3;
+ } else if (operationalMode.toString().contains("200G")) {
+ loopRate = 2;
+ } else if (operationalMode.toString().contains("100G")) {
+ loopRate = 1;
+ }
+ if (loopRate >= nepRate) {
+ nepRate = loopRate;
+ }
+ }
+ List<SupportedPayloadStructure> sps = new ArrayList<>();
+ for (SupportedInterfaceCapability sic : sicList) {
+ String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
+ switch (ifCapType) {
+ case "IfOCHOTU4ODU4":
+ case "IfOCHOTU4ODU4Regen":
+ case "IfOCHOTU4ODU4Uniregen":
+ sps.add(new SupportedPayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .setCapacity(
+ new CapacityBuilder()
+ .setUnit(CAPACITYUNITGBPS.VALUE)
+ .setValue(Decimal64.valueOf(100.0, RoundingMode.DOWN))
+ .build())
+ .build());
+ break;
+ case "IfOCHOTUCnODUCn":
+ case "IfOtsiOtucnOducn":
+ case "IfOCHOTUCnODUCnRegen":
+ case "IfOCHOTUCnODUCnUniregen":
+ sps.add(new SupportedPayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(
+ PHOTONICLAYERQUALIFIEROTSi.VALUE, OTUTYPEOTUCN.VALUE,
+ ODUTYPEODUCN.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(nepRate))
+ .setCapacity(
+ new CapacityBuilder()
+ .setUnit(CAPACITYUNITGBPS.VALUE)
+ .setValue(Decimal64.valueOf(nepRate * 100.0, RoundingMode.DOWN))
+ .build())
+ .build());
+ break;
+ default:
+ break;
+ }
+ }
+ return sps.stream().distinct().toList();
+ }
+
+ @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH",
+ justification = "Voluntarily No break in switchcase where comment is inserted in following method")
+ public List<SupportedCepLayerProtocolQualifierInstances> createSupportedCepLayerProtocolQualifier(
+ Collection<SupportedInterfaceCapability> sicList, LayerProtocolName lpn) {
+ if (sicList == null) {
+ return new ArrayList<>(List.of(
+ new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build()));
+ }
+ LOG.debug("SIC list = {}", sicList);
+ List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
+ for (SupportedInterfaceCapability sic : sicList) {
+ String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
+ switch (lpn.getName()) {
+ case "ETH":
+ case "DSR":
+ switch (ifCapType) {
+ case "If1GEODU0":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If10GEODU2e":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If10GEODU2":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If10GE":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If100GEODU4":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If100GE":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "IfOCHOTU4ODU4":
+ case "IfOCH":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ default:
+ LOG.error("IfCapability type not managed");
+ break;
+ }
+ break;
+ case "ODU":
+ switch (ifCapType) {
+ case "If1GEODU0":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If10GEODU2e":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If10GEODU2":
+ case "If10GE":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ case "If100GEODU4":
+ case "If100GE":
+ case "IfOCHOTU4ODU4":
+ case "IfOCH":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ default:
+ LOG.error("IfCapability type not managed");
+ break;
+ }
+ break;
+ case "PHOTONIC_MEDIA":
+ switch (ifCapType) {
+ case "IfOCHOTUCnODUCn":
+ case "IfOtsiOtucnOducn":
+ case "IfOCHOTUCnODUCnRegen":
+ case "IfOCHOTUCnODUCnUniregen":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODUCN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(OTUTYPEOTUCN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ //fallthrough
+ case "IfOCH":
+ case "IfOCHOTU4ODU4":
+ case "IfOCHOTU4ODU4Regen":
+ case "IfOCHOTU4ODU4Uniregen":
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ LOG.error("Layer Protocol Name is unknown {}", lpn.getName());
+ break;
+ }
+ }
+ return sclpqiList.stream().distinct().toList();
+ }
+
+ public Map<Double, Double> getXpdrUsedWavelength(TerminationPoint tp) {
+ var tpAug = tp.augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1.class);
+ if (tpAug == null || tpAug.getXpdrNetworkAttributes() == null) {
+ return null;
+ }
+ var xnattWvlgth = tpAug.getXpdrNetworkAttributes().getWavelength();
+ return xnattWvlgth == null || xnattWvlgth.getFrequency() == null || xnattWvlgth.getWidth() == null
+ ? null
+ : new HashMap<>(Map.of(
+ xnattWvlgth.getFrequency().getValue().doubleValue(),
+ xnattWvlgth.getWidth().getValue().doubleValue()));
+ }
+
+ public Map<Double, Double> getPPUsedWavelength(TerminationPoint tp) {
+ PpAttributes ppAtt = tp.augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1.class)
+ .getPpAttributes();
+ return ppAtt == null || ppAtt.getUsedWavelength() == null
+ || ppAtt.getUsedWavelength().entrySet().iterator().next() == null
+ ? null
+ : new HashMap<>(Map.of(
+ ppAtt.getUsedWavelength().entrySet().iterator().next().getValue().getFrequency().getValue().doubleValue(),
+ ppAtt.getUsedWavelength().entrySet().iterator().next().getValue().getFrequency().getValue().doubleValue()));
+ }
+
+ public OwnedNodeEdgePointBuilder addPayloadStructureAndPhotSpecToOnep(
+ String nodeId, Map<Double, Double> freqWidthMap, List<OperationalModeKey> operModeList,
+ Collection<SupportedInterfaceCapability> sicColl, OwnedNodeEdgePointBuilder onepBldr, String keyword) {
+ if (!String.join("+", nodeId, TapiStringConstants.OTSI_MC).equals(keyword)
+ && !String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS).equals(keyword)) {
+ return onepBldr;
+ }
+ //Creating OTS & OTSI_MC NEP specific attributes
+ double naz = 0.01;
+ Uint64 supLoFreq = Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09 + naz));
+ Uint64 supUpFreq = Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09
+ + GridConstant.GRANULARITY * GridConstant.EFFECTIVE_BITS * 1E06 + naz));
+ boolean boolParam;
+ Uint64 upFreq;
+ Uint64 loFreq;
+ SpectrumCapabilityPacBuilder spectrumPac = new SpectrumCapabilityPacBuilder();
+ if (freqWidthMap == null || freqWidthMap.isEmpty()) {
+ upFreq = Uint64.valueOf(0);
+ loFreq = Uint64.valueOf(0);
+ boolParam = false;
+ AvailableSpectrum aspec =
+ new AvailableSpectrumBuilder().setUpperFrequency(supUpFreq).setLowerFrequency(supLoFreq).build();
+ spectrumPac.setAvailableSpectrum(new HashMap<>(Map.of(
+ new AvailableSpectrumKey(aspec.getLowerFrequency(), aspec.getUpperFrequency()), aspec)));
+ } else {
+ upFreq = Uint64.valueOf(Math.round(
+ freqWidthMap.keySet().iterator().next().doubleValue() * 1E09
+ + (freqWidthMap.entrySet().iterator().next().getValue().doubleValue() * 1E06) / 2));
+ loFreq = Uint64.valueOf(Math.round(
+ freqWidthMap.keySet().iterator().next().doubleValue() * 1E09
+ - (freqWidthMap.entrySet().iterator().next().getValue().doubleValue() * 1E06) / 2));
+ boolParam = true;
+ }
+ return onepBldr
+ .setSupportedPayloadStructure(createSupportedPayloadStructureForPhtncMedia(sicColl, operModeList))
+ .setAvailablePayloadStructure(createAvailablePayloadStructureForPhtncMedia(boolParam, sicColl,operModeList))
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121
+ .OwnedNodeEdgePoint1Builder()
+ .setPhotonicMediaNodeEdgePointSpec(
+ new PhotonicMediaNodeEdgePointSpecBuilder()
+ .setSpectrumCapabilityPac(
+ spectrumPac
+ .setOccupiedSpectrum(new HashMap<>(Map.of(
+ new OccupiedSpectrumKey(loFreq, upFreq),
+ new OccupiedSpectrumBuilder()
+ .setUpperFrequency(upFreq)
+ .setLowerFrequency(loFreq)
+ .build())))
+ .setSupportableSpectrum(new HashMap<>(Map.of(
+ new SupportableSpectrumKey(supLoFreq, supUpFreq),
+ new SupportableSpectrumBuilder()
+ .setUpperFrequency(supUpFreq)
+ .setLowerFrequency(supLoFreq)
+ .build())))
+ .build())
+ .build())
+ .build());
+ }
+
+ private OduSwitchingPools createOduSwitchingPoolForTp100G() {
+ Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
+ int count = 1;
+ for (TerminationPoint tp : this.oorNetworkPortList) {
+ NonBlockingList nbl = new NonBlockingListBuilder()
+ .setNblNumber(Uint16.valueOf(count))
+ .setTpList(new HashSet<>(Set.of(
+ tp.getTpId(),
+ tp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
+ .TerminationPoint1.class)
+ .getAssociatedConnectionMapTp().iterator().next())))
+ .build();
+ nblMap.put(nbl.key(), nbl);
+ count++;
+ }
+ return new OduSwitchingPoolsBuilder()
+ .setNonBlockingList(nblMap)
+ .setSwitchingPoolNumber(Uint16.valueOf(1))
+ .build();
+ }
+
+ private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node createTapiNode(
+ Map<NameKey, Name> nodeNames, Set<LayerProtocolName> layerProtocols) {
+ Uuid nodeUuid = null;
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
+ Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
+ if (layerProtocols.contains(LayerProtocolName.DSR)
+ || layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
+ Rule rule = new RuleBuilder()
+ .setLocalId("forward")
+ .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE)
+ .setRuleType(new HashSet<>(Set.of(RuleType.FORWARDING)))
+ .build();
+ nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, new HashMap<>(Map.of(rule.key(), rule)));
+ } else {
+ LOG.error("Undefined LayerProtocolName for {} node {}",
+ nodeNames.get(nodeNames.keySet().iterator().next()).getValueName(),
+ nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
+ }
+ // Empty random creation of mandatory fields for avoiding errors....
+ CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
+ .setCostAlgorithm("Restricted Shortest Path - RSP")
+ .setCostName("HOP_COUNT")
+ .setCostValue(TapiStringConstants.COST_HOP_VALUE)
+ .build();
+ LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
+ .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
+ .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
+ .setTrafficPropertyName("FIXED_LATENCY")
+ .build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ return new NodeBuilder()
+ .setUuid(nodeUuid)
+ .setName(nodeNames)
+ .setLayerProtocolName(layerProtocols)
+ .setAdministrativeState(transformAsToTapiAdminState(this.ietfNodeAdminState.getName()))
+ .setOperationalState(transformOsToTapiOperationalState(this.ietfNodeOperState.getName()))
+ .setLifecycleState(LifecycleState.INSTALLED)
+ .setOwnedNodeEdgePoint(onepl)
+ .setNodeRuleGroup(nodeRuleGroupList)
+ .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
+ .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskParameterPac(
+ new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build())
+ .setErrorCharacteristic("error")
+ .setLossCharacteristic("loss")
+ .setRepeatDeliveryCharacteristic("repeat delivery")
+ .setDeliveryOrderCharacteristic("delivery order")
+ .setUnavailableTimeCharacteristic("unavailable time")
+ .setServerIntegrityProcessCharacteristic("server integrity process")
+ .build();
+ }
+
+ private Uuid getNodeUuid4Dsr(
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
+ Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList,
+ Map<RuleKey, Rule> ruleList) {
+ // client NEP DSR creation on DSR/ODU node
+ for (int i = 0; i < oorClientPortList.size(); i++) {
+ String nodeIdDsr = String.join("+",
+ this.ietfNodeId, TapiStringConstants.DSR, oorClientPortList.get(i).getTpId().getValue());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(nodeIdDsr.getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("NEP = {} has Uuid {} ", nodeIdDsr, nepUuid);
+ this.uuidMap.put(nodeIdDsr, nepUuid);
+ Name name = new NameBuilder()
+ .setValue(nodeIdDsr)
+ .setValueName(OpenroadmNodeType.TPDR.equals(this.ietfNodeType) ? "100G-tpdr" : "NodeEdgePoint_C")
+ .build();
+ OwnedNodeEdgePoint onep = createNep(
+ oorClientPortList.get(i),
+ Map.of(name.key(), name),
+ LayerProtocolName.DSR, LayerProtocolName.DSR, true,
+ String.join("+", this.ietfNodeId, TapiStringConstants.DSR));
+ onepl.put(onep.key(), onep);
+ }
+ // CLIENT NEP E_ODU creation on DSR/ODU node
+ for (int i = 0; i < oorClientPortList.size(); i++) {
+ String nodeIdEodu = String.join("+",
+ this.ietfNodeId, TapiStringConstants.E_ODU, oorClientPortList.get(i).getTpId().getValue());
+ Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(nodeIdEodu.getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("NEP = {} has Uuid {} ", nodeIdEodu, nepUuid1);
+ this.uuidMap.put(nodeIdEodu, nepUuid1);
+ Name onedName = new NameBuilder()
+ .setValueName("eNodeEdgePoint_N")
+ .setValue(nodeIdEodu)
+ .build();
+ OwnedNodeEdgePoint onep = createNep(
+ oorClientPortList.get(i),
+ Map.of(onedName.key(), onedName),
+ LayerProtocolName.ODU, LayerProtocolName.DSR, false,
+ String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU));
+ onepl.put(onep.key(), onep);
+ }
+ // NETWORK NEPs I_ODU creation on DSR/ODU node
+ for (int i = 0; i < oorNetworkPortList.size(); i++) {
+ String nodeIdIodu = String.join("+",
+ this.ietfNodeId, TapiStringConstants.I_ODU, oorNetworkPortList.get(i).getTpId().getValue());
+ Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(nodeIdIodu.getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("NEP = {} has Uuid {} ", nodeIdIodu, nepUuid1);
+ this.uuidMap.put(nodeIdIodu, nepUuid1);
+ Name onedName = new NameBuilder()
+ .setValueName("iNodeEdgePoint_N")
+ .setValue(nodeIdIodu)
+ .build();
+ OwnedNodeEdgePoint onep = createNep(
+ oorNetworkPortList.get(i),
+ Map.of(onedName.key(), onedName),
+ LayerProtocolName.ODU, LayerProtocolName.DSR, true,
+ String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU));
+ onepl.put(onep.key(), onep);
+ }
+ // NETWORK NEP OTS network on DSR/ODU node
+ for (int i = 0; i < oorNetworkPortList.size(); i++) {
+ String nodeIdPmOts = String.join("+",
+ this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS, oorNetworkPortList.get(i).getTpId().getValue());
+ Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(nodeIdPmOts.getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("NEP = {} has Uuid {} ", nodeIdPmOts, nepUuid2);
+ this.uuidMap.put(nodeIdPmOts, nepUuid2);
+ Name onedName = new NameBuilder()
+ .setValueName("eNodeEdgePoint")
+ .setValue(nodeIdPmOts)
+ .build();
+ OwnedNodeEdgePoint onep = createNep(
+ oorNetworkPortList.get(i),
+ Map.of(onedName.key(), onedName),
+ LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
+ String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS));
+ onepl.put(onep.key(), onep);
+ }
+ for (int i = 0; i < oorNetworkPortList.size(); i++) {
+ String nodeIdOtMc = String.join("+",
+ this.ietfNodeId, TapiStringConstants.OTSI_MC, oorNetworkPortList.get(i).getTpId().getValue());
+ Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(nodeIdOtMc.getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("NEP = {} has Uuid {} ", nodeIdOtMc, nepUuid3);
+ this.uuidMap.put(nodeIdOtMc, nepUuid3);
+ Name onedName = new NameBuilder()
+ .setValueName("PhotMedNodeEdgePoint")
+ .setValue(nodeIdOtMc)
+ .build();
+ OwnedNodeEdgePoint onep = createNep(
+ oorNetworkPortList.get(i),
+ Map.of(onedName.key(), onedName),
+ LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
+ String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC));
+ onepl.put(onep.key(), onep);
+ }
+ // create NodeRuleGroup
+ int count = 1;
+ LOG.debug("ODU switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values());
+ String ietfXpdr = String.join("+", this.ietfNodeId, TapiStringConstants.XPDR);
+ for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) {
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
+ nepList = new HashMap<>();
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
+ oduNepList = new HashMap<>();
+ LOG.debug("UUidMap={}", this.uuidMap.keySet());
+ LOG.debug("TP list = {}", nbl.getTpList());
+ for (TpId tp : nbl.getTpList()) {
+ LOG.debug("TP={}", tp.getValue());
+ String ietfEoduTp = String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU, tp.getValue());
+ LOG.debug("UuidKey={}", ietfEoduTp);
+ String ietfIoduTp = String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU, tp.getValue());
+ if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, TapiStringConstants.DSR, tp.getValue()))
+ || this.uuidMap.containsKey(ietfIoduTp)) {
+ String qual = tp.getValue().contains("CLIENT")
+ ? TapiStringConstants.DSR : TapiStringConstants.I_ODU;
+ var nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .node.rule.group.NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(this.uuidMap.get(ietfXpdr))
+ .setNodeEdgePointUuid(this.uuidMap.get(
+ String.join("+", this.ietfNodeId, qual, tp.getValue())))
+ .build();
+ nepList.put(nep.key(), nep);
+ }
+ if (this.uuidMap.containsKey(ietfEoduTp)) {
+ var nep1 = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .node.rule.group.NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(this.uuidMap.get(ietfXpdr))
+ .setNodeEdgePointUuid(this.uuidMap.get(ietfEoduTp))
+ .build();
+ oduNepList.put(nep1.key(), nep1);
+ }
+ if (this.uuidMap.containsKey(ietfIoduTp)) {
+ // TODO already checked with DSR above -> potential factorization ?
+ var nep2 = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .node.rule.group.NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(this.uuidMap.get(ietfXpdr))
+ .setNodeEdgePointUuid(this.uuidMap.get(ietfIoduTp))
+ .build();
+ oduNepList.put(nep2.key(), nep2);
+ }
+ }
+ LOG.debug("NEPLIST (DSR/I_ODU) of [dsr node rule group] is {}", nepList);
+ LOG.debug("NEPLIST (E_ODU/I_ODU) of [odu node rule group] is {}", nepList);
+ // Empty random creation of mandatory fields for avoiding errors....
+ CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
+ .setCostAlgorithm("Restricted Shortest Path - RSP")
+ .setCostName("HOP_COUNT")
+ .setCostValue(TapiStringConstants.COST_HOP_VALUE)
+ .build();
+ LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
+ .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
+ .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
+ .setTrafficPropertyName("FIXED_LATENCY")
+ .build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ NodeRuleGroup nodeRuleGroup1 = new NodeRuleGroupBuilder()
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes(("dsr node rule group " + count)
+ .getBytes(Charset.forName("UTF-8"))).toString()))
+ .setRule(ruleList)
+ .setNodeEdgePoint(nepList)
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
+ .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .build();
+ nodeRuleGroupList.put(nodeRuleGroup1.key(), nodeRuleGroup1);
+ NodeRuleGroup nodeRuleGroup2 = new NodeRuleGroupBuilder()
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes(("odu node rule group " + count)
+ .getBytes(Charset.forName("UTF-8"))).toString()))
+ .setRule(ruleList)
+ .setNodeEdgePoint(oduNepList)
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
+ .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .build();
+ nodeRuleGroupList.put(nodeRuleGroup2.key(), nodeRuleGroup2);
+ count++;
+ }
+ return this.uuidMap.get(ietfXpdr);
+ }
+
+ private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, Map<NameKey, Name> nepNames,
+ LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip, String keyword) {
+ var tp1 = oorTp.augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class);
+ if (tp1.getTpSupportedInterfaces() == null) {
+ LOG.warn("Tp supported interface doesnt exist on TP {}", oorTp.getTpId().getValue());
+ return null;
+ }
+ AdministrativeState adminState =
+ oorTp.augmentation(TerminationPoint1.class).getAdministrativeState() == null
+ ? null
+ : transformAsToTapiAdminState(
+ oorTp.augmentation(TerminationPoint1.class).getAdministrativeState().getName());
+ OperationalState operState =
+ oorTp.augmentation(TerminationPoint1.class).getOperationalState() == null
+ ? null
+ : transformOsToTapiOperationalState(
+ oorTp.augmentation(TerminationPoint1.class).getOperationalState().getName());
+ Collection<SupportedInterfaceCapability> sicColl =
+ tp1.getTpSupportedInterfaces().getSupportedInterfaceCapability().values();
+ OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
+ .setUuid(this.uuidMap.get(String.join("+", keyword, oorTp.getTpId().getValue())))
+ .setLayerProtocolName(nepProtocol)
+ .setName(nepNames)
+ .setSupportedCepLayerProtocolQualifierInstances(
+ createSupportedCepLayerProtocolQualifier(sicColl, nepProtocol))
+ .setDirection(Direction.BIDIRECTIONAL)
+ .setLinkPortRole(PortRole.SYMMETRIC)
+ .setAdministrativeState(adminState)
+ .setOperationalState(operState)
+ .setLifecycleState(LifecycleState.INSTALLED);
+ if (withSip) {
+ onepBldr.setMappedServiceInterfacePoint(
+ createMSIP(1, nepProtocol, oorTp.getTpId().getValue(), keyword, sicColl, operState, adminState));
+ }
+ if (oorTp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
+ List<OperationalModeKey> opModeList = new ArrayList<>();
+ var tp11 = oorTp.augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1.class);
+ if (tp11 == null || tp11.getXpdrNetworkAttributes() == null) {
+ for (SupportedInterfaceCapability sic : sicColl) {
+ String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
+ if (("IfOCHOTUCnODUCn").equals(ifCapType) || ("IfOCHOTUCnODUCnUniregen").equals(ifCapType)
+ || ("IfOCHOTUCnODUCnRegen").equals(ifCapType)) {
+ opModeList.add(new OperationalModeKey("400G"));
+ LOG.warn(TopologyUtils.NOOPMODEDECLARED + "400G rate available", oorTp.getTpId());
+ break;
+ }
+ }
+ opModeList.add(new OperationalModeKey("100G"));
+ LOG.warn(TopologyUtils.NOOPMODEDECLARED + "100G rate available", oorTp.getTpId());
+ } else {
+ opModeList = tp11.getXpdrNetworkAttributes().getSupportedOperationalModes().getOperationalMode()
+ .keySet().stream().toList();
+ }
+ onepBldr = addPayloadStructureAndPhotSpecToOnep(
+ this.ietfNodeId, getXpdrUsedWavelength(oorTp), opModeList, sicColl, onepBldr, keyword);
+ }
+ return onepBldr.build();
+ }
+
+ private ServiceInterfacePoint createSIP(Uuid sipUuid, LayerProtocolName layerProtocol, String tpId,
+ String nodeid, Collection<SupportedInterfaceCapability> supportedInterfaceCapability,
+ OperationalState operState, AdministrativeState adminState) {
+ // TODO: what value should be set in total capacity and available capacity??
+ // LOG.info("SIP name = {}", String.join("+", nodeid, tp.getTpId().getValue()));
+ Name sipName = new NameBuilder()
+ .setValueName("SIP name")
+ .setValue(String.join("+", nodeid, tpId))
+ .build();
+ return new ServiceInterfacePointBuilder()
+ .setUuid(sipUuid)
+ .setName(Map.of(sipName.key(), sipName))
+ .setLayerProtocolName(layerProtocol)
+ .setAdministrativeState(adminState)
+ .setOperationalState(operState)
+ .setLifecycleState(LifecycleState.INSTALLED)
+ .setAvailableCapacity(new AvailableCapacityBuilder().build())
+ .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build())
+ .setSupportedCepLayerProtocolQualifierInstances(createSipSupportedLayerProtocolQualifier(
+ supportedInterfaceCapability, layerProtocol))
+ .build();
+ }
+
+ @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH",
+ justification = "Voluntarily No break in switchcase where comment is inserted in following method")
+ private List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstances>
+ createSipSupportedLayerProtocolQualifier(
+ Collection<SupportedInterfaceCapability> supportedInterfaceCapability, LayerProtocolName lpn) {
+ if (supportedInterfaceCapability == null) {
+ return new ArrayList<>(List.of(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build()));
+ }
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
+ for (SupportedInterfaceCapability sic : supportedInterfaceCapability) {
+ String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
+ switch (lpn.getName()) {
+ case "ETH":
+ case "DSR":
+ switch (ifCapType) {
+ case "If1GEODU0":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If10GEODU2e":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If10GEODU2":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If10GE":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If100GEODU4":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If100GE":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "IfOCHOTU4ODU4":
+ case "IfOCH":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ default:
+ LOG.error("IfCapability type not managed");
+ break;
+ }
+ break;
+ case "ODU":
+ switch (ifCapType) {
+ case "If1GEODU0":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If10GEODU2e":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If10GEODU2":
+ case "If10GE":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ case "If100GEODU4":
+ case "If100GE":
+ case "IfOCHOTU4ODU4":
+ case "IfOCH":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(0))
+ .build());
+ break;
+ default:
+ LOG.error("IfCapability type not managed");
+ break;
+ }
+ break;
+ case "PHOTONIC_MEDIA":
+ switch (ifCapType) {
+ case "IfOCHOTUCnODUCn":
+ case "IfOtsiOtucnOducn":
+ case "IfOCHOTUCnODUCnRegen":
+ case "IfOCHOTUCnODUCnUniregen":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(ODUTYPEODUCN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(OTUTYPEOTUCN.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ //fallthrough
+ case "IfOCH":
+ case "IfOCHOTU4ODU4":
+ case "IfOCHOTU4ODU4Regen":
+ case "IfOCHOTU4ODU4Uniregen":
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
+ .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ LOG.error("Layer Protocol Name is unknown");
+ break;
+ }
+ }
+ return sclpqiList.stream().distinct().toList();
+ }
+
+ public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
+ getTapiNodes() {
+ return tapiNodes;
+ }
+
+ public Map<LinkKey, Link> getTapiLinks() {
+ return tapiLinks;
+ }
+
+ public AdministrativeState transformAsToTapiAdminState(String adminState) {
+ return adminState == null
+ ? null
+ : adminState.equals(AdminStates.InService.getName())
+ || adminState.equals(AdministrativeState.UNLOCKED.getName())
+ ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
+ }
+
+ public OperationalState transformOsToTapiOperationalState(String operState) {
+ return operState == null
+ ? null
+ : operState.equals("inService") || operState.equals(OperationalState.ENABLED.getName())
+ ? OperationalState.ENABLED : OperationalState.DISABLED;
+ }
+
+ public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getTapiSips() {
+ return tapiSips;
+ }
+
+ public void setTapiSips(Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSip) {
+ this.tapiSips.putAll(tapiSip);
+ }
+
+}
import java.nio.charset.Charset;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPools;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmTpType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.Node1;
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.network.Node;
-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.node.TerminationPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPEGigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU0;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
-import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder;
+import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiFullTopo.class);
private String ietfNodeId;
private OpenroadmNodeType ietfNodeType;
- private AdminStates ietfNodeAdminState;
- private State ietfNodeOperState;
- private List<TerminationPoint> oorClientPortList;
- private List<TerminationPoint> oorNetworkPortList;
- private OduSwitchingPools oorOduSwitchingPool;
private Uuid tapiTopoUuid;
- private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
tapiNodes;
private Map<LinkKey, Link> tapiLinks;
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
- private Map<String, Uuid> uuidMap;
private final TapiLink tapiLink;
this.tapiTopoUuid = tapiTopoUuid;
this.tapiNodes = new HashMap<>();
this.tapiLinks = new HashMap<>();
- this.uuidMap = new HashMap<>();
this.tapiSips = new HashMap<>();
this.tapiLink = tapiLink;
}
- public void convertNode(Node ietfNode, List<String> networkPorts) {
- this.ietfNodeId = ietfNode.getNodeId().getValue();
- if (ietfNode.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
- == null) {
- return;
- }
- this.ietfNodeType = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class).getNodeType();
- this.ietfNodeAdminState = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
- .getAdministrativeState();
- this.ietfNodeOperState = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
- .getOperationalState();
- this.oorNetworkPortList = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().values().stream()
- .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.XPONDERNETWORK.getIntValue()
- && networkPorts.contains(tp.getTpId().getValue()))
- .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
- .collect(Collectors.toList());
- if (!OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
- this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
- .values().stream().findFirst().orElseThrow();
- this.oorClientPortList = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().values().stream()
- .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.XPONDERCLIENT.getIntValue())
- .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
- .collect(Collectors.toList());
- } else {
- this.oorOduSwitchingPool = createOduSwitchingPoolForTp100G();
- List<TpId> tpList = this.oorOduSwitchingPool.getNonBlockingList().values().stream()
- .flatMap(nbl -> nbl.getTpList().stream())
- .collect(Collectors.toList());
- this.oorClientPortList = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().values().stream()
- .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.XPONDERCLIENT.getIntValue() && tpList.contains(tp.getTpId()))
- .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
- .collect(Collectors.toList());
- this.oorClientPortList.forEach(tp -> LOG.info("tp = {}", tp.getTpId()));
- }
-
- // node creation [DSR/ODU]
- LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId);
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)).getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR), nodeUuid);
- Name nameDsrNode = new NameBuilder().setValueName("dsr/odu node name").setValue(
- String.join("+", this.ietfNodeId, TapiStringConstants.DSR)).build();
- Name nameNodeType = new NameBuilder().setValueName("Node Type")
- .setValue(this.ietfNodeType.getName()).build();
- Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
- .Node dsrNode = createTapiNode(Map.of(nameDsrNode.key(), nameDsrNode, nameNodeType.key(), nameNodeType),
- dsrLayerProtocols);
- LOG.info("DSR Node {} should have {} NEPs and {} SIPs", this.ietfNodeId,
- this.oorClientPortList.size() + 2 * this.oorNetworkPortList.size(),
- this.oorClientPortList.size() + this.oorNetworkPortList.size());
- LOG.info("DSR Node {} has {} NEPs and {} SIPs", this.ietfNodeId,
- dsrNode.getOwnedNodeEdgePoint().values().size(), dsrNode.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getMappedServiceInterfacePoint() != null).count());
- tapiNodes.put(dsrNode.key(), dsrNode);
-
- // node creation [otsi]
- LOG.info("creation of an OTSi node for {}", this.ietfNodeId);
- nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI), nodeUuid);
- Name nameOtsiNode = new NameBuilder().setValueName("otsi node name").setValue(
- String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)).build();
- Set<LayerProtocolName> otsiLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
- .Node otsiNode = createTapiNode(Map.of(nameOtsiNode.key(), nameOtsiNode, nameNodeType.key(), nameNodeType),
- otsiLayerProtocols);
- LOG.info("OTSi Node {} should have {} NEPs and {} SIPs", this.ietfNodeId, 3 * this.oorNetworkPortList.size(),
- this.oorNetworkPortList.size());
- LOG.info("OTSi Node {} has {} NEPs and {} SIPs", this.ietfNodeId,
- otsiNode.getOwnedNodeEdgePoint().values().size(), otsiNode.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getMappedServiceInterfacePoint() != null).count());
- tapiNodes.put(otsiNode.key(), otsiNode);
-
- // transitional link cration between network nep of DSR/ODU node and iNep of otsi node
- LOG.info("creation of transitional links between DSR/ODU and OTSi nodes");
- createTapiTransitionalLinks();
- }
-
- public void convertRdmToRdmLinks(List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link> rdmTordmLinkList) {
+ public void convertRdmToRdmLinks(
+ List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link> rdmTordmLinkList) {
List<String> linksToNotConvert = new ArrayList<>();
LOG.info("creation of {} roadm to roadm links", rdmTordmLinkList.size() / 2);
- for (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
- .Link link : rdmTordmLinkList) {
+ for (var link : rdmTordmLinkList) {
if (!linksToNotConvert.contains(link.getLinkId().getValue())) {
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link oppositeLink = rdmTordmLinkList.stream()
+ var oppositeLink = rdmTordmLinkList.stream()
.filter(l -> l.getLinkId().equals(link.augmentation(Link1.class).getOppositeLink()))
.findAny().orElse(null);
-
AdminStates oppLnkAdmState = null;
State oppLnkOpState = null;
if (oppositeLink != null) {
oppLnkAdmState = oppositeLink.augmentation(Link1.class).getAdministrativeState();
oppLnkOpState = oppositeLink.augmentation(Link1.class).getOperationalState();
}
- String adminState =
- link.augmentation(Link1.class).getAdministrativeState() == null
- || oppLnkAdmState == null
- ? null
- : this.tapiLink.setTapiAdminState(
- link.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName();
- String operState =
- link.augmentation(Link1.class).getOperationalState() == null
- || oppLnkOpState == null
- ? null
- : this.tapiLink.setTapiOperationalState(
- link.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
- Link tapLink = this.tapiLink.createTapiLink(String.join("-",
+ Link tapLink = this.tapiLink.createTapiLink(
+ String.join("-",
link.getSource().getSourceNode().getValue().split("-")[0],
link.getSource().getSourceNode().getValue().split("-")[1]),
- link.getSource().getSourceTp().getValue(), String.join("-",
+ link.getSource().getSourceTp().getValue(),
+ String.join("-",
link.getDestination().getDestNode().getValue().split("-")[0],
link.getDestination().getDestNode().getValue().split("-")[1]),
link.getDestination().getDestTp().getValue(), TapiStringConstants.OMS_RDM_RDM_LINK,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, adminState, operState, Set.of(LayerProtocolName.PHOTONICMEDIA),
- Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), this.tapiTopoUuid);
- linksToNotConvert.add(link
- .augmentation(Link1.class)
- .getOppositeLink().getValue());
+ TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
+ //adminState,
+ link.augmentation(Link1.class).getAdministrativeState() == null || oppLnkAdmState == null
+ ? null
+ : this.tapiLink.setTapiAdminState(
+ link.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName(),
+ //operState,
+ link.augmentation(Link1.class).getOperationalState() == null || oppLnkOpState == null
+ ? null
+ : this.tapiLink.setTapiOperationalState(
+ link.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName(),
+ Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()),
+ this.tapiTopoUuid);
+ linksToNotConvert.add(link.augmentation(Link1.class).getOppositeLink().getValue());
tapiLinks.put(tapLink.key(), tapLink);
}
}
public void convertRoadmNode(Node roadm, Network openroadmTopo) {
this.ietfNodeId = roadm.getNodeId().getValue();
this.ietfNodeType = roadm.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class).getNodeType();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
+ .getNodeType();
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist = new HashMap<>();
// 1. Get degree and srg nodes to map TPs into NEPs
if (openroadmTopo.getNode() == null) {
int numSips = 0;
List<Node> nodeList = new ArrayList<Node>(openroadmTopo.getNode().values());
for (Node node:nodeList) {
- if (node.getSupportingNode().values().stream().noneMatch(sp -> sp.getNodeRef().getValue()
- .equals(this.ietfNodeId))) {
- LOG.warn("Abstracted node {} is not part of {}",
- node.getNodeId().getValue(), this.ietfNodeId);
+ if (node.getSupportingNode().values().stream()
+ .noneMatch(sp -> sp.getNodeRef().getValue().equals(this.ietfNodeId))) {
+ LOG.debug("Abstracted node {} is not part of {}", node.getNodeId().getValue(), this.ietfNodeId);
continue;
}
if (node.augmentation(Node1.class) == null
- && node.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.Node1.class) == null) {
+ && node.augmentation(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .Node1.class) == null) {
LOG.warn("Abstracted node {} doesnt have type of node or is not disaggregated",
node.getNodeId().getValue());
continue;
}
- OpenroadmNodeType nodeType = node.augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev230526.Node1.class).getNodeType();
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1 =
- node.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.Node1.class);
+ OpenroadmNodeType nodeType = node.augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
+ .getNodeType();
+ var node1 = node.augmentation(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class);
LOG.info("TPs of node: {}", node1.getTerminationPoint().values());
switch (nodeType.getIntValue()) {
case 11:
// Get only external TPs of the degree
List<TerminationPoint> degPortList = node1.getTerminationPoint().values().stream()
.filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.DEGREETXRXTTP.getIntValue()
+ == OpenroadmTpType.DEGREETXRXTTP.getIntValue()
|| tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.DEGREERXTTP.getIntValue()
+ == OpenroadmTpType.DEGREERXTTP.getIntValue()
|| tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.DEGREETXTTP.getIntValue())
+ == OpenroadmTpType.DEGREETXTTP.getIntValue())
.collect(Collectors.toList());
// Convert TP List in NEPs and put it in onepl
LOG.info("Degree port List: {}", degPortList);
// TODO: deg port could be sip. e.g. MDONS
- oneplist.putAll(populateNepsForRdmNode(degPortList, false));
- // oneplist.putAll(populateNepsForRdmNode(node.getNodeId().getValue(), degPortList, false));
- numNeps += degPortList.size() * 3;
+ oneplist.putAll(populateNepsForRdmNode(degPortList, false, TapiStringConstants.PHTNC_MEDIA_OTS));
+ oneplist.putAll(populateNepsForRdmNode(degPortList, false, TapiStringConstants.PHTNC_MEDIA_OMS));
+ numNeps += degPortList.size() * 2;
break;
case 12:
LOG.info("SRG node");
// Get only external TPs of the srg
List<TerminationPoint> srgPortList = node1.getTerminationPoint().values().stream()
.filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.SRGTXRXPP.getIntValue()
+ == OpenroadmTpType.SRGTXRXPP.getIntValue()
|| tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.SRGRXPP.getIntValue()
+ == OpenroadmTpType.SRGRXPP.getIntValue()
|| tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.SRGTXPP.getIntValue())
+ == OpenroadmTpType.SRGTXPP.getIntValue())
.collect(Collectors.toList());
// Convert TP List in NEPs and put it in onepl
LOG.info("Srg port List: {}", srgPortList);
- oneplist.putAll(populateNepsForRdmNode(srgPortList, true));
- // oneplist.putAll(populateNepsForRdmNode(node.getNodeId().getValue(), srgPortList, true));
- numNeps += srgPortList.size() * 3;
+ oneplist.putAll(populateNepsForRdmNode(srgPortList, true, TapiStringConstants.PHTNC_MEDIA_OTS));
+ numNeps += srgPortList.size();
numSips += srgPortList.size();
break;
default:
- LOG.error("Node {} tyoe not supported", nodeType.getName());
+ LOG.error("Node {} type not supported", nodeType.getName());
}
}
// create tapi Node
// UUID
- LOG.info("Creation of PHOTONIC node for {}", roadm.getNodeId().getValue());
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", roadm.getNodeId().getValue(),
- TapiStringConstants.PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
+ String nodeIdPhMed = String.join("+", roadm.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA);
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(nodeIdPhMed.getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("Creation of PHOTONIC node for {}, of Uuid {}", roadm.getNodeId().getValue(), nodeUuid);
// Names
- Name nodeNames = new NameBuilder().setValueName("roadm node name")
- .setValue(String.join("+", roadm.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA)).build();
- Name nameNodeType = new NameBuilder().setValueName("Node Type")
- .setValue(this.ietfNodeType.getName()).build();
+ Name nodeNames = new NameBuilder().setValueName("roadm node name").setValue(nodeIdPhMed).build();
+ Name nameNodeType = new NameBuilder().setValueName("Node Type").setValue(this.ietfNodeType.getName()).build();
// Protocol Layer
Set<LayerProtocolName> layerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA);
// Build tapi node
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
- .Node roadmNode = createRoadmTapiNode(nodeUuid,
- Map.of(nodeNames.key(), nodeNames, nameNodeType.key(), nameNodeType), layerProtocols, oneplist);
+ var roadmNode = createRoadmTapiNode(
+ nodeUuid, Map.of(nodeNames.key(), nodeNames, nameNodeType.key(), nameNodeType), layerProtocols, oneplist);
// TODO add states corresponding to device config
LOG.info("ROADM node {} should have {} NEPs and {} SIPs", roadm.getNodeId().getValue(), numNeps, numSips);
- LOG.info("ROADM node {} has {} NEPs and {} SIPs", roadm.getNodeId().getValue(),
+ LOG.info("ROADM node {} has {} NEPs and {} SIPs",
+ roadm.getNodeId().getValue(),
roadmNode.nonnullOwnedNodeEdgePoint().values().size(),
roadmNode.nonnullOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getMappedServiceInterfacePoint() != null).count());
-
tapiNodes.put(roadmNode.key(), roadmNode);
}
- private OduSwitchingPools createOduSwitchingPoolForTp100G() {
- Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
- int count = 1;
- for (TerminationPoint tp : this.oorNetworkPortList) {
- TpId tpid1 = tp.getTpId();
- TpId tpid2 = tp.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1.class)
- .getAssociatedConnectionMapTp().iterator().next();
- Set<TpId> tpList = new HashSet<>();
- tpList.add(tpid1);
- tpList.add(tpid2);
- NonBlockingList nbl = new NonBlockingListBuilder()
- .setNblNumber(Uint16.valueOf(count))
- .setTpList(tpList)
- .build();
- nblMap.put(nbl.key(), nbl);
- count++;
- }
- return new OduSwitchingPoolsBuilder()
- .setNonBlockingList(nblMap)
- .setSwitchingPoolNumber(Uint16.valueOf(1))
- .build();
- }
-
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node
- createTapiNode(Map<NameKey, Name> nodeNames, Set<LayerProtocolName> layerProtocols) {
- Uuid nodeUuid = null;
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
- Map<RuleKey, Rule> ruleList = new HashMap<>();
- Rule rule = new RuleBuilder()
- .setLocalId("forward")
- .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
- .setRuleType(RuleType.FORWARDING)
- .build();
- ruleList.put(rule.key(), rule);
- if (layerProtocols.contains(LayerProtocolName.DSR)) {
- nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
- } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
- nodeUuid = getNodeUuid4Photonic(onepl, nodeRuleGroupList, ruleList);
- } else {
- LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
- .getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
- }
+ private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node createRoadmTapiNode(
+ Uuid nodeUuid, Map<NameKey, Name> nameMap, Set<LayerProtocolName> layerProtocols,
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
// Empty random creation of mandatory fields for avoiding errors....
CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
.setCostAlgorithm("Restricted Shortest Path - RSP")
.build();
LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
.setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
.setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.build();
- return new NodeBuilder()
- .setUuid(nodeUuid)
- .setName(nodeNames)
- .setLayerProtocolName(layerProtocols)
- .setAdministrativeState(this.tapiLink.setTapiAdminState(this.ietfNodeAdminState.getName()))
- .setOperationalState(this.tapiLink.setTapiOperationalState(this.ietfNodeOperState.getName()))
- .setLifecycleState(LifecycleState.INSTALLED)
- .setOwnedNodeEdgePoint(onepl)
- .setNodeRuleGroup(nodeRuleGroupList)
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .setErrorCharacteristic("error")
- .setLossCharacteristic("loss")
- .setRepeatDeliveryCharacteristic("repeat delivery")
- .setDeliveryOrderCharacteristic("delivery order")
- .setUnavailableTimeCharacteristic("unavailable time")
- .setServerIntegrityProcessCharacteristic("server integrity process")
- .build();
- }
-
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node
- createRoadmTapiNode(Uuid nodeUuid, Map<NameKey, Name> nameMap, Set<LayerProtocolName> layerProtocols,
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
- // Empty random creation of mandatory fields for avoiding errors....
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue(TapiStringConstants.COST_HOP_VALUE)
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
- .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
- .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
- .setTrafficPropertyName("FIXED_LATENCY")
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
.build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setOwnedNodeEdgePoint(oneplist)
- .setNodeRuleGroup(createNodeRuleGroupForRdmNode(nodeUuid, oneplist.values()))
+ .setNodeRuleGroup(new ConvertORToTapiTopology(this.tapiTopoUuid)
+ .createNodeRuleGroupForRdmNode("Full",nodeUuid, this.ietfNodeId, oneplist.values()))
.setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
.setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskParameterPac(
+ new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build())
.setErrorCharacteristic("error")
.setLossCharacteristic("loss")
.setRepeatDeliveryCharacteristic("repeat delivery")
.build();
}
- private Uuid getNodeUuid4Photonic(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList,
- Map<RuleKey, Rule> ruleList) {
- Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI));
- // iNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI));
- onepl.put(onep.key(), onep);
- }
- // eNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
- Name onedName = new NameBuilder()
- .setValueName("eNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, false,
- String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI));
- onepl.put(onep.key(), onep);
- }
- // Photonic Media Nep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
- Name onedName = new NameBuilder()
- .setValueName("PhotMedNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, false,
- String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA));
- onepl.put(onep.key(), onep);
- }
- // create NodeRuleGroup
- int count = 1;
- LOG.info("OTSi switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values());
- for (TerminationPoint tp : this.oorNetworkPortList) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
- .setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- tp.getTpId().getValue())))
- .build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
- .setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- tp.getTpId().getValue())))
- .build();
- nepList.put(inep.key(), inep);
- nepList.put(enep.key(), enep);
- // Empty random creation of mandatory fields for avoiding errors....
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue(TapiStringConstants.COST_HOP_VALUE)
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
- .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
- .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
- .build();
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(("otsi node rule group " + count).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .build();
- nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeUuid;
- }
-
- private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
- Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR));
- // client nep creation on DSR node
- for (int i = 0; i < oorClientPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- oorClientPortList.get(i).getTpId().getValue()));
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- oorClientPortList.get(i).getTpId().getValue()), nepUuid);
- NameBuilder nameBldr = new NameBuilder().setValue(
- String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- oorClientPortList.get(i).getTpId().getValue()));
- Name name;
- if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
- name = nameBldr.setValueName("100G-tpdr").build();
- } else {
- name = nameBldr.setValueName("NodeEdgePoint_C").build();
- }
-
- OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
- LayerProtocolName.DSR, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR));
- onepl.put(onep.key(), onep);
- }
- // network nep creation on I_ODU node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid);
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint_N")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
- TapiStringConstants.I_ODU));
- onepl.put(onep.key(), onep);
- }
- // network nep creation on E_ODU node
- for (int i = 0; i < oorClientPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
- oorClientPortList.get(i).getTpId().getValue()));
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
- oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
- oorClientPortList.get(i).getTpId().getValue()), nepUuid);
- Name onedName = new NameBuilder()
- .setValueName("eNodeEdgePoint_N")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
- oorClientPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, false, String.join("+", this.ietfNodeId,
- TapiStringConstants.E_ODU));
- onepl.put(onep.key(), onep);
- }
- // create NodeRuleGroup
- int count = 1;
- LOG.info("ODU switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values());
- for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
- LOG.info("UUidMap={}", this.uuidMap.keySet());
- LOG.info("TP list = {}", nbl.getTpList());
- for (TpId tp : nbl.getTpList()) {
- LOG.info("TP={}", tp.getValue());
- LOG.info("UuidKey={}", String.join("+", this.ietfNodeId,
- TapiStringConstants.E_ODU, tp.getValue()));
- if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
- TapiStringConstants.E_ODU, tp.getValue()))
- && this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR, tp.getValue()))) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep1 = new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)))
- .setNodeEdgePointUuid(this.uuidMap.get(String.join(
- "+", this.ietfNodeId, TapiStringConstants.DSR, tp.getValue())))
- .build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep2 = new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)))
- .setNodeEdgePointUuid(this.uuidMap.get(String.join(
- "+", this.ietfNodeId, TapiStringConstants.E_ODU, tp.getValue())))
- .build();
- nepList.put(nep1.key(), nep1);
- nepList.put(nep2.key(), nep2);
- }
- }
- // Empty random creation of mandatory fields for avoiding errors....
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue(TapiStringConstants.COST_HOP_VALUE)
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
- .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
- .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
- .build();
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes(("dsr node rule group " + count)
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .build();
- nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeUuid;
- }
-
- private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, Map<NameKey, Name> nepNames,
- LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip,
- String keyword) {
- String key = String.join("+", keyword, oorTp.getTpId().getValue());
- OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
- .setUuid(this.uuidMap.get(key))
- .setLayerProtocolName(nepProtocol)
- .setName(nepNames);
- if (withSip) {
- onepBldr.setMappedServiceInterfacePoint(createMSIP(1, nepProtocol, oorTp, keyword));
- }
- AdministrativeState adminState = null;
- OperationalState operState = null;
- if (oorTp.augmentation(TerminationPoint1.class).getAdministrativeState() != null) {
- adminState = this.tapiLink.setTapiAdminState(oorTp.augmentation(TerminationPoint1.class)
- .getAdministrativeState().getName());
- }
- if (oorTp.augmentation(TerminationPoint1.class).getOperationalState() != null) {
- operState = this.tapiLink.setTapiOperationalState(oorTp.augmentation(TerminationPoint1.class)
- .getOperationalState().getName());
- }
- onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedLayerProtocolQualifier(oorTp, nepProtocol))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL)
- .setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(adminState)
- .setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
- return onepBldr.build();
- }
-
- private Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> populateNepsForRdmNode(List<TerminationPoint> tpList,
- boolean withSip) {
+ private Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> populateNepsForRdmNode(
+ List<TerminationPoint> tpList, boolean withSip, String nepPhotonicSublayer) {
// create neps for MC and OTSiMC and Photonic Media
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
for (TerminationPoint tp:tpList) {
- // Admin and oper state common for all tps
- AdminStates admin = tp.augmentation(TerminationPoint1.class).getAdministrativeState();
- State oper = tp.augmentation(TerminationPoint1.class).getOperationalState();
// PHOTONIC MEDIA nep
- LOG.info("PHOTO NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- tp.getTpId().getValue()));
+ String nodeIdNepTp = String.join("+", this.ietfNodeId, nepPhotonicSublayer, tp.getTpId().getValue());
+ LOG.info("PHOTO NEP = {}", nodeIdNepTp);
Name nepName = new NameBuilder()
- .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- tp.getTpId().getValue()))
+ .setValueName(nepPhotonicSublayer + "NodeEdgePoint")
+ .setValue(nodeIdNepTp)
.build();
-
OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
- TapiStringConstants.PHTNC_MEDIA, tp.getTpId().getValue()))
- .getBytes(Charset.forName("UTF-8"))).toString()))
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes(nodeIdNepTp.getBytes(Charset.forName("UTF-8"))).toString()))
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
.setName(Map.of(nepName.key(), nepName))
- .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL)
+ .setSupportedCepLayerProtocolQualifierInstances(
+ new ArrayList<>(List.of(
+ new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(
+ TapiStringConstants.PHTNC_MEDIA_OMS.equals(nepPhotonicSublayer)
+ ? PHOTONICLAYERQUALIFIEROMS.VALUE
+ : PHOTONICLAYERQUALIFIEROTS.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build())))
+ .setDirection(Direction.BIDIRECTIONAL)
.setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName()))
- .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName()))
+ .setAdministrativeState(this.tapiLink.setTapiAdminState(
+ // Admin state common for all tps
+ tp.augmentation(TerminationPoint1.class).getAdministrativeState().getName()))
+ .setOperationalState(this.tapiLink.setTapiOperationalState(
+ // Oper state common for all tps
+ tp.augmentation(TerminationPoint1.class).getOperationalState().getName()))
.setLifecycleState(LifecycleState.INSTALLED)
- .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
.build();
onepMap.put(onep.key(), onep);
-
- // MC nep
- LOG.info("MC NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.MC,
- tp.getTpId().getValue()));
- Name nepName1 = new NameBuilder()
- .setValueName(TapiStringConstants.MC + "NodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.MC, tp.getTpId().getValue()))
- .build();
- OwnedNodeEdgePointBuilder onepBldr1 = new OwnedNodeEdgePointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
- TapiStringConstants.MC, tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString()))
- .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
- .setName(Map.of(nepName1.key(), nepName1))
- .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL)
- .setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName()))
- .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName()))
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
- if (withSip) {
- onepBldr1.setMappedServiceInterfacePoint(createMSIP(1, LayerProtocolName.PHOTONICMEDIA,
- tp, String.join("+", this.ietfNodeId, TapiStringConstants.MC)));
- }
- OwnedNodeEdgePoint onep1 = onepBldr1.build();
- onepMap.put(onep1.key(), onep1);
-
- // OTSiMC nep
- LOG.info("OTSi NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
- tp.getTpId().getValue()));
- Name nepName2 = new NameBuilder()
- .setValueName(TapiStringConstants.OTSI_MC + "NodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
- tp.getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep2 = new OwnedNodeEdgePointBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
- TapiStringConstants.OTSI_MC, tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
- .setName(Map.of(nepName2.key(), nepName2))
- .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL)
- .setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName()))
- .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName()))
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
- .build();
- onepMap.put(onep2.key(), onep2);
}
return onepMap;
}
- private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForRdmNode(Uuid nodeUuid,
- Collection<OwnedNodeEdgePoint> onepl) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepMap = new HashMap<>();
- for (OwnedNodeEdgePoint onep : onepl) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(nodeUuid)
- .setNodeEdgePointUuid(onep.key().getUuid())
- .build();
- nepMap.put(nep.key(), nep);
- }
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
- Map<RuleKey, Rule> ruleList = new HashMap<>();
- Rule rule = new RuleBuilder()
- .setLocalId("forward")
- .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
- .setRuleType(RuleType.FORWARDING)
- .build();
- ruleList.put(rule.key(), rule);
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((this.ietfNodeId + " node rule group")
- .getBytes(Charset.forName("UTF-8"))).toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepMap)
- .build();
- nodeRuleGroupMap.put(nodeRuleGroup.key(), nodeRuleGroup);
- return nodeRuleGroupMap;
- }
-
- private Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> createMSIP(int nb,
- LayerProtocolName layerProtocol,
- TerminationPoint tp,
- String nodeid) {
- // add them to SIP context
- Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
- for (int i = 0; i < nb; i++) {
- LOG.info("SIP = {}", String.join("+", "SIP", nodeid, tp.getTpId().getValue()));
- Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", nodeid,
- tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
- MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
- .setServiceInterfacePointUuid(sipUuid).build();
- ServiceInterfacePoint sip = createSIP(sipUuid, layerProtocol, tp, nodeid);
- this.tapiSips.put(sip.key(), sip);
- msipl.put(msip.key(), msip);
- }
- return msipl;
- }
-
- private ServiceInterfacePoint createSIP(Uuid sipUuid, LayerProtocolName layerProtocol, TerminationPoint tp,
- String nodeid) {
- // TODO: what value should be set in total capacity and available capacity??
- // LOG.info("SIP name = {}", String.join("+", nodeid, tp.getTpId().getValue()));
- Name sipName = new NameBuilder()
- .setValueName("SIP name")
- .setValue(String.join("+", nodeid, tp.getTpId().getValue()))
- .build();
- AdministrativeState adminState = null;
- OperationalState operState = null;
- if (tp.augmentation(TerminationPoint1.class).getAdministrativeState() != null) {
- adminState = this.tapiLink.setTapiAdminState(tp.augmentation(TerminationPoint1.class)
- .getAdministrativeState().getName());
- }
- if (tp.augmentation(TerminationPoint1.class).getOperationalState() != null) {
- operState = this.tapiLink.setTapiOperationalState(tp.augmentation(TerminationPoint1.class)
- .getOperationalState().getName());
- }
- return new ServiceInterfacePointBuilder()
- .setUuid(sipUuid)
- .setName(Map.of(sipName.key(), sipName))
- .setLayerProtocolName(layerProtocol)
- .setAdministrativeState(adminState)
- .setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setAvailableCapacity(new AvailableCapacityBuilder().build())
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build())
- .setSupportedLayerProtocolQualifier(createSupportedLayerProtocolQualifier(tp, layerProtocol))
- .build();
- }
-
- private Set<LAYERPROTOCOLQUALIFIER> createSupportedLayerProtocolQualifier(TerminationPoint tp,
- LayerProtocolName lpn) {
- Set<LAYERPROTOCOLQUALIFIER> sclpqSet = new HashSet<>();
- org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1 tp1 =
- tp.augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class);
- if (tp1 == null) {
- return new HashSet<>(sclpqSet);
- }
- if (tp1.getTpSupportedInterfaces() == null) {
- LOG.warn("Tp supported interface doesnt exist on TP {}", tp.getTpId().getValue());
- return new HashSet<>(sclpqSet);
- }
- Collection<SupportedInterfaceCapability> sicList = tp1.getTpSupportedInterfaces()
- .getSupportedInterfaceCapability().values();
- for (SupportedInterfaceCapability sic : sicList) {
- String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
- switch (lpn.getName()) {
- case "DSR":
- switch (ifCapType) {
- // TODO: it may be needed to add more cases clauses if the interface capabilities of a
- // port are extended in the config file
- case "If1GEODU0":
- sclpqSet.add(ODUTYPEODU0.VALUE);
- sclpqSet.add(DIGITALSIGNALTYPEGigE.VALUE);
- break;
- case "If10GEODU2e":
- sclpqSet.add(ODUTYPEODU2E.VALUE);
- sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If10GEODU2":
- sclpqSet.add(ODUTYPEODU2.VALUE);
- sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If10GE":
- sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If100GEODU4":
- sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE);
- sclpqSet.add(ODUTYPEODU4.VALUE);
- break;
- case "If100GE":
- sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE);
- break;
- case "IfOCHOTU4ODU4":
- case "IfOCH":
- sclpqSet.add(ODUTYPEODU4.VALUE);
- break;
- default:
- LOG.error("IfCapability type not managed");
- break;
- }
- break;
- case "ODU":
- switch (ifCapType) {
- // TODO: it may be needed to add more cases clauses if the interface capabilities of a
- // port are extended in the config file
- case "If1GEODU0":
- sclpqSet.add(ODUTYPEODU0.VALUE);
- break;
- case "If10GEODU2e":
- sclpqSet.add(ODUTYPEODU2E.VALUE);
- break;
- case "If10GEODU2":
- case "If10GE":
- sclpqSet.add(ODUTYPEODU2.VALUE);
- break;
- case "If100GEODU4":
- case "If100GE":
- case "IfOCHOTU4ODU4":
- case "IfOCH":
- sclpqSet.add(ODUTYPEODU4.VALUE);
- break;
- default:
- LOG.error("IfCapability type not managed");
- break;
- }
- break;
- case "PHOTONIC_MEDIA":
- if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) {
- sclpqSet.add(PHOTONICLAYERQUALIFIEROTSi.VALUE);
- sclpqSet.add(PHOTONICLAYERQUALIFIEROMS.VALUE);
- }
- break;
- default:
- LOG.error("Layer Protocol Name is unknown");
- break;
- }
- }
- return sclpqSet;
- }
-
- private void createTapiTransitionalLinks() {
- for (TerminationPoint tp : this.oorNetworkPortList) {
- Link transiLink = tapiLink.createTapiLink(this.ietfNodeId, tp.getTpId().getValue(), this.ietfNodeId,
- tp.getTpId().getValue(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR,
- TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI,
- "inService", "inService", Set.of(LayerProtocolName.ODU, LayerProtocolName.PHOTONICMEDIA),
- Set.of(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()),
- this.tapiTopoUuid);
- this.tapiLinks.put(transiLink.key(), transiLink);
- }
- }
-
- public void convertXpdrToRdmLinks(List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link> xpdrRdmLinkList) {
+ public void convertXpdrToRdmLinks(
+ List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link> xpdrRdmLinkList) {
List<String> linksToNotConvert = new ArrayList<>();
LOG.info("creation of {} xpdr to roadm links", xpdrRdmLinkList.size() / 2);
// LOG.info("Link list = {}", xpdrRdmLinkList.toString());
- for (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link link:xpdrRdmLinkList) {
+ for (var link:xpdrRdmLinkList) {
if (!linksToNotConvert.contains(link.getLinkId().getValue())) {
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
- .ietf.network.topology.rev180226.networks.network.Link oppositeLink = xpdrRdmLinkList.stream()
+ var oppositeLink = xpdrRdmLinkList.stream()
.filter(l -> l.getLinkId().equals(link.augmentation(Link1.class).getOppositeLink())).findAny()
.orElse(null);
-
AdminStates oppLnkAdmState = null;
State oppLnkOpState = null;
if (oppositeLink != null) {
oppLnkAdmState = oppositeLink.augmentation(Link1.class).getAdministrativeState();
oppLnkOpState = oppositeLink.augmentation(Link1.class).getOperationalState();
}
- String adminState =
- link.augmentation(Link1.class).getAdministrativeState() == null
- || oppLnkAdmState == null
- ? null
- : this.tapiLink.setTapiAdminState(
- link.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName();
- String operState =
- link.augmentation(Link1.class).getOperationalState() == null
- || oppLnkOpState == null
- ? null
- : this.tapiLink.setTapiOperationalState(
- link.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
-
- String sourceNode = (link.getSource().getSourceNode().getValue().contains("ROADM"))
- ? getIdBasedOnModelVersion(link.getSource().getSourceNode().getValue())
- : link.getSource().getSourceNode().getValue();
- String sourceTp = link.getSource().getSourceTp().getValue();
- String sourceNodeQual = sourceNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA
- : TapiStringConstants.OTSI;
- String destNode = (link.getDestination().getDestNode().getValue().contains("ROADM"))
- ? getIdBasedOnModelVersion(link.getDestination().getDestNode().getValue())
- : link.getDestination().getDestNode().getValue();
- String destTp = link.getDestination().getDestTp().getValue();
- String destNodeQual = destNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA
- : TapiStringConstants.OTSI;
- Link tapLink = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
- TapiStringConstants.OMS_XPDR_RDM_LINK, sourceNodeQual, destNodeQual,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, adminState,
- operState, Set.of(LayerProtocolName.PHOTONICMEDIA),
- Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), this.tapiTopoUuid);
+ String sourceNode =
+ link.getSource().getSourceNode().getValue().contains("ROADM")
+ ? getIdBasedOnModelVersion(link.getSource().getSourceNode().getValue())
+ : link.getSource().getSourceNode().getValue();
+ String destNode =
+ link.getDestination().getDestNode().getValue().contains("ROADM")
+ ? getIdBasedOnModelVersion(link.getDestination().getDestNode().getValue())
+ : link.getDestination().getDestNode().getValue();
+ Link tapLink = this.tapiLink.createTapiLink(
+ sourceNode, link.getSource().getSourceTp().getValue(),
+ destNode, link.getDestination().getDestTp().getValue(),
+ TapiStringConstants.OMS_XPDR_RDM_LINK,
+ sourceNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA : TapiStringConstants.XPDR,
+ destNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA : TapiStringConstants.XPDR,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
+ //adminState,
+ link.augmentation(Link1.class).getAdministrativeState() == null || oppLnkAdmState == null
+ ? null
+ : this.tapiLink.setTapiAdminState(
+ link.augmentation(Link1.class).getAdministrativeState(), oppLnkAdmState).getName(),
+ //operState,
+ link.augmentation(Link1.class).getOperationalState() == null || oppLnkOpState == null
+ ? null
+ : this.tapiLink.setTapiOperationalState(
+ link.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName(),
+ Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()),
+ this.tapiTopoUuid);
linksToNotConvert.add(link.augmentation(Link1.class).getOppositeLink().getValue());
this.tapiLinks.put(tapLink.key(), tapLink);
}
}
}
- public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ public void setTapiNodes(Map<NodeKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeMap) {
+ this.tapiNodes.putAll(nodeMap);
+ }
+
+ public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
getTapiNodes() {
return tapiNodes;
}
return tapiLinks;
}
+ public void setTapiSips(Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSip) {
+ this.tapiSips.putAll(tapiSip);
+ }
+
public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getTapiSips() {
return tapiSips;
}
import java.nio.charset.Charset;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPools;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmTpType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.Node1;
-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.topology.rev180226.TpId;
-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.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPac;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder;
+import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConvertORTopoToTapiTopo {
private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiTopo.class);
- private String ietfNodeId;
- private OpenroadmNodeType ietfNodeType;
- private AdminStates ietfNodeAdminState;
- private State ietfNodeOperState;
- private List<TerminationPoint> oorClientPortList;
- private List<TerminationPoint> oorNetworkPortList;
- private OduSwitchingPools oorOduSwitchingPool;
private Uuid tapiTopoUuid;
- private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
tapiNodes;
private Map<LinkKey, Link> tapiLinks;
- private Map<String, Uuid> uuidMap;
+ private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
private final TapiLink tapiLink;
this.tapiTopoUuid = tapiTopoUuid;
this.tapiNodes = new HashMap<>();
this.tapiLinks = new HashMap<>();
- this.uuidMap = new HashMap<>();
+ this.tapiSips = new HashMap<>();
this.tapiLink = tapiLink;
}
- public void convertNode(Node ietfNode, List<String> networkPorts) {
- this.ietfNodeId = ietfNode.getNodeId().getValue();
- if (ietfNode.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
- == null) {
- return;
- }
- this.ietfNodeType = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class).getNodeType();
- this.ietfNodeAdminState = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
- .getAdministrativeState();
- this.ietfNodeOperState = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
- .getOperationalState();
- this.oorNetworkPortList = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().values().stream()
- .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.XPONDERNETWORK.getIntValue()
- && networkPorts.contains(tp.getTpId().getValue()))
- .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
- .collect(Collectors.toList());
- if (!OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
- this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
- .values().stream().findFirst().orElseThrow();
- this.oorClientPortList = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().values().stream()
- .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.XPONDERCLIENT.getIntValue())
- .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
- .collect(Collectors.toList());
- } else {
- this.oorOduSwitchingPool = createOduSwitchingPoolForTp100G();
- List<TpId> tpList = this.oorOduSwitchingPool.getNonBlockingList().values().stream()
- .flatMap(nbl -> nbl.getTpList().stream())
- .collect(Collectors.toList());
- this.oorClientPortList = ietfNode.augmentation(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().values().stream()
- .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
- == OpenroadmTpType.XPONDERCLIENT.getIntValue() && tpList.contains(tp.getTpId()))
- .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
- .collect(Collectors.toList());
- this.oorClientPortList.forEach(tp -> LOG.info("tp = {}", tp.getTpId()));
- }
-
- // node creation [DSR/ODU]
- LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId);
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)).getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR), nodeUuid);
- Name nameDsr = new NameBuilder().setValueName("dsr/odu node name")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.DSR)).build();
- Name nameNodeType = new NameBuilder().setValueName("Node Type")
- .setValue(this.ietfNodeType.getName()).build();
- Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
- .Node dsrNode = createTapiNode(Map.of(nameDsr.key(), nameDsr, nameNodeType.key(), nameNodeType),
- dsrLayerProtocols);
- tapiNodes.put(dsrNode.key(), dsrNode);
-
- // node creation [otsi]
- LOG.info("creation of an OTSi node for {}", this.ietfNodeId);
- nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))
- .getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI), nodeUuid);
- Name nameOtsi = new NameBuilder().setValueName("otsi node name")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)).build();
- Set<LayerProtocolName> otsiLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
- .Node otsiNode = createTapiNode(Map.of(nameOtsi.key(), nameOtsi, nameNodeType.key(), nameNodeType),
- otsiLayerProtocols);
- tapiNodes.put(otsiNode.key(), otsiNode);
-
- // transitional link cration between network nep of DSR/ODU node and iNep of otsi node
- LOG.info("creation of transitional links between DSR/ODU and OTSi nodes");
- createTapiTransitionalLinks();
- }
-
public void convertLinks(Map<
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
.LinkKey,
? null
: this.tapiLink.setTapiOperationalState(
otnlink.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
-
+ // TODO: Handle not only OTU4 but also other cases
String prefix = otnlink.getLinkId().getValue().split("-")[0];
- String nodesQual = prefix.equals("OTU4") ? TapiStringConstants.OTSI : TapiStringConstants.DSR;
+ String nodesQual = TapiStringConstants.XPDR;
String tpsQual = prefix.equals("OTU4") ? TapiStringConstants.I_OTSI : TapiStringConstants.E_ODU;
LayerProtocolName layerProtocolName = prefix.equals("OTU4") ? LayerProtocolName.PHOTONICMEDIA
: LayerProtocolName.ODU;
Set.of(layerProtocolName.getName()), this.tapiTopoUuid);
linksToNotConvert.add(oppositeLinkId);
tapiLinks.put(tapLink.key(), tapLink);
+ LOG.debug("Links converted are as follow {}", tapiLinks.toString());
}
}
}
Name nameNodeType = new NameBuilder().setValueName("Node Type")
.setValue(OpenroadmNodeType.ROADM.getName()).build();
Set<LayerProtocolName> nodeLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA);
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiPhotonicNodes
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiPhotonicNodes
= pruneTapiPhotonicNodes();
+ //At that stage, there is no Roadm in the tapiPhotonicNodes Map / only the transponders
Map<String, String> photonicNepUuisMap = convertListNodeWithListNepToMapForUuidAndName(tapiPhotonicNodes);
// nep creation for rdm infra abstraction node
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = createNepForRdmNode(photonicNepUuisMap.size());
// node rule group creation
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList
- = createNodeRuleGroupForRdmNode(nodeUuid, onepMap.values());
+ = new ConvertORToTapiTopology(this.tapiTopoUuid)
+ .createNodeRuleGroupForRdmNode("Abstracted", nodeUuid, null, onepMap.values());
+ // Empty random creation of mandatory fields for avoiding errors....
+ CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
+ .setCostAlgorithm("Restricted Shortest Path - RSP")
+ .setCostName("HOP_COUNT")
+ .setCostValue(TapiStringConstants.COST_HOP_VALUE)
+ .build();
+ LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
+ .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
+ .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
+ .setTrafficPropertyName("FIXED_LATENCY")
+ .build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
// build RDM infra node abstraction
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node rdmNode = new NodeBuilder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node rdmNode = new NodeBuilder()
.setUuid(nodeUuid)
.setName(Map.of(nodeName.key(), nodeName, nameNodeType.key(), nameNodeType))
.setLayerProtocolName(nodeLayerProtocols)
.setLifecycleState(LifecycleState.INSTALLED)
.setOwnedNodeEdgePoint(onepMap)
.setNodeRuleGroup(nodeRuleGroupList)
+ .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
+ .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskParameterPac(riskParamPac)
.build();
tapiNodes.put(rdmNode.key(), rdmNode);
-
- // OMS link creation between photonoci nodes and RDM infra abstraction node
+ // OTS link creation between photonic nodes and RDM infra abstraction node :
+ //onepMap is a list of nep which Uuid is formed from THE ROADM node name, "nep" and an integer (order of the nep)
+ // It has absolutely no relationship with the real ROADM infrastructure (SRG ports)
+ //rdmInfraNepUuisMap is a Map <ROADMnodeUuuid--NepUuid; ROADMnodeName--nepName> built from onepMap
+ //photonicNepUuisMap is a Map <TSPnodeUuuid--eNepUuid; TSPnodeName--nepName> built from TapiPhotonicNode
Map<String, String> rdmInfraNepUuisMap = convertListNodeWithListNepToMapForUuidAndName(List.of(rdmNode));
if (photonicNepUuisMap.size() != rdmInfraNepUuisMap.size()) {
- LOG.warn("Unable to build OMS links between photonics nodes and RDM infrasctructure abstraction");
+ LOG.warn("Unable to build OTS links between photonics nodes and RDM infrasctructure abstraction");
} else {
- createTapiOmsLinks(photonicNepUuisMap, rdmInfraNepUuisMap);
+ //Tapi OtsLinks are created between Neps corresponding to the eNEPs of transponders (existing network ports)
+ //and Generic NEPS with abstracted names created in the ROADM infrastructure corresponding to tps mirroring
+ //transponders NETWORK PORTs. There is a simplification here considering that any network port of
+ //transponders will have a mirroring SRG client port in the ROADM infrastructure.
+ // TODO: Do not understand that we build OTS link without checking that existing transponder ports
+ //are effectively connected. Need some consolidation
+ createTapiOtsLinks(photonicNepUuisMap, rdmInfraNepUuisMap);
}
}
- private OduSwitchingPools createOduSwitchingPoolForTp100G() {
- Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
- int count = 1;
- for (TerminationPoint tp : this.oorNetworkPortList) {
- TpId tpid1 = tp.getTpId();
- TpId tpid2 = tp.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1.class)
- .getAssociatedConnectionMapTp().iterator().next();
- Set<TpId> tpList = new HashSet<>();
- tpList.add(tpid1);
- tpList.add(tpid2);
- NonBlockingList nbl = new NonBlockingListBuilder()
- .setNblNumber(Uint16.valueOf(count))
- .setTpList(tpList)
- .build();
- nblMap.put(nbl.key(), nbl);
- count++;
- }
- return new OduSwitchingPoolsBuilder()
- .setNonBlockingList(nblMap)
- .setSwitchingPoolNumber(Uint16.valueOf(1))
- .build();
- }
-
- private List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ private List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
pruneTapiPhotonicNodes() {
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
prunedTapiPhotonicNodes = new ArrayList<>();
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiPhotonicNodes
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiPhotonicNodes
= this.tapiNodes.values().stream()
- .filter(n -> LayerProtocolName.PHOTONICMEDIA.equals(n.getLayerProtocolName().stream().findFirst()
- .orElseThrow()))
- .collect(Collectors.toList());
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node
+ .filter(n -> n.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
+ .collect(Collectors.toList());
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node
: tapiPhotonicNodes) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepM = new HashMap<>();
for (Map.Entry<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> entry : node.getOwnedNodeEdgePoint().entrySet()) {
if (entry.getValue().getName().values().stream()
- .filter(name -> name.getValueName().startsWith("eNodeEdgePoint")).count() > 0) {
+ .filter(name -> name.getValueName().equals("eNodeEdgePoint")).count() > 0) {
onepM.put(entry.getKey(), entry.getValue());
}
}
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node prunedNode
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node prunedNode
= new NodeBuilder(node).setOwnedNodeEdgePoint(onepM).build();
prunedTapiPhotonicNodes.add(prunedNode);
}
}
private Map<String, String> convertListNodeWithListNepToMapForUuidAndName(
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> nodes) {
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodes) {
Map<String, String> uuidNameMap = new HashMap<>();
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node : nodes) {
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node : nodes) {
for (OwnedNodeEdgePoint nep : node.nonnullOwnedNodeEdgePoint().values()) {
String nodeUuid = node.getUuid().getValue();
String nepUuid = nep.getUuid().getValue();
return uuidNameMap;
}
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node
- createTapiNode(Map<NameKey, Name> nodeNames, Set<LayerProtocolName> layerProtocols) {
- Uuid nodeUuid = null;
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
- Map<RuleKey, Rule> ruleList = new HashMap<>();
- Rule rule = new RuleBuilder()
- .setLocalId("forward")
- .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
- .setRuleType(RuleType.FORWARDING)
- .build();
- ruleList.put(rule.key(), rule);
- if (layerProtocols.contains(LayerProtocolName.DSR)) {
- nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
- } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
- nodeUuid = getNodeUuid4Photonic(onepl, nodeRuleGroupList, ruleList);
- } else {
- LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
- .getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
- }
- return new NodeBuilder()
- .setUuid(nodeUuid)
- .setName(nodeNames)
- .setLayerProtocolName(layerProtocols)
- .setAdministrativeState(this.tapiLink.setTapiAdminState(this.ietfNodeAdminState.getName()))
- .setOperationalState(this.tapiLink.setTapiOperationalState(this.ietfNodeOperState.getName()))
- .setLifecycleState(LifecycleState.INSTALLED)
- .setOwnedNodeEdgePoint(onepl)
- .setNodeRuleGroup(nodeRuleGroupList)
- .build();
- }
-
- private Uuid getNodeUuid4Photonic(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList,
- Map<RuleKey, Rule> ruleList) {
- Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI));
- // iNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI));
- onepl.put(onep.key(), onep);
- }
- // eNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
- Name onedName = new NameBuilder()
- .setValueName("eNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI));
- onepl.put(onep.key(), onep);
- }
- // create NodeRuleGroup
- int count = 1;
- for (TerminationPoint tp : this.oorNetworkPortList) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
- .setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- tp.getTpId().getValue()))).build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)))
- .setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- tp.getTpId().getValue())))
- .build();
- nepList.put(inep.key(), inep);
- nepList.put(enep.key(), enep);
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(("otsi node rule group " + count).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .build();
- nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeUuid;
- }
-
- private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
- Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR));
- // client nep creation on DSR/ODU node
- for (int i = 0; i < oorClientPortList.size(); i++) {
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- oorClientPortList.get(i).getTpId().getValue()), nepUuid);
- NameBuilder nameBldr = new NameBuilder().setValue(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- oorClientPortList.get(i).getTpId().getValue()));
- Name name;
- if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
- name = nameBldr.setValueName("100G-tpdr").build();
- } else {
- name = nameBldr.setValueName("NodeEdgePoint_C").build();
- }
-
- OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
- LayerProtocolName.ETH, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR));
- onepl.put(onep.key(), onep);
- }
- // network nep creation on DSR/ODU node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid);
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint_N")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
- TapiStringConstants.I_ODU));
- onepl.put(onep.key(), onep);
- }
- // create NodeRuleGroup
- int count = 1;
- for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
- for (TpId tp : nbl.getTpList()) {
- if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
- tp.getValue())) || this.uuidMap.containsKey(String.join(
- "+", this.ietfNodeId, TapiStringConstants.I_ODU, tp.getValue()))) {
- String qual = tp.getValue().contains("CLIENT") ? TapiStringConstants.DSR
- : TapiStringConstants.I_ODU;
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)))
- .setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
- qual, tp.getValue())))
- .build();
- nepList.put(nep.key(), nep);
- }
- }
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(("dsr node rule group " + count).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .build();
- nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeUuid;
- }
-
- private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, Map<NameKey, Name> nepNames,
- LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol,
- boolean withSip, String keyword) {
- String key = String.join("+", keyword, oorTp.getTpId().getValue());
- AdministrativeState adminState = (oorTp.augmentation(TerminationPoint1.class).getAdministrativeState() != null)
- ? this.tapiLink.setTapiAdminState(oorTp.augmentation(TerminationPoint1.class).getAdministrativeState()
- .getName())
- : null;
- OperationalState operState = (oorTp.augmentation(TerminationPoint1.class).getOperationalState() != null)
- ? this.tapiLink.setTapiOperationalState(oorTp.augmentation(TerminationPoint1.class).getOperationalState()
- .getName())
- : null;
- OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
- .setUuid(this.uuidMap.get(key))
- .setLayerProtocolName(nepProtocol)
- .setName(nepNames)
- .setSupportedCepLayerProtocolQualifier(createSupportedCepLayerProtocolQualifier(oorTp, nodeProtocol))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL)
- .setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(adminState)
- .setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
- if (withSip) {
- onepBldr.setMappedServiceInterfacePoint(createSIP(1, oorTp, keyword));
- }
- return onepBldr.build();
- }
-
private Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> createNepForRdmNode(int nbNep) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
for (int i = 1; i <= nbNep; i++) {
.setValueName("NodeEdgePoint name")
.setValue(new StringBuilder("NodeEdgePoint_").append(i).toString())
.build();
+ List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
.setUuid(nepUuid)
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
.setName(Map.of(nepName.key(), nepName))
- .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
+ .setSupportedCepLayerProtocolQualifierInstances(sclpqiList)
+ .setDirection(Direction.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
.setAdministrativeState(AdministrativeState.UNLOCKED).setOperationalState(OperationalState.ENABLED)
- .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
+ .setLifecycleState(LifecycleState.INSTALLED)
.build();
onepMap.put(onep.key(), onep);
}
return onepMap;
}
- private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForRdmNode(Uuid nodeUuid,
- Collection<OwnedNodeEdgePoint> onepl) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
- nepMap = new HashMap<>();
- for (OwnedNodeEdgePoint onep : onepl) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
- nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(nodeUuid)
- .setNodeEdgePointUuid(onep.key().getUuid())
- .build();
- nepMap.put(nep.key(), nep);
- }
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
- Map<RuleKey, Rule> ruleList = new HashMap<>();
- Rule rule = new RuleBuilder()
- .setLocalId("forward")
- .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
- .setRuleType(RuleType.FORWARDING)
- .build();
- ruleList.put(rule.key(), rule);
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes(("rdm infra node rule group").getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepMap)
- .build();
- nodeRuleGroupMap.put(nodeRuleGroup.key(), nodeRuleGroup);
- return nodeRuleGroupMap;
- }
-
- private Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> createSIP(int nb, TerminationPoint tp,
- String nodeId) {
- Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
- for (int i = 0; i < nb; i++) {
- MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
- .setServiceInterfacePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", nodeId,
- tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString()))
- .build();
- msipl.put(msip.key(), msip);
- }
- return msipl;
- }
-
- private Set<LAYERPROTOCOLQUALIFIER>
- createSupportedCepLayerProtocolQualifier(TerminationPoint tp, LayerProtocolName lpn) {
- Set<LAYERPROTOCOLQUALIFIER> sclpqSet = new HashSet<>();
- Collection<SupportedInterfaceCapability> sicList = tp.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class)
- .getTpSupportedInterfaces()
- .getSupportedInterfaceCapability().values();
- for (SupportedInterfaceCapability sic : sicList) {
- String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
- switch (lpn.getName()) {
- case "DSR":
- switch (ifCapType) {
- case "If10GEODU2e":
- sclpqSet.add(ODUTYPEODU2E.VALUE);
- sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If10GEODU2":
- sclpqSet.add(ODUTYPEODU2.VALUE);
- sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If10GE":
- sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If100GEODU4":
- sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE);
- sclpqSet.add(ODUTYPEODU4.VALUE);
- break;
- case "If100GE":
- sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE);
- break;
- case "IfOCHOTU4ODU4":
- case "IfOCH":
- sclpqSet.add(ODUTYPEODU4.VALUE);
- break;
- default:
- LOG.error("IfCapability type not managed");
- break;
- }
- break;
- case "PHOTONIC_MEDIA":
- if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) {
- sclpqSet.add(PHOTONICLAYERQUALIFIEROTSi.VALUE);
- sclpqSet.add(PHOTONICLAYERQUALIFIEROMS.VALUE);
- }
- break;
- default:
- LOG.error("Layer Protocol Name is unknown");
- break;
- }
- }
- return sclpqSet;
- }
-
- private void createTapiTransitionalLinks() {
- for (TerminationPoint tp : this.oorNetworkPortList) {
- Link transiLink = tapiLink.createTapiLink(this.ietfNodeId, tp.getTpId().getValue(), this.ietfNodeId,
- tp.getTpId().getValue(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR,
- TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI,
- "inService", "inService", Set.of(LayerProtocolName.ODU, LayerProtocolName.PHOTONICMEDIA),
- Set.of(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()),
- this.tapiTopoUuid);
- this.tapiLinks.put(transiLink.key(), transiLink);
- }
- }
-
- private void createTapiOmsLinks(Map<String, String> photonicNepUuisMap, Map<String, String> rdmInfraNepUuisMap) {
+ private void createTapiOtsLinks(Map<String, String> photonicNepUuisMap, Map<String, String> rdmInfraNepUuisMap) {
Iterator<Entry<String, String>> it1 = photonicNepUuisMap.entrySet().iterator();
Iterator<Entry<String, String>> it2 = rdmInfraNepUuisMap.entrySet().iterator();
while (it1.hasNext()) {
.setNodeEdgePointUuid(destUuidTp)
.build();
nepMap.put(destNep.key(), destNep);
- Name linkName = new NameBuilder().setValueName("OMS link name")
+ Name linkName = new NameBuilder().setValueName("OTS link name")
.setValue(String.join(" and ", photonicEntry.getValue(), rdmEntry.getValue()))
.build();
- Link omsLink = new LinkBuilder()
+ Link otsLink = new LinkBuilder()
.setUuid(new Uuid(
UUID.nameUUIDFromBytes((String.join(" and ", photonicEntry.getValue(), rdmEntry.getValue()))
.getBytes(Charset.forName("UTF-8")))
.setNodeEdgePoint(nepMap)
.setDirection(ForwardingDirection.BIDIRECTIONAL)
.build();
- this.tapiLinks.put(omsLink.key(), omsLink);
+ this.tapiLinks.put(otsLink.key(), otsLink);
}
}
- public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ public void setTapiNodes(Map<NodeKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeMap) {
+ this.tapiNodes.putAll(nodeMap);
+ }
+
+ public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
getTapiNodes() {
return tapiNodes;
}
public Map<LinkKey, Link> getTapiLinks() {
return tapiLinks;
}
-}
\ No newline at end of file
+
+ public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getTapiSips() {
+ return tapiSips;
+ }
+
+ public void setTapiSips(Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSip) {
+ this.tapiSips.putAll(tapiSip);
+ }
+}
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.ConnectionOper.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231024.connection.oper.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.connection.oper.available.capabilities.AvailableCapability;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.slf4j.Logger;
*/
package org.opendaylight.transportpce.tapi.topology;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
public interface TapiNetworkModelService {
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
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.tapi.R2RTapiLinkDiscovery;
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.SupportedIfCapability;
import org.opendaylight.yang.gen.v1.http.org.openroadm.switching.pool.types.rev191129.SwitchingPoolTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev230526.xpdr.mode.attributes.supported.operational.modes.OperationalModeKey;
+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.NetworkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1Builder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPEGigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU0;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.NodeEdgePointRef;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
+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.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1Builder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NotificationBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.NodeEdgePointRef;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODEEDGEPOINT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPac;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Notification;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
.getBytes(StandardCharsets.UTF_8)).toString());
private final NetworkTransactionService networkTransactionService;
private final R2RTapiLinkDiscovery linkDiscovery;
- private final TapiLink tapiLink;
+// private final TapiLink tapiLink;
+ private final ConvertORToTapiTopology tapiFactory;
private final NotificationPublishService notificationPublishService;
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> sipMap = new HashMap<>();
@Reference final NotificationPublishService notificationPublishService) {
this.networkTransactionService = networkTransactionService;
this.linkDiscovery = new R2RTapiLinkDiscovery(networkTransactionService, deviceTransactionManager, tapiLink);
- this.tapiLink = tapiLink;
this.notificationPublishService = notificationPublishService;
+ this.tapiFactory = new ConvertORToTapiTopology(tapiTopoUuid);
}
@Override
Map<Integer, String> xpdrMap = new HashMap<>();
for (Mapping mapping : networkMappings) {
Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- String nodeId = node.getNodeId() + TapiStringConstants.XPDR + xpdrNb;
+ String nodeId = node.getNodeId() + TapiStringConstants.XXPDR + xpdrNb;
if (!xpdrMap.containsKey(xpdrNb)) {
List<Mapping> xpdrNetMaps = node.nonnullMapping().values()
.stream().filter(k -> k.getLogicalConnectionPoint()
@SuppressWarnings("rawtypes")
private void sendNotification(List<Uuid> changedOneps, Mapping mapping) {
Notification notification = new NotificationBuilder()
- .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE)
- .setTargetObjectType(ObjectType.NODEEDGEPOINT)
+ .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE)
+// .setTargetObjectType(ObjectType.NODEEDGEPOINT)
+ //TODO: Change this : modification in Models 2.4 does not provide for Object type Node EdgePoint
+ .setTargetObjectType(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE)
.setChangedAttributes(getChangedAttributes(changedOneps, mapping))
.setUuid(tapiTopoUuid)
.build();
LOG.error("Could not update TAPI links");
return;
}
+ int nbAffectedLinks = 0;
+ LOG.info("UUIDofAffectedONEPS = {} ", changedOneps.toString());
for (Link link : optTopology.orElseThrow().nonnullLink().values()) {
List<Uuid> linkNeps = Objects.requireNonNull(link.getNodeEdgePoint()).values().stream()
.map(NodeEdgePointRef::getNodeEdgePointUuid).collect(Collectors.toList());
+ LOG.info("LinkEndPointsUUID = {} for link Name {}", linkNeps.toString(), link.getName().toString());
if (!Collections.disjoint(changedOneps, linkNeps)) {
InstanceIdentifier<Link> linkIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.setAdministrativeState(transformAdminState(mapping.getPortAdminState()))
.setOperationalState(transformOperState(mapping.getPortOperState())).build();
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, linkIID, linkblr);
+ nbAffectedLinks++ ;
}
}
+ LOG.info("AffectedLinksNb = {} ", nbAffectedLinks);
this.networkTransactionService.commit().get();
} catch (InterruptedException | ExecutionException e) {
LOG.error("Could not update TAPI links");
.setAdministrativeState(transformAdminState(mapping.getPortAdminState()))
.setOperationalState(transformOperState(mapping.getPortOperState())).build();
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, onepIID, onepblr);
+ LOG.info("UpdatedNEP {} of UUID {} to ADMIN {} OPER {}",
+ onep.getName().toString(), onep.getUuid(),
+ transformAdminState(mapping.getPortAdminState()),
+ transformOperState(mapping.getPortOperState()));
}
this.networkTransactionService.commit().get();
}
if (nodeId.contains("ROADM")) {
uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA))
.getBytes(StandardCharsets.UTF_8)).toString()));
- } else if (nodeId.contains("PDR") && mapping.getLogicalConnectionPoint().contains("CLIENT")) {
+ } else if (nodeId.contains("PDR")) {
+ LOG.debug("ANALYSING change in {}", nodeId);
int xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- String xpdrNodeId = nodeId + TapiStringConstants.XPDR + xpdrNb;
- uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.DSR))
- .getBytes(StandardCharsets.UTF_8)).toString()));
- } else if (nodeId.contains("PDR") && mapping.getLogicalConnectionPoint().contains("NETWORK")) {
- int xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- String xpdrNodeId = nodeId + TapiStringConstants.XPDR + xpdrNb;
- uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.DSR))
- .getBytes(StandardCharsets.UTF_8)).toString()));
- uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.OTSI))
+ String xpdrNodeId = nodeId + TapiStringConstants.XXPDR + xpdrNb;
+ uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.XPDR))
.getBytes(StandardCharsets.UTF_8)).toString()));
} else {
LOG.error("Updating this device is currently not supported");
OduSwitchingPools oorOduSwitchingPool) {
Map<NodeKey, Node> nodeMap = new HashMap<>();
LOG.info("creation of a DSR/ODU node for {}", nodeId);
- Uuid nodeUuidDsr = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.DSR))
+ Uuid nodeUuidDsr = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.XPDR))
.getBytes(StandardCharsets.UTF_8)).toString());
Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(
- String.join("+", nodeId, TapiStringConstants.DSR)).build();
+ String.join("+", nodeId, TapiStringConstants.XPDR)).build();
+ Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(
+ String.join("+", nodeId, TapiStringConstants.XPDR)).build();
Name nameNodeType = new NameBuilder().setValueName("Node Type")
.setValue(getNodeType(xponderType)).build();
- Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU);
- Node dsrNode = createTapiXpdrNode(Map.of(nameDsr.key(), nameDsr, nameNodeType.key(), nameNodeType),
- dsrLayerProtocols, nodeId, nodeUuidDsr, xpdrClMaps, xpdrNetMaps, xponderType, oorOduSwitchingPool);
+ Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU,
+ LayerProtocolName.DIGITALOTN, LayerProtocolName.PHOTONICMEDIA);
+ Node dsrNode = createTapiXpdrNode(Map.of(nameDsr.key(), nameDsr, nameOtsi.key(), nameOtsi, nameNodeType.key(),
+ nameNodeType), dsrLayerProtocols, nodeId, nodeUuidDsr, xpdrClMaps, xpdrNetMaps, xponderType,
+ oorOduSwitchingPool);
nodeMap.put(dsrNode.key(), dsrNode);
-
- // node creation [otsi]
- LOG.info("creation of an OTSi node for {}", nodeId);
- Uuid nodeUuidOtsi = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.OTSI))
- .getBytes(StandardCharsets.UTF_8)).toString());
- Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(
- String.join("+", nodeId, TapiStringConstants.OTSI)).build();
- Set<LayerProtocolName> otsiLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA);
- Node otsiNode = createTapiXpdrNode(Map.of(nameOtsi.key(), nameOtsi, nameNodeType.key(), nameNodeType),
- otsiLayerProtocols, nodeId, nodeUuidOtsi, xpdrClMaps, xpdrNetMaps, xponderType, null);
-
- nodeMap.put(otsiNode.key(), otsiNode);
-
- // transitional link cration between network nep of DSR/ODU node and iNep of otsi node
- LOG.info("creation of transitional links between DSR/ODU and OTSi nodes");
- Map<LinkKey, Link> linkMap = createTapiTransitionalLinks(nodeId, xpdrNetMaps);
- mergeLinkinTopology(linkMap);
-
return nodeMap;
}
}
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> srgNeps =
createRoadmNeps(orNodeId, m.getLogicalConnectionPoint(), true,
- transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()));
+ transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()),
+ TapiStringConstants.PHTNC_MEDIA_OTS);
onepMap.putAll(srgNeps);
}
}
}
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> degNeps =
createRoadmNeps(orNodeId, m.getLogicalConnectionPoint(), false,
- transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()));
+ transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()),
+ TapiStringConstants.PHTNC_MEDIA_OTS);
+ degNeps.putAll(createRoadmNeps(orNodeId, m.getLogicalConnectionPoint(), false,
+ transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()),
+ TapiStringConstants.PHTNC_MEDIA_OMS));
onepMap.putAll(degNeps);
}
}
private Node createTapiXpdrNode(Map<NameKey, Name> nameMap, Set<LayerProtocolName> layerProtocols,
String nodeId, Uuid nodeUuid, List<Mapping> xpdrClMaps, List<Mapping> xpdrNetMaps,
XpdrNodeTypes xponderType, OduSwitchingPools oorOduSwitchingPool) {
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
+
Map<RuleKey, Rule> ruleList = new HashMap<>();
+ Set<RuleType> ruleTypes = new HashSet<>();
+ ruleTypes.add(RuleType.FORWARDING);
Rule rule = new RuleBuilder()
.setLocalId("forward")
- .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
- .setRuleType(RuleType.FORWARDING)
+ .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE)
+ .setRuleType(ruleTypes)
.build();
ruleList.put(rule.key(), rule);
- if (layerProtocols.contains(LayerProtocolName.DSR)) {
- // neps for dsr/odu layer
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> dsroduNeps =
- createXpdrDsrOduNeps(nodeId, xpdrClMaps, xpdrNetMaps, xponderType);
- onepl.putAll(dsroduNeps);
- nodeRuleGroupList = createNodeRuleGroupForDsrNode(nodeId, oorOduSwitchingPool, ruleList, onepl);
- } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
- // neps for photonic layer
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> phtmdNeps =
- createXpdrPhtnMdNeps(nodeId, xpdrNetMaps);
- onepl.putAll(phtmdNeps);
- nodeRuleGroupList = createNodeRuleGroupForOtsiNode(nodeId, xpdrNetMaps, ruleList);
- } else {
+ if (!(layerProtocols.contains(LayerProtocolName.DSR)
+ && layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA))) {
LOG.error("Undefined LayerProtocolName for {} node {}", nameMap.get(nameMap.keySet().iterator().next())
- .getValueName(), nameMap.get(nameMap.keySet().iterator().next()).getValue());
+ .getValueName(), nameMap.get(nameMap.keySet().iterator().next()).getValue());
}
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
+ onepl.putAll(createXpdrDsrOduNeps(nodeId, xpdrClMaps, xpdrNetMaps, xponderType));
+ Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = createNodeRuleGroupForDsrNode(
+ nodeId, oorOduSwitchingPool, ruleList, onepl);
+ onepl.putAll(createXpdrPhtnMdNeps(nodeId, xpdrNetMaps));
+
// Empty random creation of mandatory fields for avoiding errors....
CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
.setCostAlgorithm("Restricted Shortest Path - RSP")
.build();
LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
.setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
.setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(nameMap)
.setDeliveryOrderCharacteristic("delivery order")
.setUnavailableTimeCharacteristic("unavailable time")
.setServerIntegrityProcessCharacteristic("server integrity process")
+ .setRiskParameterPac(riskParamPac)
.build();
}
List<Mapping> xpdrNetMaps) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
- // iNep creation on otsi node
- for (int i = 0; i < xpdrNetMaps.size(); i++) {
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.I_OTSI,
- xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString());
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint")
- .setValue(String.join("+", nodeId, TapiStringConstants.I_OTSI,
- xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .build();
-
- List<SupportedIfCapability> newSupIfCapList =
- new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability());
-
- OwnedNodeEdgePoint onep = createNep(nepUuid1, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
- Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- true, String.join("+", nodeId, TapiStringConstants.I_OTSI), newSupIfCapList,
- transformOperState(xpdrNetMaps.get(i).getPortOperState()),
- transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
- onepl.put(onep.key(), onep);
- }
// eNep creation on otsi node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.E_OTSI,
+ (String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString());
Name onedName = new NameBuilder()
.setValueName("eNodeEdgePoint")
- .setValue(String.join("+", nodeId, TapiStringConstants.E_OTSI,
+ .setValue(String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
xpdrNetMaps.get(i).getLogicalConnectionPoint()))
.build();
List<SupportedIfCapability> newSupIfCapList =
- new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability());
+ new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability());
+ List<String> opModeList = new ArrayList<>();
+ if (xpdrNetMaps.get(i).getSupportedOperationalMode() != null) {
+ opModeList.addAll(xpdrNetMaps.get(i).getSupportedOperationalMode());
+ }
- OwnedNodeEdgePoint onep = createNep(nepUuid2, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
+ OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid2, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- false, String.join("+", nodeId, TapiStringConstants.E_OTSI), newSupIfCapList,
+ true, String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS), newSupIfCapList, opModeList,
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
}
- // Photonic Media Nep creation on otsi node
+ // OTSi_MC Nep creation on otsi node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA,
+ (String.join("+", nodeId, TapiStringConstants.OTSI_MC,
xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString());
Name onedName = new NameBuilder()
.setValueName("PhotMedNodeEdgePoint")
- .setValue(String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA,
+ .setValue(String.join("+", nodeId, TapiStringConstants.OTSI_MC,
xpdrNetMaps.get(i).getLogicalConnectionPoint()))
.build();
List<SupportedIfCapability> newSupIfCapList =
new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability());
+ List<String> opModeList = new ArrayList<>();
+ if (xpdrNetMaps.get(i).getSupportedOperationalMode() != null) {
+ opModeList.addAll(xpdrNetMaps.get(i).getSupportedOperationalMode());
+ }
- OwnedNodeEdgePoint onep = createNep(nepUuid3, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
+ OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid3, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- false, String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA), newSupIfCapList,
+ false, String.join("+", nodeId, TapiStringConstants.OTSI_MC), newSupIfCapList, opModeList,
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
List<SupportedIfCapability> newSupIfCapList =
new ArrayList<>(xpdrClMaps.get(i).getSupportedInterfaceCapability());
- OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(),
+ OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(),
Map.of(name.key(), name), LayerProtocolName.DSR, LayerProtocolName.DSR, true,
- String.join("+", nodeId, TapiStringConstants.DSR), newSupIfCapList,
+ String.join("+", nodeId, TapiStringConstants.DSR), newSupIfCapList, null,
transformOperState(xpdrClMaps.get(i).getPortOperState()),
transformAdminState(xpdrClMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
List<SupportedIfCapability> newSupIfCapList =
new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability());
-
- OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
+ OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName),
LayerProtocolName.ODU, LayerProtocolName.DSR, true,
- String.join("+", nodeId, TapiStringConstants.I_ODU), newSupIfCapList,
+ String.join("+", nodeId, TapiStringConstants.I_ODU), newSupIfCapList, null,
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
List<SupportedIfCapability> newSupIfCapList =
new ArrayList<>(xpdrClMaps.get(i).getSupportedInterfaceCapability());
- OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(),
+ OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, false,
- String.join("+", nodeId, TapiStringConstants.E_ODU), newSupIfCapList,
+ LayerProtocolName.ODU, LayerProtocolName.DSR, true,
+ String.join("+", nodeId, TapiStringConstants.E_ODU), newSupIfCapList, null,
transformOperState(xpdrClMaps.get(i).getPortOperState()),
transformAdminState(xpdrClMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
return adminState.equals(AdminStates.InService) ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
}
- private OwnedNodeEdgePoint createNep(Uuid nepUuid, String tpid, Map<NameKey, Name> nepNames,
- LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip,
- String keyword,
- List<SupportedIfCapability> supportedInterfaceCapability,
- OperationalState operState, AdministrativeState adminState) {
+ private OwnedNodeEdgePoint createNep(String nodeId, Uuid nepUuid, String tpid, Map<NameKey, Name> nepNames,
+ LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip, String keyword,
+ List<SupportedIfCapability> sicList, List<String> opModeList,
+ OperationalState operState, AdministrativeState adminState) {
+ List<SupportedInterfaceCapability> sicListTemp = new ArrayList<>();
+ List<OperationalModeKey> keyedOpModeList = new ArrayList<>();
+ for (SupportedIfCapability supInterCapa : sicList) {
+ SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder()
+ .withKey(new SupportedInterfaceCapabilityKey(supInterCapa))
+ .setIfCapType(supInterCapa)
+ .build();
+ sicListTemp.add(supIfCapa);
+ }
+ Collection<SupportedInterfaceCapability> sicColl = sicListTemp;
OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
.setUuid(nepUuid)
.setLayerProtocolName(nepProtocol)
.setName(nepNames);
if (withSip) {
- onepBldr.setMappedServiceInterfacePoint(createMSIP(1, nepProtocol, tpid, keyword,
- supportedInterfaceCapability, operState, adminState));
+ onepBldr.setMappedServiceInterfacePoint(this.tapiFactory.createMSIP(1, nepProtocol, tpid, keyword,
+ sicColl, operState, adminState));
+ this.sipMap.putAll(tapiFactory.getTapiSips());
}
LOG.debug("Node layer {}", nodeProtocol.getName());
- onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedLayerProtocolQualifier(
- supportedInterfaceCapability, nepProtocol));
- onepBldr.setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
+ onepBldr.setSupportedCepLayerProtocolQualifierInstances(
+ this.tapiFactory.createSupportedCepLayerProtocolQualifier(sicColl, nepProtocol));
+ onepBldr.setDirection(Direction.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
.setAdministrativeState(adminState).setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
+ .setLifecycleState(LifecycleState.INSTALLED);
+ if (keyword.contains(TapiStringConstants.OTSI_MC) || keyword.contains(TapiStringConstants.PHTNC_MEDIA_OTS)) {
+ if (opModeList == null || opModeList.isEmpty()) {
+ for (SupportedInterfaceCapability sic : sicColl) {
+ String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
+ if (("IfOCHOTUCnODUCn").equals(ifCapType) || ("IfOCHOTUCnODUCnUniregen").equals(ifCapType)
+ || ("IfOCHOTUCnODUCnRegen").equals(ifCapType)) {
+ keyedOpModeList.add(new OperationalModeKey("400G"));
+ LOG.warn(TopologyUtils.NOOPMODEDECLARED + "400G rate available", tpid);
+ break;
+ }
+ }
+ keyedOpModeList.add(new OperationalModeKey("100G"));
+ LOG.warn(TopologyUtils.NOOPMODEDECLARED + "100G rate available", tpid);
+ } else {
+ for (String opMode : opModeList) {
+ keyedOpModeList.add(new OperationalModeKey(opMode));
+ }
+ }
+ Map<Double, Double> freqWidthMap = new HashMap<>();
+ if (getNetworkTerminationPointFromDatastore(nodeId, tpid) != null) {
+ freqWidthMap = tapiFactory.getXpdrUsedWavelength(getNetworkTerminationPointFromDatastore(nodeId, tpid));
+ } else {
+ LOG.error("CREATENEP, No Tp found in topology for LCP {}, of NodeId {} ", tpid, nodeId);
+ }
+ onepBldr = tapiFactory.addPayloadStructureAndPhotSpecToOnep(nodeId, freqWidthMap, keyedOpModeList, sicColl,
+ onepBldr, keyword);
+ }
return onepBldr.build();
}
private Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> createRoadmNeps(String orNodeId, String tpId,
- boolean withSip, OperationalState operState,
- AdministrativeState adminState) {
+ boolean withSip, OperationalState operState, AdministrativeState adminState, String nepPhotonicSublayer) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
// PHOTONIC MEDIA nep
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId,
- TapiStringConstants.PHTNC_MEDIA, tpId)).getBytes(StandardCharsets.UTF_8)).toString());
+ nepPhotonicSublayer, tpId)).getBytes(StandardCharsets.UTF_8)).toString());
Name nepName = new NameBuilder()
.setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
- .setValue(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA, tpId))
+ .setValue(String.join("+", orNodeId, nepPhotonicSublayer, tpId))
.build();
+ List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
+ sclpqiList.add(
+ new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(
+ TapiStringConstants.PHTNC_MEDIA_OMS.equals(nepPhotonicSublayer)
+ ? PHOTONICLAYERQUALIFIEROMS.VALUE
+ : PHOTONICLAYERQUALIFIEROTS.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
.setUuid(nepUuid)
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
.setName(Map.of(nepName.key(), nepName))
- .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
+ .setSupportedCepLayerProtocolQualifierInstances(sclpqiList)
+ .setDirection(Direction.BIDIRECTIONAL)
+ .setLinkPortRole(PortRole.SYMMETRIC)
.setAdministrativeState(adminState).setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
+ .setLifecycleState(LifecycleState.INSTALLED)
.build();
onepMap.put(onep.key(), onep);
-
- // MC nep
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId,
- TapiStringConstants.MC, tpId)).getBytes(StandardCharsets.UTF_8)).toString());
- Name nepName1 = new NameBuilder()
- .setValueName(TapiStringConstants.MC + "NodeEdgePoint")
- .setValue(String.join("+", orNodeId, TapiStringConstants.MC, tpId))
- .build();
- OwnedNodeEdgePointBuilder onepBldr1 = new OwnedNodeEdgePointBuilder()
- .setUuid(nepUuid1)
- .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
- .setName(Map.of(nepName1.key(), nepName1))
- .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(adminState).setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
- if (withSip) {
- onepBldr1.setMappedServiceInterfacePoint(createMSIP(1, LayerProtocolName.PHOTONICMEDIA,
- tpId, String.join("+", orNodeId, TapiStringConstants.MC), null,
- operState, adminState));
- }
- OwnedNodeEdgePoint onep1 = onepBldr1.build();
- onepMap.put(onep1.key(), onep1);
-
- // OTSiMC nep
- Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, TapiStringConstants.OTSI_MC,
- tpId)).getBytes(StandardCharsets.UTF_8)).toString());
- Name nepName2 = new NameBuilder()
- .setValueName(TapiStringConstants.OTSI_MC + "NodeEdgePoint")
- .setValue(String.join("+", orNodeId, TapiStringConstants.OTSI_MC, tpId))
- .build();
-
- OwnedNodeEdgePoint onep2 = new OwnedNodeEdgePointBuilder()
- .setUuid(nepUuid2)
- .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
- .setName(Map.of(nepName2.key(), nepName2))
- .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE))
- .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
- .setAdministrativeState(adminState).setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
- .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
- .build();
- onepMap.put(onep2.key(), onep2);
return onepMap;
}
- private Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint>
- createMSIP(int nb, LayerProtocolName layerProtocol, String tpid, String nodeid,
- List<SupportedIfCapability> supportedInterfaceCapability,
- OperationalState operState, AdministrativeState adminState) {
- Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
- for (int i = 0; i < nb; i++) {
- Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", nodeid,
- tpid)).getBytes(StandardCharsets.UTF_8)).toString());
- MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
- .setServiceInterfacePointUuid(sipUuid).build();
- ServiceInterfacePoint sip = createSIP(sipUuid, layerProtocol, tpid, nodeid, supportedInterfaceCapability,
- operState, adminState);
- this.sipMap.put(sip.key(), sip);
- LOG.info("SIP created {}", sip.getUuid());
- // this.tapiSips.put(sip.key(), sip);
- msipl.put(msip.key(), msip);
- }
- return msipl;
- }
-
- private ServiceInterfacePoint createSIP(Uuid sipUuid, LayerProtocolName layerProtocol, String tpid, String nodeid,
- List<SupportedIfCapability> supportedInterfaceCapability,
- OperationalState operState, AdministrativeState adminState) {
- // TODO: what value should be set in total capacity and available capacity
- LOG.info("SIP name = {}", String.join("+", nodeid, tpid));
- Name sipName = new NameBuilder()
- .setValueName("SIP name")
- .setValue(String.join("+", nodeid, tpid))
- .build();
- return new ServiceInterfacePointBuilder()
- .setUuid(sipUuid)
- .setName(Map.of(sipName.key(), sipName))
- .setLayerProtocolName(layerProtocol)
- .setAdministrativeState(adminState)
- .setOperationalState(operState)
- .setLifecycleState(LifecycleState.INSTALLED)
- .setAvailableCapacity(new AvailableCapacityBuilder().build())
- .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build())
- .setSupportedLayerProtocolQualifier(createSupportedLayerProtocolQualifier(supportedInterfaceCapability,
- layerProtocol))
- .build();
- }
-
private Node createRoadmTapiNode(String orNodeId, Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
// UUID
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId,
.build();
LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
.setFixedLatencyCharacteristic(TapiStringConstants.COST_HOP_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
.setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(Map.of(nodeNames.key(), nodeNames, nameNodeType.key(), nameNodeType))
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setOwnedNodeEdgePoint(oneplist)
- .setNodeRuleGroup(createNodeRuleGroupForRdmNode(orNodeId, nodeUuid, oneplist.values()))
+ .setNodeRuleGroup(this.tapiFactory
+ .createNodeRuleGroupForRdmNode("Full", nodeUuid, orNodeId, oneplist.values()))
.setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
.setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
.setErrorCharacteristic("error")
.setDeliveryOrderCharacteristic("delivery order")
.setUnavailableTimeCharacteristic("unavailable time")
.setServerIntegrityProcessCharacteristic("server integrity process")
+ .setRiskParameterPac(riskParamPac)
.build();
}
- private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForRdmNode(String orNodeId, Uuid nodeUuid,
- Collection<OwnedNodeEdgePoint> onepl) {
- Map<NodeEdgePointKey, NodeEdgePoint>
- nepMap = new HashMap<>();
- for (OwnedNodeEdgePoint onep : onepl) {
- NodeEdgePoint nep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(nodeUuid)
- .setNodeEdgePointUuid(onep.key().getUuid())
- .build();
- nepMap.put(nep.key(), nep);
- }
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
- Map<RuleKey, Rule> ruleList = new HashMap<>();
- Rule rule = new RuleBuilder()
- .setLocalId("forward")
- .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
- .setRuleType(RuleType.FORWARDING)
- .build();
- ruleList.put(rule.key(), rule);
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(UUID.nameUUIDFromBytes((orNodeId + " node rule group")
- .getBytes(StandardCharsets.UTF_8)).toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepMap)
- .build();
- nodeRuleGroupMap.put(nodeRuleGroup.key(), nodeRuleGroup);
- return nodeRuleGroupMap;
- }
-
- private Map<LinkKey, Link> createTapiTransitionalLinks(String nodeId, List<Mapping> xpdrNetMaps) {
- Map<LinkKey, Link> linkMap = new HashMap<>();
- for (Mapping mapping : xpdrNetMaps) {
- Link transiLink = tapiLink.createTapiLink(nodeId, mapping.getLogicalConnectionPoint(), nodeId,
- mapping.getLogicalConnectionPoint(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR,
- TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI,
- "inService", "inService", Set.of(LayerProtocolName.ODU, LayerProtocolName.PHOTONICMEDIA),
- Set.of(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()),
- this.tapiTopoUuid);
- linkMap.put(transiLink.key(), transiLink);
- }
- // return a map of links and then we can do merge the corresponding link map into the topology context
- return linkMap;
- }
-
private OduSwitchingPools createTpdrSwitchPool(List<Mapping> xpdrNetMaps) {
Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
int count = 1;
.build();
}
- private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForOtsiNode(String nodeId,
- List<Mapping> xpdrNetMaps,
- Map<RuleKey, Rule> ruleList) {
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
- // create NodeRuleGroup
- int count = 1;
- for (Mapping tpMapping : xpdrNetMaps) {
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- NodeEdgePoint inep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
- TapiStringConstants.OTSI)).getBytes(StandardCharsets.UTF_8)).toString()))
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
- TapiStringConstants.I_OTSI, tpMapping.getLogicalConnectionPoint()))
- .getBytes(StandardCharsets.UTF_8)).toString()))
- .build();
- NodeEdgePoint enep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
- TapiStringConstants.OTSI)).getBytes(StandardCharsets.UTF_8)).toString()))
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.E_OTSI,
- tpMapping.getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString()))
- .build();
- nepList.put(inep.key(), inep);
- nepList.put(enep.key(), enep);
- // Empty random creation of mandatory fields for avoiding errors....
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue(TapiStringConstants.COST_HOP_VALUE)
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
- .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
- .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
- .build();
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(("otsi node rule group " + count).getBytes(StandardCharsets.UTF_8))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .build();
- nodeRuleGroupMap.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeRuleGroupMap;
- }
-
private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForDsrNode(String nodeId,
- OduSwitchingPools oorOduSwitchingPool,
- Map<RuleKey, Rule> ruleList,
- Map<OwnedNodeEdgePointKey,
- OwnedNodeEdgePoint> onepl) {
+ OduSwitchingPools oorOduSwitchingPool, Map<RuleKey, Rule> ruleList,
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl) {
// create NodeRuleGroup
if (oorOduSwitchingPool == null) {
LOG.info("No switching pool created for node = {}", nodeId);
.build();
LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
.setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
.setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
return nodeRuleGroupMap;
}
- private Set<LAYERPROTOCOLQUALIFIER> createSupportedLayerProtocolQualifier(
- List<SupportedIfCapability> sicList, LayerProtocolName lpn) {
- if (sicList == null) {
- return Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE);
- }
- Map<SupportedInterfaceCapabilityKey, SupportedInterfaceCapability> supIfMap = new HashMap<>();
- LOG.info("SIC list = {}", sicList);
- for (SupportedIfCapability supInterCapa : sicList) {
- SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder()
- .withKey(new SupportedInterfaceCapabilityKey(supInterCapa))
- .setIfCapType(supInterCapa)
- .build();
- supIfMap.put(supIfCapa.key(), supIfCapa);
- }
- Set<LAYERPROTOCOLQUALIFIER> sclpqList = new HashSet<>();
- for (SupportedInterfaceCapability sic : supIfMap.values()) {
- String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
- switch (lpn.getName()) {
- case "DSR":
- switch (ifCapType) {
- // TODO: it may be needed to add more cases clauses if the interface capabilities of a
- // port are extended in the config file
- case "If1GEODU0":
- sclpqList.add(ODUTYPEODU0.VALUE);
- sclpqList.add(DIGITALSIGNALTYPEGigE.VALUE);
- break;
- case "If10GEODU2e":
- sclpqList.add(ODUTYPEODU2E.VALUE);
- sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If10GEODU2":
- sclpqList.add(ODUTYPEODU2.VALUE);
- sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If10GE":
- sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE);
- break;
- case "If100GEODU4":
- sclpqList.add(DIGITALSIGNALTYPE100GigE.VALUE);
- sclpqList.add(ODUTYPEODU4.VALUE);
- break;
- case "If100GE":
- sclpqList.add(DIGITALSIGNALTYPE100GigE.VALUE);
- break;
- case "IfOCHOTU4ODU4":
- case "IfOCH":
- sclpqList.add(ODUTYPEODU4.VALUE);
- break;
- default:
- LOG.error("IfCapability type not managed");
- break;
- }
- break;
- case "ODU":
- switch (ifCapType) {
- // TODO: it may be needed to add more cases clauses if the interface capabilities of a
- // port are extended in the config file
- case "If1GEODU0":
- sclpqList.add(ODUTYPEODU0.VALUE);
- break;
- case "If10GEODU2e":
- sclpqList.add(ODUTYPEODU2E.VALUE);
- break;
- case "If10GEODU2":
- case "If10GE":
- sclpqList.add(ODUTYPEODU2.VALUE);
- break;
- case "If100GEODU4":
- case "If100GE":
- case "IfOCHOTU4ODU4":
- case "IfOCH":
- sclpqList.add(ODUTYPEODU4.VALUE);
- break;
- default:
- LOG.error("IfCapability type not managed");
- break;
- }
- break;
- case "PHOTONIC_MEDIA":
- if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) {
- sclpqList.add(PHOTONICLAYERQUALIFIEROTSi.VALUE);
- sclpqList.add(PHOTONICLAYERQUALIFIEROMS.VALUE);
- }
- break;
- default:
- LOG.error("Layer Protocol Name is unknown {}", lpn.getName());
- break;
- }
- }
- return sclpqList;
- }
-
private String getNodeType(XpdrNodeTypes xponderType) {
switch (xponderType.getIntValue()) {
case 1:
private void updateConnectivityServicesState(Uuid sipUuid, String nodeId) {
// TODO: check if this IID is correct
InstanceIdentifier<ConnectivityContext> connectivitycontextIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(ConnectivityContext.class)
.build();
ConnectivityContext connContext = null;
private void updateConnection(Connection updConn) {
// TODO: check if this IID is correct
InstanceIdentifier<Connection> connectionIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(ConnectivityContext.class).child(Connection.class,
new ConnectionKey(updConn.getUuid())).build();
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectionIID, updConn);
private void updateConnectivityService(ConnectivityService updService) {
// TODO: check if this IID is correct
InstanceIdentifier<ConnectivityService> connectivityserviceIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class)
.child(ConnectivityContext.class).child(ConnectivityService.class,
new ConnectivityServiceKey(updService.getUuid())).build();
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectivityserviceIID, updService);
LOG.error("Error committing into datastore", e);
}
}
+
+ /**
+ * Get a network termination point for nodeId and tpId.
+ * @param nodeId String
+ * @param tpId String
+ * @return network termination point, null otherwise
+ */
+ private TerminationPoint getNetworkTerminationPointFromDatastore(String nodeId, String tpId) {
+ InstanceIdentifier<TerminationPoint> tpIID = InstanceIdentifier.builder(Networks.class)
+ .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
+ .child(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
+ .networks.network.Node.class,
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
+ .networks.network.NodeKey(new NodeId(nodeId)))
+ .augmentation(Node1.class)
+ .child(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.node.TerminationPoint.class,
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.node.TerminationPointKey(new TpId(tpId)))
+ .build();
+ try (ReadTransaction readTx = this.networkTransactionService.getDataBroker().newReadOnlyTransaction()) {
+ Optional<TerminationPoint> optionalTerminationPoint = readTx
+ .read(LogicalDatastoreType.CONFIGURATION, tpIID)
+ .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+ return optionalTerminationPoint.isEmpty() ? null : optionalTerminationPoint.orElseThrow();
+ } catch (ExecutionException | TimeoutException e) {
+ LOG.warn("Exception while getting termination {} for node id {} point from {} topology",
+ tpId, nodeId, NetworkUtils.OVERLAY_NETWORK_ID, e);
+ return null;
+ } catch (InterruptedException e) {
+ LOG.warn("Getting termination {} for node id {} point from {} topology was interrupted",
+ tpId, nodeId, NetworkUtils.OVERLAY_NETWORK_ID, e);
+ Thread.currentThread().interrupt();
+ return null;
+ }
+ }
+
+
}
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.TransportpceTapinetworkutilsService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Rpc;
String destTp = input.getDegZTp();
Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
TapiStringConstants.OMS_RDM_RDM_LINK, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp),
this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
String sourceTp = input.getNetworkTp();
Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
TapiStringConstants.OMS_XPDR_RDM_LINK, TapiStringConstants.OTSI, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp),
this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
// TODO --> need to check if the link exists in the topology
try {
InstanceIdentifier<Link> linkIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class).child(Topology.class,
- new TopologyKey(tapiTopoUuid)).child(Link.class, new LinkKey(input.getUuid())).build();
+ .augmentation(Context1.class).child(TopologyContext.class).child(Topology.class,
+ new TopologyKey(tapiTopoUuid)).child(Link.class, new LinkKey(input.getUuid())).build();
this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, linkIID);
this.networkTransactionService.commit().get();
LOG.info("TAPI link deleted successfully.");
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.networks.network.Link;
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.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
String destTp = link.getDestination().getDestTp().getValue();
putTapiLinkInTopology(this.tapiLink.createTapiLink(srcNode, srcTp, destNode, destTp,
TapiStringConstants.OMS_XPDR_RDM_LINK, getQual(srcNode), getQual(destNode),
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
link1.getAdministrativeState().getName(), link1.getOperationalState().getName(),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()),
tapiTopoUuid));
}
private void putTapiLinkInTopology(
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link tapiXpdrLink) {
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link tapiXpdrLink) {
LOG.info("Creating tapi link in TAPI topology context");
InstanceIdentifier<Topology> topoIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
if (node.contains("ROADM")) {
return TapiStringConstants.PHTNC_MEDIA;
}
- return TapiStringConstants.OTSI;
+ return TapiStringConstants.XPDR;
}
private boolean oppositeLinkExists(LinkId oppositeLink) {
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
package org.opendaylight.transportpce.tapi.topology;
import com.google.common.collect.ImmutableClassToInstanceMap;
-import com.google.common.util.concurrent.FluentFuture;
import com.google.common.util.concurrent.ListenableFuture;
import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-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.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmLinkType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
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.node.TerminationPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TapiCommonService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.UpdateServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.UpdateServiceInterfacePointInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.UpdateServiceInterfacePointOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.Sip;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.SipBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.SipKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetails;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetails;
-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.GetTopologyDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyListInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyListOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyListOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.TapiTopologyService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.link.details.output.LinkBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.node.edge.point.details.output.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.TopologyBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.TapiCommonService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.UpdateServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.UpdateServiceInterfacePointInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.UpdateServiceInterfacePointOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.Sip;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.SipBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.SipKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetails;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyListInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyListOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TapiTopologyService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.link.details.output.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.node.edge.point.details.output.NodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Rpc;
public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService {
private static final Logger LOG = LoggerFactory.getLogger(TapiTopologyImpl.class);
- private final DataBroker dataBroker;
+ private final NetworkTransactionService networkTransactionService;
private final TapiContext tapiContext;
private final TopologyUtils topologyUtils;
private final TapiLink tapiLink;
+ private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
- public TapiTopologyImpl(DataBroker dataBroker, TapiContext tapiContext, TopologyUtils topologyUtils,
- TapiLink tapiLink) {
- this.dataBroker = dataBroker;
+ public TapiTopologyImpl(NetworkTransactionService networkTransactionService, TapiContext tapiContext,
+ TopologyUtils topologyUtils, TapiLink tapiLink) {
+ this.networkTransactionService = networkTransactionService;
this.tapiContext = tapiContext;
this.topologyUtils = topologyUtils;
this.tapiLink = tapiLink;
- }
+ this.tapiSips = new HashMap<>();
- public ImmutableClassToInstanceMap<Rpc<?, ?>> registerRPCs() {
- return ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
- .put(GetNodeDetails.class, this::getNodeDetails)
- .put(GetTopologyDetails.class, this::getTopologyDetails)
- .put(GetNodeEdgePointDetails.class, this::getNodeEdgePointDetails)
- .put(GetLinkDetails.class, this::getLinkDetails)
- .put(GetTopologyList.class, this::getTopologyList)
- .put(GetServiceInterfacePointDetails.class, this::getServiceInterfacePointDetails)
- .put(GetServiceInterfacePointList.class, this::getServiceInterfacePointList)
- .put(UpdateServiceInterfacePoint.class, this::updateServiceInterfacePoint)
- .build();
}
@Override
public ListenableFuture<RpcResult<GetNodeDetailsOutput>> getNodeDetails(GetNodeDetailsInput input) {
// TODO Auto-generated method stub
// TODO -> maybe we get errors when having CEPs?
- Uuid topoUuid = getUuidFromIput(input.getTopologyIdOrName());
+ Uuid topoUuid = input.getTopologyId();
// Node id: if roadm -> ROADM+PHOTONIC_MEDIA. if xpdr -> XPDR-XPDR+DSR/OTSi
- Uuid nodeUuid = getUuidFromIput(input.getNodeIdOrName());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node = this.tapiContext
+ Uuid nodeUuid = input.getNodeId();
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node = this.tapiContext
.getTapiNode(topoUuid, nodeUuid);
if (node == null) {
LOG.error("Invalid TAPI node name");
.withError(ErrorType.RPC, "Invalid Tapi Node name")
.buildFuture();
}
- return RpcResultBuilder
- .success(new GetNodeDetailsOutputBuilder()
- .setNode(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .get.node.details.output.NodeBuilder(node)
- .build())
- .build())
- .buildFuture();
+ return RpcResultBuilder.success(new GetNodeDetailsOutputBuilder()
+ .setNode(new org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.topology.rev221121.get.node.details.output.NodeBuilder(node).build())
+ .build()).buildFuture();
}
@Override
public ListenableFuture<RpcResult<GetTopologyDetailsOutput>> getTopologyDetails(GetTopologyDetailsInput input) {
- // TODO -> Add check for Full T0 Multilayer
- if (!TapiStringConstants.T0_MULTILAYER.equals(input.getTopologyIdOrName())
- && !TapiStringConstants.TPDR_100G.equals(input.getTopologyIdOrName())) {
- if (TapiStringConstants.T0_FULL_MULTILAYER.equals(input.getTopologyIdOrName())) {
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(input.getTopologyIdOrName()
- .getBytes(Charset.forName("UTF-8"))).toString());
- Context context = this.tapiContext.getTapiContext();
- Map<TopologyKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology>
- topologyMap = context.augmentation(Context1.class).getTopologyContext().getTopology();
- if (!(topologyMap != null && topologyMap.containsKey(new TopologyKey(topoUuid)))) {
- LOG.error("Topology {} not found in datastore", input.getTopologyIdOrName());
- return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
- .withError(ErrorType.RPC, "Invalid Topology name")
- .buildFuture();
- }
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology
- topology = topologyMap.get(new TopologyKey(topoUuid));
- return RpcResultBuilder
- .success(new GetTopologyDetailsOutputBuilder()
- .setTopology(this.topologyUtils.transformTopology(topology))
- .build())
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology topology;
+ Uuid topologyUuidAbs = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ Uuid topologyUuidFull = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ if (input.getTopologyId().equals(topologyUuidFull)) {
+ Context context = this.tapiContext.getTapiContext();
+ Map<TopologyKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology>
+ topologyMap = context.augmentation(Context1.class).getTopologyContext().getTopology();
+ if (topologyMap == null || !topologyMap.containsKey(new TopologyKey(topologyUuidFull))) {
+ LOG.error("Topology {} not found in datastore", input.getTopologyId());
+ return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
+ .withError(ErrorType.RPC, "Invalid Topology name")
.buildFuture();
}
- LOG.error("Invalid TAPI topology name");
- return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
- .withError(ErrorType.RPC, "Invalid Topology name")
+ topology = topologyMap.get(new TopologyKey(input.getTopologyId()));
+ return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder()
+ .setTopology(this.topologyUtils.transformTopology(topology))
+ .build())
.buildFuture();
}
- try {
- LOG.info("Building TAPI Topology abstraction for {}", input.getTopologyIdOrName());
- Topology topology = createAbstractedOtnTopology();
- if (TapiStringConstants.TPDR_100G.equals(input.getTopologyIdOrName())) {
+ Uuid topologyUuid100G = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ if (topologyUuid100G.equals(input.getTopologyId()) || topologyUuidAbs.equals(input.getTopologyId())) {
+ try {
+ LOG.info("Building TAPI Topology abstraction for {}", input.getTopologyId());
+ topology = createAbstractedOtnTopology();
+ if (input.getTopologyId().equals(topologyUuidAbs)) {
+ return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder()
+ .setTopology(this.topologyUtils.transformTopology(topology)).build())
+ .buildFuture();
+ }
topology = createAbstracted100GTpdrTopology(topology);
+ return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder()
+ .setTopology(this.topologyUtils.transformTopology(topology)).build())
+ .buildFuture();
+ } catch (TapiTopologyException e) {
+ LOG.error("error building TAPI topology");
+ return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
+ .withError(ErrorType.RPC, "Error building topology")
+ .buildFuture();
}
- return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().setTopology(topology).build())
+ }
+ return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
+ .withError(ErrorType.RPC, "Invalid Topology name")
+ .buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<GetTopologyListOutput>> getTopologyList(GetTopologyListInput input) {
+ // TODO Auto-generated method stub
+ // TODO -> maybe we get errors when having CEPs?
+ Map<TopologyKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology>
+ topologyMap = this.tapiContext.getTopologyContext();
+ if (topologyMap.isEmpty()) {
+ LOG.error("No topologies exist in tapi context");
+ return RpcResultBuilder.<GetTopologyListOutput>failed()
+ .withError(ErrorType.APPLICATION, "No topologies exist in tapi context")
.buildFuture();
- } catch (TapiTopologyException e) {
- LOG.error("error building TAPI topology");
- return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
- .withError(ErrorType.RPC, "Error building topology")
+ }
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.TopologyKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.Topology>
+ newTopoMap = new HashMap<>();
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology
+ topo:topologyMap.values()) {
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.Topology
+ newTopo = new org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.TopologyBuilder(topo).build();
+ newTopoMap.put(newTopo.key(), newTopo);
+ }
+ return RpcResultBuilder.success(new GetTopologyListOutputBuilder().setTopology(newTopoMap).build())
+ .buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<GetServiceInterfacePointListOutput>>
+ getServiceInterfacePointList(GetServiceInterfacePointListInput input) {
+ Map<ServiceInterfacePointKey, ServiceInterfacePoint> sips =
+ this.tapiContext.getTapiContext().getServiceInterfacePoint();
+ if (sips == null || sips.isEmpty()) {
+ return RpcResultBuilder.<GetServiceInterfacePointListOutput>failed()
+ .withError(ErrorType.RPC, "No sips in datastore")
.buildFuture();
}
+ Map<SipKey, Sip> outSipMap = new HashMap<>();
+ for (ServiceInterfacePoint sip : sips.values()) {
+ Sip si = new SipBuilder(sip).build();
+ outSipMap.put(si.key(), si);
+ }
+ return RpcResultBuilder
+ .success(new GetServiceInterfacePointListOutputBuilder().setSip(outSipMap).build())
+ .buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<UpdateServiceInterfacePointOutput>>
+ updateServiceInterfacePoint(UpdateServiceInterfacePointInput input) {
+ return RpcResultBuilder.<UpdateServiceInterfacePointOutput>failed()
+ .withError(ErrorType.RPC, ErrorTag.OPERATION_NOT_SUPPORTED, "RPC not implemented yet")
+ .buildFuture();
}
@Override
GetNodeEdgePointDetailsInput input) {
// TODO Auto-generated method stub
// TODO -> maybe we get errors when having CEPs?
- Uuid topoUuid = getUuidFromIput(input.getTopologyIdOrName());
+ Uuid topoUuid = input.getTopologyId();
// Node id: if roadm -> ROADMid+PHOTONIC_MEDIA. if xpdr -> XPDRid-XPDRnbr+DSR/OTSi
- Uuid nodeUuid = getUuidFromIput(input.getNodeIdOrName());
+ Uuid nodeUuid = input.getNodeId();
// NEP id: if roadm -> ROADMid+PHOTONIC_MEDIA/MC/OTSiMC+TPid.
// if xpdr -> XPDRid-XPDRnbr+DSR/eODU/iODU/iOTSi/eOTSi/PHOTONIC_MEDIA+TPid
- Uuid nepUuid = getUuidFromIput(input.getEpIdOrName());
+ Uuid nepUuid = input.getNodeEdgePointId();
OwnedNodeEdgePoint nep = this.tapiContext.getTapiNEP(topoUuid, nodeUuid, nepUuid);
if (nep == null) {
LOG.error("Invalid TAPI nep name");
.withError(ErrorType.RPC, "Invalid NEP name")
.buildFuture();
}
- return RpcResultBuilder
- .success(new GetNodeEdgePointDetailsOutputBuilder()
- .setNodeEdgePoint(new NodeEdgePointBuilder(nep).build())
- .build())
- .buildFuture();
+ return RpcResultBuilder.success(new GetNodeEdgePointDetailsOutputBuilder()
+ .setNodeEdgePoint(new NodeEdgePointBuilder(nep).build()).build()).buildFuture();
}
@Override
public ListenableFuture<RpcResult<GetLinkDetailsOutput>> getLinkDetails(GetLinkDetailsInput input) {
// TODO Auto-generated method stub
- Uuid topoUuid = getUuidFromIput(input.getTopologyIdOrName());
+ Uuid topoUuid = input.getTopologyId();
// Link id: same as OR link id
- Uuid linkUuid = getUuidFromIput(input.getLinkIdOrName());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link =
- this.tapiContext.getTapiLink(topoUuid, linkUuid);
+ Uuid linkUuid = input.getLinkId();
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link link = this.tapiContext
+ .getTapiLink(topoUuid, linkUuid);
if (link == null) {
LOG.error("Invalid TAPI link name");
return RpcResultBuilder.<GetLinkDetailsOutput>failed()
.withError(ErrorType.RPC, "Invalid Link name")
.buildFuture();
}
- return RpcResultBuilder
- .success(new GetLinkDetailsOutputBuilder().setLink(new LinkBuilder(link).build()).build())
- .buildFuture();
- }
-
- @Override
- public ListenableFuture<RpcResult<GetTopologyListOutput>> getTopologyList(GetTopologyListInput input) {
- // TODO Auto-generated method stub
- // TODO -> maybe we get errors when having CEPs?
- Map<TopologyKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology>
- topologyMap = this.tapiContext.getTopologyContext();
- if (topologyMap.isEmpty()) {
- LOG.error("No topologies exist in tapi context");
- return RpcResultBuilder.<GetTopologyListOutput>failed()
- .withError(ErrorType.APPLICATION, "No topologies exist in tapi context")
- .buildFuture();
- }
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.list.output.TopologyKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.list.output.Topology>
- newTopoMap = new HashMap<>();
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology
- topo:topologyMap.values()) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.list.output.Topology
- newTopo = new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.get.topology.list.output.TopologyBuilder(topo).build();
- newTopoMap.put(newTopo.key(), newTopo);
- }
- return RpcResultBuilder
- .success(new GetTopologyListOutputBuilder().setTopology(newTopoMap).build())
- .buildFuture();
+ LOG.info("debug link is : {}", link.getName().toString());
+ return RpcResultBuilder.success(new GetLinkDetailsOutputBuilder().setLink(new LinkBuilder(link).build())
+ .build()).buildFuture();
}
@Override
public ListenableFuture<RpcResult<GetServiceInterfacePointDetailsOutput>>
getServiceInterfacePointDetails(GetServiceInterfacePointDetailsInput input) {
- Uuid sipUuid = getUuidFromIput(input.getSipIdOrName());
+ Uuid sipUuid = input.getUuid();
Map<ServiceInterfacePointKey, ServiceInterfacePoint> sips =
this.tapiContext.getTapiContext().getServiceInterfacePoint();
if (sips == null || sips.isEmpty()) {
.withError(ErrorType.RPC, "Sip doesnt exist in datastore")
.buildFuture();
}
- var outSip = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210
- .get.service._interface.point.details.output.SipBuilder(sips.get(new ServiceInterfacePointKey(sipUuid)))
- .build();
- return RpcResultBuilder
- .success(new GetServiceInterfacePointDetailsOutputBuilder().setSip(outSip).build())
- .buildFuture();
- }
-
- @Override
- public ListenableFuture<RpcResult<GetServiceInterfacePointListOutput>>
- getServiceInterfacePointList(GetServiceInterfacePointListInput input) {
- Map<ServiceInterfacePointKey, ServiceInterfacePoint> sips =
- this.tapiContext.getTapiContext().getServiceInterfacePoint();
- if (sips == null || sips.isEmpty()) {
- return RpcResultBuilder.<GetServiceInterfacePointListOutput>failed()
- .withError(ErrorType.RPC, "No sips in datastore")
- .buildFuture();
- }
- Map<SipKey, Sip> outSipMap = new HashMap<>();
- for (ServiceInterfacePoint sip : sips.values()) {
- Sip si = new SipBuilder(sip).build();
- outSipMap.put(si.key(), si);
- }
- return RpcResultBuilder
- .success(new GetServiceInterfacePointListOutputBuilder().setSip(outSipMap).build())
+ org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.details.output.Sip outSip =
+ new org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.details.output.SipBuilder(
+ sips.get(new ServiceInterfacePointKey(sipUuid)))
+ .build();
+ return RpcResultBuilder.success(new GetServiceInterfacePointDetailsOutputBuilder().setSip(outSip).build())
.buildFuture();
}
- @Override
- public ListenableFuture<RpcResult<UpdateServiceInterfacePointOutput>>
- updateServiceInterfacePoint(UpdateServiceInterfacePointInput input) {
- return RpcResultBuilder.<UpdateServiceInterfacePointOutput>failed()
- .withError(ErrorType.RPC, ErrorTag.OPERATION_NOT_SUPPORTED, "RPC not implemented yet")
- .buildFuture();
+ public ImmutableClassToInstanceMap<Rpc<?, ?>> registerRPCs() {
+ return ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
+ .put(GetNodeDetails.class, this::getNodeDetails)
+ .put(GetTopologyDetails.class, this::getTopologyDetails)
+ .put(GetNodeEdgePointDetails.class, this::getNodeEdgePointDetails)
+ .put(GetLinkDetails.class, this::getLinkDetails)
+ .put(GetTopologyList.class, this::getTopologyList)
+ .put(GetServiceInterfacePointDetails.class, this::getServiceInterfacePointDetails)
+ .put(GetServiceInterfacePointList.class, this::getServiceInterfacePointList)
+ .put(UpdateServiceInterfacePoint.class, this::updateServiceInterfacePoint)
+ .build();
}
- private Topology createAbstracted100GTpdrTopology(Topology topology) {
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> dsrNodes =
+ public org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology
+ createAbstracted100GTpdrTopology(
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology topology) {
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> dsrNodes =
topology.nonnullNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.collect(Collectors.toList());
List<OwnedNodeEdgePoint> nep100GTpdrList = new ArrayList<>();
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node2: dsrNodes) {
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node2: dsrNodes) {
List<OwnedNodeEdgePoint> nepList = node2.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))).collect(Collectors.toList());
nep100GTpdrList.addAll(nepList);
.setValueName("TAPI Topology Name").build();
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(
TapiStringConstants.TPDR_100G.getBytes(Charset.forName("UTF-8"))).toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node =
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node =
createTapiNode(nep100GTpdrList, topoUuid);
- return new TopologyBuilder()
+ return new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context
+ .TopologyBuilder()
.setName(Map.of(topoName.key(), topoName))
.setUuid(topoUuid)
.setNode(Map.of(node.key(), node))
+ .setLayerProtocolName(Set.of(LayerProtocolName.DSR, LayerProtocolName.ETH))
.build();
}
- private Network readTopology(InstanceIdentifier<Network> networkIID) throws TapiTopologyException {
- Network topology = null;
- FluentFuture<Optional<Network>> topologyFuture = dataBroker.newReadOnlyTransaction()
- .read(LogicalDatastoreType.CONFIGURATION, networkIID);
- try {
- topology = topologyFuture.get().orElseThrow();
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- throw new TapiTopologyException("Unable to get from mdsal topology: " + networkIID
- .firstKeyOf(Network.class).getNetworkId().getValue(), e);
- } catch (ExecutionException e) {
- throw new TapiTopologyException("Unable to get from mdsal topology: " + networkIID
- .firstKeyOf(Network.class).getNetworkId().getValue(), e);
- }
- return topology;
- }
-
- private Topology createAbstractedOtnTopology() throws TapiTopologyException {
+ public org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology
+ createAbstractedOtnTopology() throws TapiTopologyException {
// read openroadm-topology
Network openroadmTopo = readTopology(InstanceIdentifiers.OVERLAY_NETWORK_II);
List<Link> linkList = new ArrayList<>();
networkPortMap.put(entry.getKey().getValue(), networkPortList);
}
}
- Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
tapiNodeList = new HashMap<>();
- Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link>
+ Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link>
tapiLinkList = new HashMap<>();
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topoUuid, this.tapiLink);
+ ConvertORTopoToTapiTopo tapiAbstractFactory = new ConvertORTopoToTapiTopo(topoUuid, this.tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topoUuid);
Iterator<Entry<String, List<String>>> it = networkPortMap.entrySet().iterator();
while (it.hasNext()) {
String nodeId = it.next().getKey();
tapiFactory.convertNode(otnNodeMap.get(new NodeId(nodeId)), networkPortMap.get(nodeId));
- tapiNodeList.putAll(tapiFactory.getTapiNodes());
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ tapiAbstractFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiAbstractFactory.setTapiSips(tapiFactory.getTapiSips());
+ tapiNodeList.putAll(tapiAbstractFactory.getTapiNodes());
+ tapiLinkList.putAll(tapiAbstractFactory.getTapiLinks());
}
if (openroadmTopo.nonnullNode().values().stream()
.filter(nt -> nt
.getNodeType()
.equals(OpenroadmNodeType.SRG))
.count() > 0) {
- tapiFactory.convertRoadmInfrastructure();
- tapiNodeList.putAll(tapiFactory.getTapiNodes());
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ tapiAbstractFactory.convertRoadmInfrastructure();
+ tapiNodeList.putAll(tapiAbstractFactory.getTapiNodes());
+ tapiLinkList.putAll(tapiAbstractFactory.getTapiLinks());
} else {
LOG.warn("Unable to abstract an ROADM infrasctructure from openroadm-topology");
}
Map<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
.ietf.network.topology.rev180226.networks.network.LinkKey, Link> otnLinkMap =
otnTopo.augmentation(Network1.class).getLink();
- tapiFactory.convertLinks(otnLinkMap);
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ tapiAbstractFactory.convertLinks(otnLinkMap);
+ tapiLinkList.putAll(tapiAbstractFactory.getTapiLinks());
}
Name name = new NameBuilder()
.setValue(TapiStringConstants.T0_MULTILAYER)
.setValueName("TAPI Topology Name")
.build();
- return new TopologyBuilder()
- .setName(Map.of(name.key(), name))
- .setUuid(topoUuid)
- .setNode(tapiNodeList)
- .setLink(tapiLinkList).build();
+ LOG.info("TOPOABSTRACTED : the list of node is as follows {}", tapiNodeList.toString());
+ this.tapiSips.putAll(tapiAbstractFactory.getTapiSips());
+ return new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context
+ .TopologyBuilder()
+ .setName(Map.of(name.key(), name))
+ .setUuid(topoUuid)
+ .setNode(tapiNodeList)
+ .setLayerProtocolName(Set.of(LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.DIGITALOTN))
+ .setLink(tapiLinkList).build();
}
- private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node
+ private Network readTopology(InstanceIdentifier<Network> networkIID) throws TapiTopologyException {
+ Network topology = null;
+ ListenableFuture<Optional<Network>> topologyFuture = networkTransactionService
+ .read(LogicalDatastoreType.CONFIGURATION, networkIID);
+ try {
+ topology = topologyFuture.get().orElseThrow();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new TapiTopologyException("Unable to get from mdsal topology: " + networkIID
+ .firstKeyOf(Network.class).getNetworkId().getValue(), e);
+ } catch (ExecutionException e) {
+ throw new TapiTopologyException("Unable to get from mdsal topology: " + networkIID
+ .firstKeyOf(Network.class).getNetworkId().getValue(), e);
+ }
+ return topology;
+ }
+
+ private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node
createTapiNode(List<OwnedNodeEdgePoint> nepList, Uuid topoUuid) {
Name name = new NameBuilder().setValueName("Tpdr100g node name").setValue("Tpdr100g over WDM node").build();
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
}
@NonNull
KeyedInstanceIdentifier<Mapping, MappingKey> pmIID = InstanceIdentifier.create(
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network.class)
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network.class)
.child(Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp));
- @NonNull
- FluentFuture<Optional<Mapping>> mappingOpt = dataBroker.newReadOnlyTransaction().read(
- LogicalDatastoreType.CONFIGURATION, pmIID);
+ ListenableFuture<Optional<Mapping>> mappingOpt = networkTransactionService
+ .read(LogicalDatastoreType.CONFIGURATION, pmIID);
Mapping mapping = null;
if (mappingOpt.isDone()) {
try {
private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupFor100gTpdrNode(Uuid topoUuid, Uuid nodeUuid,
Collection<OwnedNodeEdgePoint> onepl) {
- Map<
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint> nepMap
- = new HashMap<>();
- for (OwnedNodeEdgePoint onep : onepl) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint nep =
- new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(topoUuid)
- .setNodeUuid(nodeUuid)
- .setNodeEdgePointUuid(onep.key().getUuid())
- .build();
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
+ nepMap = new HashMap<>();
+ for (OwnedNodeEdgePoint onep: onepl) {
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint nep =
+ new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group
+ .NodeEdgePointBuilder()
+ .setTopologyUuid(topoUuid)
+ .setNodeUuid(nodeUuid)
+ .setNodeEdgePointUuid(onep.key().getUuid())
+ .build();
nepMap.put(nep.key(), nep);
}
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
Map<RuleKey, Rule> ruleList = new HashMap<>();
+ Set<RuleType> ruleTypes = new HashSet<>();
+ ruleTypes.add(RuleType.FORWARDING);
Rule rule = new RuleBuilder()
.setLocalId("forward")
- .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
- .setRuleType(RuleType.FORWARDING)
+ .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE)
+ .setRuleType(ruleTypes)
.build();
ruleList.put(rule.key(), rule);
NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
return nodeRuleGroupMap;
}
- private Uuid getUuidFromIput(String serviceIdOrName) {
- try {
- UUID.fromString(serviceIdOrName);
- LOG.info("Given attribute {} is a UUID", serviceIdOrName);
- return new Uuid(serviceIdOrName);
- } catch (IllegalArgumentException e) {
- LOG.info("Given attribute {} is not a UUID", serviceIdOrName);
- return new Uuid(UUID.nameUUIDFromBytes(serviceIdOrName.getBytes(StandardCharsets.UTF_8)).toString());
- }
+ public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getSipMap() {
+ return tapiSips;
}
+
}
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.NodesKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmLinkType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
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.node.TerminationPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+//import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.slf4j.Logger;
private static final Logger LOG = LoggerFactory.getLogger(TopologyUtils.class);
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
private final TapiLink tapiLink;
+ public static final String NOOPMODEDECLARED = "No operational mode declared in Topo for Tp {}, assumes by default ";
public TopologyUtils(NetworkTransactionService networkTransactionService, DataBroker dataBroker,
TapiLink tapiLink) {
return topology;
}
+ public List<String> readTopologyName(Uuid topoUuid) throws TapiTopologyException {
+ Topology topology = null;
+ InstanceIdentifier<Topology> topoIID = InstanceIdentifier.builder(
+ Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.topology.rev221121.Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(topoUuid)).build();
+
+ ListenableFuture<Optional<Topology>> topologyFuture =
+ this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, topoIID);
+ try {
+ topology = topologyFuture.get().orElseThrow();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new TapiTopologyException("Unable to get from mdsal topology: " + topoIID
+ .firstKeyOf(Topology.class).getUuid().getValue(), e);
+ } catch (ExecutionException e) {
+ throw new TapiTopologyException("Unable to get from mdsal topology: " + topoIID
+ .firstKeyOf(Topology.class).getUuid().getValue(), e);
+ } catch (NoSuchElementException e) {
+ return null;
+ }
+ List<String> nameList = new ArrayList<>();
+ for (Map.Entry<NameKey, Name> entry : topology.getName().entrySet()) {
+ nameList.add(entry.getValue().getValue());
+ }
+ LOG.debug("Topology nameList {} = ", nameList.toString());
+ return nameList;
+ }
+
public Topology createFullOtnTopology() throws TapiTopologyException {
// read openroadm-topology
Network openroadmTopo = readTopology(InstanceIdentifiers.OVERLAY_NETWORK_II);
networkPortMap.put(entry.getKey().getValue(), networkPortList);
}
}
- Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
tapiNodeList = new HashMap<>();
- Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link>
+ Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link>
tapiLinkList = new HashMap<>();
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topoUuid, this.tapiLink);
+ ConvertORTopoToTapiFullTopo tapiFullFactory = new ConvertORTopoToTapiFullTopo(topoUuid, this.tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topoUuid);
Iterator<Map.Entry<String, List<String>>> it = networkPortMap.entrySet().iterator();
while (it.hasNext()) {
String nodeId = it.next().getKey();
tapiFactory.convertNode(otnNodeMap.get(new NodeId(nodeId)), networkPortMap.get(nodeId));
+ this.tapiSips.putAll(tapiFactory.getTapiSips());
+ tapiFullFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiFullFactory.setTapiSips(tapiFactory.getTapiSips());
tapiNodeList.putAll(tapiFactory.getTapiNodes());
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ tapiLinkList.putAll(tapiFullFactory.getTapiLinks());
}
// roadm infrastructure not abstracted
// read openroadm-network
.getNodeType()
.equals(OpenroadmNodeType.ROADM))
.collect(Collectors.toList())) {
- tapiFactory.convertRoadmNode(roadm, openroadmTopo);
- tapiNodeList.putAll(tapiFactory.getTapiNodes());
+ tapiFullFactory.convertRoadmNode(roadm, openroadmTopo);
+ this.tapiSips.putAll(tapiFullFactory.getTapiSips());
+ tapiNodeList.putAll(tapiFullFactory.getTapiNodes());
+ tapiLinkList.putAll(tapiFullFactory.getTapiLinks());
}
} else {
LOG.warn("No roadm nodes exist in the network");
List<Link> rdmTordmLinkList = linkList.stream()
.filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.ROADMTOROADM))
.collect(Collectors.toList());
- tapiFactory.convertRdmToRdmLinks(rdmTordmLinkList);
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ tapiFullFactory.convertRdmToRdmLinks(rdmTordmLinkList);
+ tapiLinkList.putAll(tapiFullFactory.getTapiLinks());
// map xpdr_input to roadm and xpdr_output to roadm links.
xponderInLinkList.addAll(xponderOutLinkList);
- tapiFactory.convertXpdrToRdmLinks(xponderInLinkList);
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ tapiFullFactory.convertXpdrToRdmLinks(xponderInLinkList);
+ tapiLinkList.putAll(tapiFullFactory.getTapiLinks());
// Retrieve created sips map in TapiFactory when mapping all the nodes
- this.tapiSips = tapiFactory.getTapiSips();
+ this.tapiSips.putAll(tapiFullFactory.getTapiSips());
+ var topo = new TopologyBuilder()
+ .setName(Map.of(name.key(), name))
+ .setUuid(topoUuid)
+ .setNode(tapiNodeList)
+ .setLayerProtocolName(Set.of(LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.ODU,
+ LayerProtocolName.DSR))
+ .setLink(tapiLinkList).build();
+ LOG.error("TOPOUTIL, Initial FullTopology Builder.build = {}", topo.toString());
return new TopologyBuilder()
.setName(Map.of(name.key(), name))
.setUuid(topoUuid)
.build();
}
- public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getSipMap() {
- return tapiSips;
- }
-
public boolean checkTp(String nodeIdTopo, String nodeIdPortMap, TerminationPoint tp, List<Link> xpdOut,
List<Link> xpdIn) {
LOG.info("Inside Checktp for node {}-{}", nodeIdTopo, nodeIdPortMap);
LOG.info("Network LCP associated = {}", networkLcp);
@NonNull
KeyedInstanceIdentifier<Mapping, MappingKey> pmIID = InstanceIdentifier.create(
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network.class)
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network.class)
.child(Nodes.class, new NodesKey(nodeIdPortMap)).child(Mapping.class, new MappingKey(networkLcp));
@NonNull
FluentFuture<Optional<Mapping>> mappingOpt = this.dataBroker.newReadOnlyTransaction().read(
}
LOG.info("Mapping found = {}", mapping);
String networkPortDirection = mapping.getPortDirection();
- // long count = 0;
switch (networkPortDirection) {
// TODO -> remove the part of counting only if the Network LCP is part of a Link.
// We want to have all OTN nodes in the TAPI topology
}
}
- public org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology
+ public org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.details.output.Topology
transformTopology(Topology topology) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
.get.topology.details.output.TopologyBuilder topologyBuilder =
- new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
.get.topology.details.output.TopologyBuilder()
.setUuid(topology.getUuid())
.setName(topology.getName())
.setLayerProtocolName(topology.getLayerProtocolName())
- .setNode(topology.getNode())
.setLink(topology.getLink());
- if (topology.getNode() == null) {
- topologyBuilder.setNode(topology.getNode());
+ if (topology.nonnullNode().isEmpty()) {
return topologyBuilder.build();
}
- // TODO -> Need to remove CEPs from NEPs. If not error from get Topology details output
Map<NodeKey, Node> mapNode = new HashMap<>();
- for (Node node: topology.getNode().values()) {
+ for (Node node: topology.nonnullNode().values()) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
- for (OwnedNodeEdgePoint onep: node.getOwnedNodeEdgePoint().values()) {
- OwnedNodeEdgePoint1 onep1 = onep.augmentation(OwnedNodeEdgePoint1.class);
- if (onep1 == null) {
- onepMap.put(onep.key(), onep);
- continue;
- }
- OwnedNodeEdgePointBuilder newOnepBuilder = new OwnedNodeEdgePointBuilder()
+ for (OwnedNodeEdgePoint onep: node.nonnullOwnedNodeEdgePoint().values()) {
+// OwnedNodeEdgePoint1 onep1 = onep.augmentation(OwnedNodeEdgePoint1.class);
+// if (onep1 == null) {
+// onepMap.put(onep.key(), onep);
+// continue;
+// }
+ OwnedNodeEdgePoint newOnep = new OwnedNodeEdgePointBuilder()
.setUuid(onep.getUuid())
.setLayerProtocolName(onep.getLayerProtocolName())
.setName(onep.getName())
- .setSupportedCepLayerProtocolQualifier(onep.getSupportedCepLayerProtocolQualifier())
+ .setSupportedCepLayerProtocolQualifierInstances(onep
+ .getSupportedCepLayerProtocolQualifierInstances())
.setAdministrativeState(onep.getAdministrativeState())
.setOperationalState(onep.getOperationalState())
.setLifecycleState(onep.getLifecycleState())
- .setTerminationDirection(onep.getTerminationDirection())
- .setTerminationState(onep.getTerminationState())
- .setLinkPortDirection(onep.getLinkPortDirection())
- .setLinkPortRole(onep.getLinkPortRole());
- if (onep.getMappedServiceInterfacePoint() != null) {
- newOnepBuilder.setMappedServiceInterfacePoint(onep.getMappedServiceInterfacePoint());
- }
- OwnedNodeEdgePoint nep = newOnepBuilder.build();
- onepMap.put(nep.key(), nep);
+// .setTerminationDirection(onep.getTerminationDirection())
+// .setTerminationState(onep.getTerminationState())
+ .setDirection(onep.getDirection())
+ .setSupportedPayloadStructure(onep.getSupportedPayloadStructure())
+ .setAvailablePayloadStructure(onep.getAvailablePayloadStructure())
+ .setLinkPortRole(onep.getLinkPortRole())
+ .setMappedServiceInterfacePoint(onep.nonnullMappedServiceInterfacePoint())
+ .build();
+ onepMap.put(newOnep.key(), newOnep);
}
- Node newNode = new NodeBuilder(node)
+ Node newNode = new NodeBuilder()
+ .setUuid(node.getUuid())
+ .setName(node.getName())
+ .setOperationalState(node.getOperationalState())
+ .setAdministrativeState(node.getAdministrativeState())
+ .setLifecycleState(node.getLifecycleState())
+ .setLayerProtocolName(node.getLayerProtocolName())
+ .setNodeRuleGroup(node.getNodeRuleGroup())
+ .setInterRuleGroup(node.getInterRuleGroup())
.setOwnedNodeEdgePoint(onepMap)
.build();
mapNode.put(newNode.key(), newNode);
topologyBuilder.setNode(mapNode);
return topologyBuilder.build();
}
+
+ public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getSipMap() {
+ return tapiSips;
+ }
+
}
import org.opendaylight.transportpce.tapi.connectivity.ConnectivityUtils;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceAEnd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceZEnd;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.EndPointType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.service._interface.points.ServiceEndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.EndPointType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.service._interface.points.ServiceEndPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1Builder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1Builder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepList;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.context.NotificationContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.NwTopologyServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1Builder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1Builder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepList;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.context.NotificationContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContextBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.NwTopologyServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
.setValueName("Network Topo Service Name")
.build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1 topologyContext
- = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1Builder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1 topologyContext
+ = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1Builder()
.setTopologyContext(new TopologyContextBuilder()
.setNwTopologyService(new NwTopologyServiceBuilder()
.setTopology(new HashMap<>())
.build())
.build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1 notificationContext
- = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1Builder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1 notificationContext
+ = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1Builder()
.setNotificationContext(new NotificationContextBuilder()
.setNotification(new HashMap<>())
.setNotifSubscription(new HashMap<>())
.build();
InstanceIdentifier<TopologyContext> topologycontextIID =
InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.Context1.class)
+ .onf.otcc.yang.tapi.topology.rev221121.Context1.class)
.child(TopologyContext.class)
.build();
// merge in datastore
Map<ConnectionKey, Connection> connectionFullMap) {
// TODO: verify this is correct. Should we identify the context IID with the context UUID??
try {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext
connectivityContext = new ConnectivityContextBuilder()
.setConnectivityService(connServMap)
.setConnection(connectionFullMap)
.build();
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext> connectivitycontextIID =
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivitycontextIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.build();
// merge in datastore
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectivitycontextIID,
connectivityContext);
this.networkTransactionService.commit().get();
LOG.info("TAPI connectivity merged successfully.");
+ LOG.debug("TAPI connectivity merged successfully for services {}", connServMap.entrySet().iterator()
+ .next().getKey().toString());
} catch (InterruptedException | ExecutionException e) {
LOG.error("Failed to merge TAPI connectivity", e);
}
public void updateTopologyWithCep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, ConnectionEndPoint cep) {
// TODO: verify this is correct. Should we identify the context IID with the context UUID??
InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
.child(Topology.class, new TopologyKey(topoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
new NodeKey(nodeUuid))
.child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
.build();
public Node getTapiNode(Uuid topoUuid, Uuid nodeUuid) {
InstanceIdentifier<Node> nodeIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
.child(Topology.class, new TopologyKey(topoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
new NodeKey(nodeUuid)).build();
try {
Optional<Node> optNode = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID)
.setUuid(onep.getUuid())
.setLayerProtocolName(onep.getLayerProtocolName())
.setName(onep.getName())
- .setSupportedCepLayerProtocolQualifier(onep.getSupportedCepLayerProtocolQualifier())
+ .setSupportedCepLayerProtocolQualifierInstances(
+ onep.getSupportedCepLayerProtocolQualifierInstances())
.setAdministrativeState(onep.getAdministrativeState())
.setOperationalState(onep.getOperationalState())
.setLifecycleState(onep.getLifecycleState())
- .setTerminationDirection(onep.getTerminationDirection())
- .setTerminationState(onep.getTerminationState())
- .setLinkPortDirection(onep.getLinkPortDirection())
+// .setTerminationDirection(onep.getTerminationDirection())
+// .setTerminationState(onep.getTerminationState())
+ .setDirection(onep.getDirection())
.setLinkPortRole(onep.getLinkPortRole());
if (onep.getMappedServiceInterfacePoint() != null) {
newOnepBuilder.setMappedServiceInterfacePoint(onep.getMappedServiceInterfacePoint());
public OwnedNodeEdgePoint getTapiNEP(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid) {
InstanceIdentifier<OwnedNodeEdgePoint> nepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
.child(Topology.class, new TopologyKey(topoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
new NodeKey(nodeUuid)).child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)).build();
try {
Optional<OwnedNodeEdgePoint> optNode = this.networkTransactionService
public Link getTapiLink(Uuid topoUuid, Uuid linkUuid) {
InstanceIdentifier<Link> linkIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
.child(Topology.class, new TopologyKey(topoUuid))
.child(Link.class, new LinkKey(linkUuid)).build();
try {
public Map<TopologyKey, Topology> getTopologyContext() {
InstanceIdentifier<TopologyContext> topologycontextIID =
InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev181210.Context1.class)
+ .onf.otcc.yang.tapi.topology.rev221121.Context1.class)
.child(TopologyContext.class)
.build();
try {
InstanceIdentifier<ConnectivityService> connectivityServIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(serviceUuid))
.build();
return;
}
for (org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection connection:
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection connection:
connectivityService.getConnection().values()) {
- deleteConnection(connection.getConnectionUuid(), serviceUuid, connectivityService.getServiceLayer());
+ deleteConnection(connection.getConnectionUuid(), serviceUuid, connectivityService.getLayerProtocolName());
}
InstanceIdentifier<ConnectivityService> connectivityServIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(serviceUuid))
.build();
try {
private void deleteConnection(Uuid connectionUuid, Uuid serviceUuid, LayerProtocolName serviceLayer) {
// First read connectivity service with service uuid and update info
InstanceIdentifier<org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection> connectionIID =
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class,
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class,
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey(
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey(
connectionUuid))
.build();
Connection connection = getConnection(connectionUuid);
}
if (connService.getConnection().containsKey(
new org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey(
+ .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey(
connection.getUuid()))) {
LOG.info("isNotUsedByOtherService: Connection {} is in used by service {}. Cannot remove it from "
+ "context", connection.getUuid().getValue(), connService.getUuid().getValue());
}
LOG.info("isNotUsedByOtherService: Going to check lower connections");
for (org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection
conn:connService.getConnection().values()) {
Connection connection1 = getConnection(conn.getConnectionUuid());
if (connection1 == null || connection1.getLowerConnection() == null) {
InstanceIdentifier<Connection> connIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.child(Connection.class, new ConnectionKey(connectionUuid))
.build();
try {
// First read connectivity service with service uuid and update info
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext> connectivityContextIID =
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivityContextIID =
InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
.child(org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class)
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class)
.build();
Optional<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext> optConnContext =
+ .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> optConnContext =
this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectivityContextIID)
.get();
if (!optConnContext.isPresent()) {
public ConnectionEndPoint getTapiCEP(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, Uuid cepUuid) {
InstanceIdentifier<OwnedNodeEdgePoint> nepIID = InstanceIdentifier.builder(Context.class)
- .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class)
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
.child(Topology.class, new TopologyKey(topoUuid))
- .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class,
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
new NodeKey(nodeUuid)).child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)).build();
try {
Optional<OwnedNodeEdgePoint> optNode = this.networkTransactionService
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Set;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
public interface TapiLink {
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.AvailableCapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.TotalPotentialCapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.ProtectionType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RestorationPolicy;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.ResilienceTypeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.validation.pac.ValidationMechanism;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.validation.pac.ValidationMechanismBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.Uint64;
+import org.opendaylight.yangtools.yang.common.Decimal64;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
.build();
LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
.setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
.setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.setNodeEdgePoint(nepList)
.setDirection(ForwardingDirection.BIDIRECTIONAL)
.setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
+ new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE).setValue(Decimal64.valueOf("100")).build())
.build())
- .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
+ .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTION)
.setRestorationPolicy(RestorationPolicy.NA)
.build())
.setAdministrativeState(setTapiAdminState(adminState))
.setOperationalState(setTapiOperationalState(operState))
.setLifecycleState(LifecycleState.INSTALLED)
.setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
- new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build())
+ new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE).setValue(Decimal64.valueOf("100")).build())
.build())
.setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
.setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
.build();
}
+ @Override
public AdministrativeState setTapiAdminState(String adminState) {
if (adminState == null) {
return null;
: AdministrativeState.LOCKED;
}
+ @Override
public AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2) {
if (adminState1 == null || adminState2 == null) {
return null;
? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
}
+ @Override
public OperationalState setTapiOperationalState(String operState) {
if (operState == null) {
return null;
? OperationalState.ENABLED : OperationalState.DISABLED;
}
+ @Override
public OperationalState setTapiOperationalState(State operState1, State operState2) {
if (operState1 == null || operState2 == null) {
return null;
? OperationalState.ENABLED : OperationalState.DISABLED;
}
+ @Override
public String getOperState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) {
Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
- TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
- TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onep1IID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid))
}
}
+ @Override
public String getAdminState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) {
Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
- TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
- TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onep1IID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid))
import org.opendaylight.mdsal.binding.api.DataObjectModification;
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.ServiceInterfacePoints;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.service._interface.points.ServiceEndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.ServiceInterfacePoints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.service._interface.points.ServiceEndPoint;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.opendaylight.transportpce.common.OperationResult;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
import org.opendaylight.transportpce.tapi.validation.checks.ConnConstraintCheck;
import org.opendaylight.transportpce.tapi.validation.checks.EndPointCheck;
import org.opendaylight.transportpce.tapi.validation.checks.ResilienceConstraintCheck;
import org.opendaylight.transportpce.tapi.validation.checks.TopoConstraintCheck;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ResilienceConstraint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.TopologyConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ConnectivityConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ResilienceConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
}
LOG.info("checking TopoConstraint...");
- TopologyConstraint topoConstraint = input.getTopologyConstraint();
- ComplianceCheckResult topoConstraintCheckResult = TopoConstraintCheck.check(topoConstraint);
- if (topoConstraintCheckResult.hasPassed()) {
- LOG.info("create-connectivity-service topo constraints compliant !");
- } else {
- return OperationResult.failed(topoConstraintCheckResult.getMessage());
+ Map<TopologyConstraintKey, TopologyConstraint> topoConstraintMap = input.getTopologyConstraint();
+ for (Map.Entry<TopologyConstraintKey, TopologyConstraint> topoConstraint: topoConstraintMap.entrySet()) {
+ ComplianceCheckResult topoConstraintCheckResult = TopoConstraintCheck.check(topoConstraint.getValue());
+ if (!topoConstraintCheckResult.hasPassed()) {
+ return OperationResult.failed(topoConstraintCheckResult.getMessage());
+ }
}
+ LOG.info("create-connectivity-service topo constraints compliant !");
return OperationResult.ok("Validation successful.");
}
package org.opendaylight.transportpce.tapi.validation.checks;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ConnectivityConstraint;
public final class ConnConstraintCheck {
import java.util.List;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
package org.opendaylight.transportpce.tapi.validation.checks;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ResilienceConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ResilienceConstraint;
public final class ResilienceConstraintCheck {
package org.opendaylight.transportpce.tapi.validation.checks;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.TopologyConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return ((value != null) && (!value.isEmpty()));
}
- public static ComplianceCheckResult check(TopologyConstraint tc) {
+ public static ComplianceCheckResult check(TopologyConstraint topoConstraint) {
boolean result = true;
String message = "";
- LOG.info("tc = {}", tc);
- if (checkNull(tc)) {
+ LOG.info("tc = {}", topoConstraint);
+ if (checkNull(topoConstraint)) {
LOG.info("tc is null");
message = "Topology constraints are not managet yet";
- } else if (checkEmpty(tc)) {
+ } else if (checkEmpty(topoConstraint)) {
result = false;
message = "Topology constraints are not managet yet";
}
if (tc == null) {
return true;
}
- if (tc.getAvoidTopology() == null) {
+ if (tc.getExcludeTopology() == null) {
return true;
}
if (tc.getExcludeLink() == null) {
if (tc == null) {
return true;
}
- if (tc.getAvoidTopology() != null && tc.getAvoidTopology().isEmpty()) {
+ if (tc.getExcludeTopology() != null && tc.getExcludeTopology().isEmpty()) {
return true;
}
if (tc.getExcludeLink() != null && tc.getExcludeLink().isEmpty()) {
if (tc.getIncludeTopology() != null && tc.getIncludeTopology().isEmpty()) {
return true;
}
- return tc.getPreferredTransportLayer() != null && tc.getPreferredTransportLayer().isEmpty();
+ //TODO: check this changes : do not understand the rational of this class
+ return tc.getPreferredTransportLayer() != null && tc.getPreferredTransportLayer() == null;
}
}
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.utils.TopologyDataUtils;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommon;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceOutput;
import org.opendaylight.yangtools.yang.common.ErrorType;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.slf4j.Logger;
networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations);
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils,
- tapipceNotificationHandler, tapirendererNotificationHandler);
+ tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService);
ListenableFuture<RpcResult<CreateConnectivityServiceOutput>> result =
tapiConnectivity.createConnectivityService(new CreateConnectivityServiceInputBuilder().build());
networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations);
CreateConnectivityServiceInput input = TapiConnectivityDataUtils.buildConnServiceCreateInput();
+
when(pathComputationService.pathComputationRequest(any())).thenReturn(Futures.immediateFuture(any()));
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils,
- tapipceNotificationHandler, tapirendererNotificationHandler);
+ tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService);
ListenableFuture<RpcResult<CreateConnectivityServiceOutput>> result =
tapiConnectivity.createConnectivityService(input);
result.addListener(new Runnable() {
}, executorService);
endSignal.await();
-
+ LOG.info("INPUT= {}", input.toString());
RpcResult<CreateConnectivityServiceOutput> rpcResult = result.get();
assertTrue(rpcResult.isSuccessful());
}
networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations);
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils,
- tapipceNotificationHandler, tapirendererNotificationHandler);
+ tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService);
ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> result =
tapiConnectivity.deleteConnectivityService(new DeleteConnectivityServiceInputBuilder().build());
OrgOpenroadmServiceService serviceHandler = new ServicehandlerImpl(rpcProviderService, pathComputationService,
rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl,
networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations);
-
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils,
- tapipceNotificationHandler, tapirendererNotificationHandler);
+ tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService);
ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> result =
tapiConnectivity.deleteConnectivityService(input);
result.addListener(new Runnable() {
@Test
void deleteConnServiceShouldBeSuccessForExistingService() throws ExecutionException, InterruptedException {
- when(rendererServiceOperations.serviceDelete(any(), any())).thenReturn(Futures.immediateFuture(any()));
+ ConfigurationResponseCommon crc = new ConfigurationResponseCommonBuilder()
+ .setRequestId("request 1")
+ .setResponseCode("OK")
+ .setAckFinalIndicator("requestProcessed").build();
+ ServiceDeleteOutput sdo = new ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(crc)
+ .build();
+ when(rendererServiceOperations.serviceDelete(any(), any()))
+ .thenReturn(Futures.immediateFuture(sdo));
OrgOpenroadmServiceService serviceHandler = new ServicehandlerImpl(rpcProviderService, pathComputationService,
rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl,
networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations);
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils,
- tapipceNotificationHandler, tapirendererNotificationHandler);
-
+ tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService);
ServiceCreateInput createInput = TapiConnectivityDataUtils.buildServiceCreateInput();
serviceDataStoreOperations.createService(createInput);
tapiContext.updateConnectivityContext(TapiConnectivityDataUtils.createConnService(), new HashMap<>());
-
DeleteConnectivityServiceInput input = TapiConnectivityDataUtils.buildConnServiceDeleteInput();
ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> result =
tapiConnectivity.deleteConnectivityService(input);
}, executorService);
endSignal.await();
-
+ LOG.debug("RESULT = {}", result.toString());
RpcResult<DeleteConnectivityServiceOutput> rpcResult = result.get();
assertTrue(rpcResult.isSuccessful());
}
-}
\ No newline at end of file
+}
import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
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.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU0;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LAYERPROTOCOLQUALIFIER;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU0;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid));
Uuid enetworkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
OwnedNodeEdgePoint inepN = dsrNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inetworkNepUuid));
assertNull(inepN.getAdministrativeState(), "Administrative State should not be present");
assertNull(inepN.getOperationalState(), "Operational State should not be present");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid));
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertNull(enep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(enep.getOperationalState(), "Operational State should not be present");
-
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertNull(inep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(inep.getOperationalState(), "Operational State should not be present");
-
- Uuid photnepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint photnep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(photnepUuid));
- assertNull(photnep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(photnep.getOperationalState(), "Operational State should not be present");
}
@Test
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid));
Uuid enetworkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
assertEquals(AdministrativeState.LOCKED, inepN.getAdministrativeState(),
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, inepN.getOperationalState(), "Operational State should be Disabled");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid));
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid photnepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint photnep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(photnepUuid));
- assertEquals(AdministrativeState.LOCKED, photnep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, photnep.getOperationalState(), "Operational State should be Disabled");
}
@Test
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid));
Uuid enetworkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
.toString());
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, inepN.getOperationalState(), "Operational State should be Disabled");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid));
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid photnepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint photnep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(photnepUuid));
- assertEquals(AdministrativeState.LOCKED, photnep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, photnep.getOperationalState(), "Operational State should be Disabled");
}
@Test
void convertNodeForTransponder100G() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(tpdr100G, networkPortList);
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
= tapiFactory.getTapiNodes().values().stream()
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(tapiNodes.get(1), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "tpdr", "XPDR-A1-XPDR1");
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link> tapiLinks
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(1), dsrNodeUuid, otsiNodeUuid,
- "XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1", "XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1", "XPDR-A1-XPDR1");
+ checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1");
}
@Test
void convertNodeForOtnMuxponder() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxA, networkPortList);
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
= tapiFactory.getTapiNodes().values().stream()
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "mux", "SPDR-SA1-XPDR1");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "mux", "SPDR-SA1-XPDR1");
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link> tapiLinks
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR1+iODU+XPDR1-NETWORK1", "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1", "SPDR-SA1-XPDR1");
}
@Test
void convertNodeForOtnSwitch() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnSwitch.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnSwitch, networkPortList);
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
= tapiFactory.getTapiNodes().values().stream()
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(4, tapiFactory.getTapiLinks().size(), "Link list size should be 4");
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "switch", "SPDR-SA1-XPDR2");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "switch", "SPDR-SA1-XPDR2");
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link> tapiLinks
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(2), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR2+iODU+XPDR2-NETWORK4", "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK4", "SPDR-SA1-XPDR2");
}
@Test
void convertNodeForRoadmWhenNoOtnMuxAttached() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
- tapiFactory.convertRoadmNode(roadmA, openroadmNet);
+ ConvertORTopoToTapiFullTopo tapiFullFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ tapiFullFactory.convertRoadmNode(roadmA, openroadmNet);
- assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1");
- assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be empty");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList());
+ assertEquals(1, tapiFullFactory.getTapiNodes().size(), "Node list size should be 1");
+ assertEquals(0, tapiFullFactory.getTapiLinks().size(), "Link list size should be empty");
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
+ = tapiFullFactory.getTapiNodes().values().stream().collect(Collectors.toList());
Uuid roadmNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkOtsiNode(tapiNodes.get(0), roadmNodeUuid, "roadm", "ROADM-A1");
+ checkOtsiNode(tapiNodes.get(getNodeRank("ROADM-A1", tapiNodes)), roadmNodeUuid, "roadm", "ROADM-A1");
}
@Test
void convertNodeForRoadmWhenRoadmNeighborAttached() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
- tapiFactory.convertRoadmNode(roadmA, openroadmNet);
- tapiFactory.convertRoadmNode(roadmC, openroadmNet);
+ ConvertORTopoToTapiFullTopo tapiFullFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ tapiFullFactory.convertRoadmNode(roadmA, openroadmNet);
+ tapiFullFactory.convertRoadmNode(roadmC, openroadmNet);
List<Link> rdmTordmLinkList = ortopoLinks.values().stream()
.filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.ROADMTOROADM))
.collect(Collectors.toList());
- tapiFactory.convertRdmToRdmLinks(rdmTordmLinkList);
-
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1");
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList());
+ tapiFullFactory.convertRdmToRdmLinks(rdmTordmLinkList);
+
+ assertEquals(2, tapiFullFactory.getTapiNodes().size(), "Node list size should be 2");
+ assertEquals(1, tapiFullFactory.getTapiLinks().size(), "Link list size should be 1");
+
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
+ = tapiFullFactory.getTapiNodes().values().stream().collect(Collectors.toList());
+ int myInt = 0;
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node : tapiNodes) {
+ if (node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && !node.getLayerProtocolName().contains(LayerProtocolName.DSR)) {
+ LOG.info("LOOP ROADM node found at rank {}, with Name {} and Uuid {}",
+ myInt, node.getName().toString(), node.getUuid());
+ }
+ myInt++;
+ }
Uuid roadmaNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkOtsiNode(tapiNodes.get(1), roadmaNodeUuid, "roadm", "ROADM-A1");
+ LOG.info("ROADM node found at rank {} from getrank", getNodeRank("ROADM-A1", tapiNodes));
+ checkOtsiNode(tapiNodes.get(getNodeRank("ROADM-A1", tapiNodes)), roadmaNodeUuid, "roadm", "ROADM-A1");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link> links
- = tapiFactory.getTapiLinks().values().stream()
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> links
+ = tapiFullFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-A1+PHOTONIC_MEDIA".getBytes(Charset.forName("UTF-8")))
.toString());
Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-C1+PHOTONIC_MEDIA".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX"
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-A1+PHOTONIC_MEDIA_OTS+DEG2-TTP-TXRX"
.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRX")
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-C1+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid linkUuid =
new Uuid(UUID.nameUUIDFromBytes(
- "ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX"
+ "ROADM-C1+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA_OTS+DEG2-TTP-TXRX"
.getBytes(Charset.forName("UTF-8"))).toString());
checkOmsLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX");
+ "ROADM-C1+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA_OTS+DEG2-TTP-TXRX");
}
@Test
void convertNodeForRoadmWhenOtnMuxAttached() {
- ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORTopoToTapiFullTopo tapiFullFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxA, networkPortListA);
- tapiFactory.convertRoadmNode(roadmA, openroadmNet);
+ tapiFullFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiFullFactory.convertRoadmNode(roadmA, openroadmNet);
List<Link> xponderOutLinkList = ortopoLinks.values().stream()
.filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.XPONDEROUTPUT))
.filter(lk1 -> ((lk1.getSource().getSourceNode().equals(otnMuxA.getNodeId())
|| lk1.getDestination().getDestNode().getValue().contains(roadmA.getNodeId().getValue()))))
.collect(Collectors.toList());
xponderInLinkList.addAll(xponderOutLinkList);
- tapiFactory.convertXpdrToRdmLinks(xponderInLinkList);
- assertEquals(3, tapiFactory.getTapiNodes().size(), "Node list size should be 3");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream()
+ tapiFullFactory.convertXpdrToRdmLinks(xponderInLinkList);
+ assertEquals(2, tapiFullFactory.getTapiNodes().size(),
+ "Node list size should be 2 (XPDR, DSR-ODU merged; ROADM)");
+ assertEquals(1, tapiFullFactory.getTapiLinks().size(),
+ "Link list size should be 1 : no more transitional link");
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeMap =
+ tapiFactory.getTapiNodes();
+ nodeMap.putAll(tapiFullFactory.getTapiNodes());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
+ = nodeMap.values().stream()
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
Uuid roadmNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkOtsiNode(tapiNodes.get(1), roadmNodeUuid, "roadm", "ROADM-A1");
+ checkOtsiNode(tapiNodes.get(getNodeRank("ROADM-A1", tapiNodes)), roadmNodeUuid, "roadm", "ROADM-A1");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link> links
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-A1+PHOTONIC_MEDIA".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1"
+ LOG.info("ROADM-A1+PHOTONIC_MEDIA UUID is {}", node2Uuid);
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRX")
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-A1+PHOTONIC_MEDIA_OTS+SRG1-PP2-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid linkUuid =
new Uuid(UUID.nameUUIDFromBytes(
- "ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1"
+ "ROADM-A1+PHOTONIC_MEDIA_OTS+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
- checkXpdrRdmLink(links.get(1), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1");
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> links
+ = tapiFullFactory.getTapiLinks().values().stream()
+ .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
+ .collect(Collectors.toList());
+ checkXpdrRdmLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
+ "ROADM-A1+PHOTONIC_MEDIA_OTS+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1");
}
- private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
- Uuid nodeUuid, String dsrNodeType, String nodeId) {
- assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid");
- assertEquals(nodeId + "+DSR", node.getName().get(new NameKey("dsr/odu node name")).getValue(),
+ private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node,
+ Uuid node9Uuid, String dsrNodeType, String nodeId) {
+ assertEquals(node9Uuid, node.getUuid(), "incorrect node uuid");
+ assertEquals(nodeId + "+XPONDER", node.getName().get(new NameKey("dsr/odu node name")).getValue(),
"incorrect node name");
assertEquals(AdministrativeState.UNLOCKED, node.getAdministrativeState(),
"administrative state should be UNLOCKED");
assertEquals(OperationalState.ENABLED, node.getOperationalState(), "operational state should be ENABLED");
assertThat("one value-name should be 'dsr/odu node name'",
new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("dsr/odu node name")));
- assertEquals(2, node.getLayerProtocolName().size(), "dsr node should manage 2 protocol layers : dsr and odu");
+ assertEquals(4, node.getLayerProtocolName().size(), "dsr node should manage 4 protocol layers : dsr and odu"
+ + " DIGITALOTN, PHOTONICMEDIA");
assertThat("dsr node should manage 2 protocol layers : dsr and odu",
node.getLayerProtocolName(), hasItems(LayerProtocolName.DSR, LayerProtocolName.ODU));
List<OwnedNodeEdgePoint> inepsN = node.nonnullOwnedNodeEdgePoint().values().stream()
List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForSwitchDSR(nrgList, client4NepUuid, enetworkNepUuid, nodeUuid);
+// keep trace of the previous test performed before the structure of the NRG was modified
+// checkNodeRuleGroupForSwitchDSR(nrgList, client4NepUuid, enetworkNepUuid, node9Uuid);
+ checkNodeRuleGroupForSwitchDSR(nrgList, client4NepUuid, inetworkNepUuid, node9Uuid);
break;
case "mux":
nepsC = node.nonnullOwnedNodeEdgePoint().values().stream()
checkNepClient10G(nep3, client3NepUuid, nodeId + "+DSR+XPDR1-CLIENT3", "NodeEdgePoint_C");
OwnedNodeEdgePoint enep4 = enepsN.get(3);
OwnedNodeEdgePoint inep4 = inepsN.get(0);
- Uuid enetworkNepUuid2 = new Uuid(
+ Uuid eclientNepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+eODU+XPDR1-CLIENT3").getBytes(Charset.forName("UTF-8")))
.toString());
Uuid inetworkNepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepeODU4(enep4, enetworkNepUuid2, nodeId + "+eODU+XPDR1-CLIENT3", "eNodeEdgePoint_N", false);
+ checkNepeODU4(enep4, eclientNepUuid2, nodeId + "+eODU+XPDR1-CLIENT3", "eNodeEdgePoint_N", false);
checkNepNetworkODU4(inep4, inetworkNepUuid2, nodeId + "+iODU+XPDR1-NETWORK1", "iNodeEdgePoint_N",
true);
List<NodeRuleGroup> nrgList2 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForMuxDSR(nrgList2, client3NepUuid, enetworkNepUuid2, nodeUuid);
+// keep trace of the previous test performed before the structure of the NRG was modified
+// checkNodeRuleGroupForMuxDSR(nrgList2, client3NepUuid, eclientNepUuid2, node9Uuid);
+ checkNodeRuleGroupForMuxDSR(nrgList2, client3NepUuid, inetworkNepUuid2, node9Uuid);
break;
case "tpdr":
nepsC = node.nonnullOwnedNodeEdgePoint().values().stream()
List<NodeRuleGroup> nrgList3 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForTpdrDSR(nrgList3, client1NepUuid, enetworkNepUuid3, nodeUuid);
+// keep trace of the previous test performed before the structure of the NRG was modified
+// checkNodeRuleGroupForTpdrDSR(nrgList3, client1NepUuid, enetworkNepUuid3, node9Uuid);
+ checkNodeRuleGroupForTpdrDSR(nrgList3, client1NepUuid, inetworkNepUuid3, node9Uuid);
break;
default:
fail();
}
private void checkOtsiNode(
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node,
Uuid nodeUuid, String otsiNodeType, String nodeId) {
+ if (!node.getUuid().equals(nodeUuid)) {
+ LOG.info("ERRORUUID on Node.getNodeId {}, NodeId {}", node.getName().toString(), nodeId);
+ LOG.info("ERRORUUID TapiUuid {}, transmitted Node Uuid {}", node.getUuid(), nodeUuid);
+ }
assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid");
List<OwnedNodeEdgePoint> nepsI = null;
List<OwnedNodeEdgePoint> nepsE = null;
List<OwnedNodeEdgePoint> nepsP = null;
- List<OwnedNodeEdgePoint> nepsMc = null;
- List<OwnedNodeEdgePoint> nepsOtsimc = null;
+ List<OwnedNodeEdgePoint> nepsOMS = null;
+ List<OwnedNodeEdgePoint> nepsOTS = null;
List<OwnedNodeEdgePoint> nepsPhot = null;
if (!otsiNodeType.equals("roadm")) {
- assertEquals(nodeId + "+OTSi", node.getName().get(new NameKey("otsi node name")).getValue(),
+ assertEquals(nodeId + "+XPONDER", node.getName().get(new NameKey("dsr/odu node name")).getValue(),
"incorrect node name");
assertThat("one value-name should be 'dsr/odu node name'",
- new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("otsi node name")));
+ new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("dsr/odu node name")));
nepsI = node.nonnullOwnedNodeEdgePoint().values().stream()
.filter(n -> n.getName().containsKey(new NameKey("iNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
"incorrect node name");
assertThat("one value-name should be 'dsr/odu node name'",
new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("roadm node name")));
- nepsMc = node.nonnullOwnedNodeEdgePoint().values().stream()
- .filter(n -> n.getName().containsKey(new NameKey("MEDIA_CHANNELNodeEdgePoint")))
+ nepsOMS = node.nonnullOwnedNodeEdgePoint().values().stream()
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OMSNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
.collect(Collectors.toList());
- nepsOtsimc = node.nonnullOwnedNodeEdgePoint().values().stream()
- .filter(n -> n.getName().containsKey(new NameKey("OTSi_MEDIA_CHANNELNodeEdgePoint")))
+ nepsOTS = node.nonnullOwnedNodeEdgePoint().values().stream()
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OTSNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
.collect(Collectors.toList());
nepsPhot = node.nonnullOwnedNodeEdgePoint().values().stream()
- .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIANodeEdgePoint")))
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OMSNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
.collect(Collectors.toList());
+ nepsPhot.addAll(node.nonnullOwnedNodeEdgePoint().values().stream()
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OTSNodeEdgePoint")))
+ .sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
+ .collect(Collectors.toList()));
}
assertEquals(AdministrativeState.UNLOCKED, node.getAdministrativeState(),
"administrative state should be UNLOCKED");
checkNepOtsiNode(nep1, inepUuid, nodeId + "+iOTSi+XPDR2-NETWORK2", "iNodeEdgePoint", true);
OwnedNodeEdgePoint nep2 = nepsE.get(0);
Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+XPDR2-NETWORK2")
+ .getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepOtsiNode(nep2, enepUuid, nodeId + "+eOTSi+XPDR2-NETWORK2", "eNodeEdgePoint", false);
+ checkNepOtsiNode(nep2, enepUuid, nodeId + "+PHOTONIC_MEDIA_OTS+XPDR2-NETWORK2",
+ "eNodeEdgePoint", false);
OwnedNodeEdgePoint photNep = nepsP.get(1);
Uuid pnepUuid = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA+XPDR2-NETWORK2")
assertEquals(1, nepsP.size(), "Mux-OTSi node should have 1 photNEPs");
OwnedNodeEdgePoint nep3 = nepsE.get(0);
Uuid enepUuid2 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
+ .getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepOtsiNode(nep3, enepUuid2, nodeId + "+eOTSi+XPDR1-NETWORK1", "eNodeEdgePoint", false);
+ checkNepOtsiNode(nep3, enepUuid2, nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1",
+ "eNodeEdgePoint", false);
OwnedNodeEdgePoint nep4 = nepsI.get(0);
Uuid inepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
assertEquals(2, nepsP.size(), "Tpdr-OTSi node should have 2 photNEPs");
OwnedNodeEdgePoint nep5 = nepsE.get(0);
Uuid enepUuid3 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
+ .getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepOtsiNode(nep5, enepUuid3, nodeId + "+eOTSi+XPDR1-NETWORK1", "eNodeEdgePoint", false);
+ checkNepOtsiNode(nep5, enepUuid3, nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1",
+ "eNodeEdgePoint", false);
OwnedNodeEdgePoint nep6 = nepsI.get(0);
Uuid inepUuid3 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
checkNodeRuleGroupForTpdrOTSi(nrgList3, enepUuid3, inepUuid3, nodeUuid);
break;
case "roadm":
- assertEquals(10, nepsMc.size(), "Roadm node should have 10 MC NEPs");
- assertEquals(10, nepsOtsimc.size(), "Roadm node should have 10 OTSiMC NEPs");
- assertEquals(10, nepsPhot.size(), "Roadm node should have 10 PHOT_MEDIA NEPs");
+// Keep trace of MC NEP test to be restored after the new policy for creating NEP is applied
+// assertEquals(0, nepsMc.size(), "MC NEP no more configured, Roadm node should have 0 MC NEPs");
+// assertEquals(0, nepsOtsimc.size(), "Roadm node should have 10 OTSiMC NEPs");
+ assertEquals(12, nepsPhot.size(), "Roadm node should have 12 PHOT_MEDIA NEPs (2x4 OTS +2x(OTS+OMS)");
// For Degree node
- OwnedNodeEdgePoint nep7 = nepsMc.get(6);
+ OwnedNodeEdgePoint nep7 = nepsOMS.get(getRank("DEG1-TTP", nepsOMS));
Uuid mcnepUuid3 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+MEDIA_CHANNEL+DEG1-TTP-TXRX").getBytes(Charset.forName("UTF-8")))
- .toString());
- checkNepOtsiRdmNode(nep7, mcnepUuid3, nodeId + "+MEDIA_CHANNEL+DEG1-TTP-TXRX",
- "MEDIA_CHANNELNodeEdgePoint", false);
- OwnedNodeEdgePoint nep8 = nepsOtsimc.get(0);
- Uuid otmcnepUuid3 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+OTSi_MEDIA_CHANNEL+DEG1-TTP-TXRX")
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX").getBytes(Charset
+ .forName("UTF-8"))).toString());
+ checkNepOtsiRdmNode(nep7, mcnepUuid3, nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX",
+ "PHOTONIC_MEDIA_OMSNodeEdgePoint", false);
+ OwnedNodeEdgePoint nep8 = nepsOTS.get(getRank("DEG1-TTP", nepsOTS));
+ Uuid otmcnepUuid3 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(nep8, otmcnepUuid3, nodeId + "+OTSi_MEDIA_CHANNEL+DEG1-TTP-TXRX",
- "OTSi_MEDIA_CHANNELNodeEdgePoint", false);
- OwnedNodeEdgePoint photNep3 = nepsPhot.get(3);
- Uuid pnep3Uuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA+DEG1-TTP-TXRX")
+ checkNepOtsiRdmNode(nep8, otmcnepUuid3, nodeId + "+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRX",
+ "PHOTONIC_MEDIA_OTSNodeEdgePoint", false);
+ OwnedNodeEdgePoint omsNep3 = nepsOMS.get(getRank("DEG1-TTP", nepsOMS));
+ Uuid omsNep3Uuid = new Uuid(
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(photNep3, pnep3Uuid, nodeId + "+PHOTONIC_MEDIA+DEG1-TTP-TXRX",
- "PHOTONIC_MEDIANodeEdgePoint", false);
+ checkNepOtsiRdmNode(omsNep3, omsNep3Uuid, nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX",
+ "PHOTONIC_MEDIA_OMSNodeEdgePoint", false);
// For srg node
- OwnedNodeEdgePoint nep9 = nepsMc.get(0);
- Uuid mcnepUuid4 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+MEDIA_CHANNEL+SRG1-PP1-TXRX")
- .getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(nep9, mcnepUuid4, nodeId + "+MEDIA_CHANNEL+SRG1-PP1-TXRX",
- "MEDIA_CHANNELNodeEdgePoint", true);
- OwnedNodeEdgePoint nep10 = nepsOtsimc.get(9);
- Uuid otmcnepUuid4 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+OTSi_MEDIA_CHANNEL+SRG1-PP1-TXRX")
+ OwnedNodeEdgePoint nep10 = nepsOTS.get(getRank("SRG1-PP1", nepsOTS));
+ Uuid otsnepUuid4 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP1-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(nep10, otmcnepUuid4, nodeId + "+OTSi_MEDIA_CHANNEL+SRG1-PP1-TXRX",
- "OTSi_MEDIA_CHANNELNodeEdgePoint", false);
- OwnedNodeEdgePoint photNep4 = nepsPhot.get(4);
- Uuid pnep4Uuid = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA+SRG1-PP1-TXRX")
+ checkNepOtsiRdmNode(nep10, otsnepUuid4, nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP1-TXRX",
+ "PHOTONIC_MEDIA_OTSNodeEdgePoint", false);
+ OwnedNodeEdgePoint otsNep4 = nepsOTS.get(getRank("SRG1-PP3", nepsOTS));
+ Uuid otsNep4Uuid = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP3-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(photNep4, pnep4Uuid, nodeId + "+PHOTONIC_MEDIA+SRG1-PP1-TXRX",
- "PHOTONIC_MEDIANodeEdgePoint", false);
+ checkNepOtsiRdmNode(otsNep4, otsNep4Uuid, nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP3-TXRX",
+ "PHOTONIC_MEDIA_OTSNodeEdgePoint", false);
List<NodeRuleGroup> nrgList4 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForRdm(nrgList4, 30);
+ checkNodeRuleGroupForRdm(nrgList4, 12);
break;
default:
fail();
assertEquals(portName, name.getValue(), "value of client nep should be '" + portName + "'");
assertEquals(nepName, name.getValueName(),
"value-name of client nep for '" + portName + "' should be '" + nepName + "'");
- assertEquals(3, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 3 kind of cep");
+ LOG.info("checkNEPClient10G-NEP {} has following supported CEP {}", nepName, nep
+ .getSupportedCepLayerProtocolQualifierInstances().toString());
+ assertEquals(3, nep.getSupportedCepLayerProtocolQualifierInstances()
+ .size(), "Client nep should support 3 kind of cep");
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ List<SupportedCepLayerProtocolQualifierInstances> lsclpqi = nep
+ .getSupportedCepLayerProtocolQualifierInstances();
+ for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(3, lpql.size(), "Client nep should support 3 kind of cep");
assertThat("client nep should support 3 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(ODUTYPEODU2.VALUE, ODUTYPEODU2E.VALUE, DIGITALSIGNALTYPE10GigELAN.VALUE));
+ lpql, hasItems(ODUTYPEODU2.VALUE, ODUTYPEODU2E.VALUE, DIGITALSIGNALTYPE10GigELAN.VALUE));
+
assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR protocol type");
checkCommonPartOfNep(nep, false);
}
assertEquals(nepName, name.getValueName(),
"value-name of eODU nep for '" + portName + "' should be '" + nepName + "'");
// TODO: depending on the type of node there is one type or another
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ List<SupportedCepLayerProtocolQualifierInstances> lsclpqi = nep
+ .getSupportedCepLayerProtocolQualifierInstances();
+ for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
assertThat("eODU nep should support 1, 2 or 3 kind of cep, depending on client port",
- nep.getSupportedCepLayerProtocolQualifier().size(), anyOf(is(1), is(2), is(3)));
+ lpql.size(), anyOf(is(1), is(2), is(3)));
assertTrue(
- nep.getSupportedCepLayerProtocolQualifier().stream().anyMatch(splc -> splc.equals(ODUTYPEODU0.VALUE)
+ lpql.stream().anyMatch(splc -> splc.equals(ODUTYPEODU0.VALUE)
|| splc.equals(ODUTYPEODU2.VALUE) || splc.equals(ODUTYPEODU2E.VALUE)
|| splc.equals(ODUTYPEODU4.VALUE)),
"eODU nep should support 1 kind of cep");
assertEquals(portName, name.getValue(), "value of network nep should be '" + portName + "'");
assertEquals(nepName, name.getValueName(),
"value-name of network nep for '" + portName + "' should be '" + nepName + "'");
- assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), "Network nep should support 1 kind of cep");
- assertThat("network nep should support 1 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItem(ODUTYPEODU4.VALUE));
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ List<SupportedCepLayerProtocolQualifierInstances> lsclpqi = nep
+ .getSupportedCepLayerProtocolQualifierInstances();
+ for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(1, lpql.size(), "Network nep should support 1 kind of cep");
+ assertThat("network nep should support 1 kind of cep", lpql, hasItem(ODUTYPEODU4.VALUE));
assertEquals(LayerProtocolName.ODU, nep.getLayerProtocolName(), "network nep should be of ODU protocol type");
checkCommonPartOfNep(nep, withSip);
}
private void checkNodeRuleGroupForTpdrDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
Uuid nodeUuid) {
- assertEquals(2, nrgList.size(), "transponder DSR should contain 2 node rule group");
+ assertEquals(4, nrgList.size(), "transponder DSR should contain 4 node rule group (DSR-I_ODU/I-ODU-E_ODU)");
for (NodeRuleGroup nodeRuleGroup : nrgList) {
assertEquals(2, nodeRuleGroup.getNodeEdgePoint().size(),
"each node-rule-group should contain 2 NEP for transponder DSR");
}
- List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).nonnullNodeEdgePoint().values());
+ Integer indNrg = nrgContainsClientAndNetwork(nrgList, clientNepUuid, networkNepUuid);
+ assertNotNull("One node-rule-group shall contains client and network Neps", indNrg);
+ List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(indNrg).nonnullNodeEdgePoint().values());
assertThat("node-rule-group nb 1 should be between nep-client1 and nep-network1",
nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
List<Rule> rule = new ArrayList<>(nrgList.get(1).nonnullRule().values());
assertEquals(1, rule.size(), "node-rule-group nb 1 should contain a single rule");
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForMuxDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
Uuid nodeUuid) {
- assertEquals(4, nrgList.size(), "muxponder DSR should contain 4 node rule group");
- for (NodeRuleGroup nodeRuleGroup : nrgList) {
- assertEquals(2, nodeRuleGroup.getNodeEdgePoint().size(),
- "each node-rule-group should contain 2 NEP for muxponder DSR");
- }
- List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(1).nonnullNodeEdgePoint().values());
+ assertEquals(8, nrgList.size(), "muxponder DSR should contain 8 node rule group (DSR-I_ODU/I-ODU-E_ODU)");
+ Integer indNrg = nrgContainsClientAndNetwork(nrgList, clientNepUuid, networkNepUuid);
+ assertNotNull("One node-rule-group shall contains client and network Neps", indNrg);
+ List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(indNrg).nonnullNodeEdgePoint().values());
assertThat("node-rule-group nb 2 should be between nep-client4 and nep-network1",
nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
List<Rule> rule = new ArrayList<>(nrgList.get(1).nonnullRule().values());
assertEquals(1, rule.size(), "node-rule-group nb 2 should contain a single rule");
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForSwitchDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
Uuid nodeUuid) {
- assertEquals(1, nrgList.size(), "Switch-DSR should contain a single node rule group");
- assertEquals(8, nrgList.get(0).getNodeEdgePoint().size(), "Switch-DSR node-rule-group should contain 8 NEP");
+ assertEquals(2, nrgList.size(), "Switch-DSR should contain 2 node rule group (DSR-I_ODU/I-ODU-E_ODU)");
+ Integer indNrg = nrgContainsClientAndNetwork(nrgList, clientNepUuid, networkNepUuid);
+ assertNotNull("One node-rule-group shall contains client and network Neps", indNrg);
+ assertEquals(8, nrgList.get(indNrg).getNodeEdgePoint().size(), "Switch-DSR nrg should contain 8 NEP");
List<NodeEdgePoint> nrg = nrgList.get(0).nonnullNodeEdgePoint().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getNodeEdgePointUuid().getValue()
.compareTo(nrg2.getNodeEdgePointUuid().getValue()))
.collect(Collectors.toList());
+ Integer xxxxx = 0;
+ for (NodeEdgePoint nep : nrg) {
+ LOG.info("nep number {} UUID is {} ", xxxxx, nep.getNodeEdgePointUuid());
+ xxxxx++;
+ }
+ LOG.info("nep SPDR-SA1-XPDR2+iODU+XPDR2-NETWORK1 UUID is {} ", UUID.nameUUIDFromBytes(
+ ("SPDR-SA1-XPDR2" + "+iODU+XPDR2-NETWORK1").getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("nep SPDR-SA1-XPDR2+DSR+XPDR2-CLIENT4 UUID is {} ", UUID.nameUUIDFromBytes(
+ ("SPDR-SA1-XPDR2" + "+DSR+XPDR2-CLIENT4").getBytes(Charset.forName("UTF-8"))).toString());
assertEquals(networkNepUuid, nrg.get(6).getNodeEdgePointUuid(),
"in the sorted node-rule-group, nep number 7 should be XPDR2-NETWORK1");
- assertEquals(clientNepUuid, nrg.get(3).getNodeEdgePointUuid(),
+ assertEquals(clientNepUuid, nrg.get(5).getNodeEdgePointUuid(),
"in the sorted node-rule-group, nep number 4 should be XPDR2-CLIENT4");
assertEquals(nodeUuid, nrg.get(4).getNodeUuid(),
"any item of the node-rule-group should have the same nodeUuid");
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForRdm(List<NodeRuleGroup> nrgList, int nbNeps) {
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForTpdrOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForMuxOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForSwitchOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
List<Rule> ruleList0 = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList0.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList0.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList0.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList0.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNepClient100GSwitch(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
"value of client nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(),
"value-name of client nep for '" + portName + "' should be '" + nepName + "'");
- assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 2 kind of cep");
- assertThat("client nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ List<SupportedCepLayerProtocolQualifierInstances> lsclpqi = nep
+ .getSupportedCepLayerProtocolQualifierInstances();
+ for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ LOG.info("checkNEPClient100G-NEP {} has following supported CEP {}", nepName, nep
+ .getSupportedCepLayerProtocolQualifierInstances().toString());
+ assertEquals(2, lpql.size(), "Client nep should support 2 kind of cep");
+ assertThat("client nep should support 2 kind of cep", lpql,
hasItems(ODUTYPEODU4.VALUE, DIGITALSIGNALTYPE100GigE.VALUE));
assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR protocol type");
checkCommonPartOfNep(nep, false);
assertEquals(portName, nameList.get(0).getValue(), "value of client nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(),
"value-name of client nep for '" + portName + "' should be 100G-tpdr'");
- assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 1 kind of cep");
- assertThat("client nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(DIGITALSIGNALTYPE100GigE.VALUE));
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ List<SupportedCepLayerProtocolQualifierInstances> lsclpqi = nep
+ .getSupportedCepLayerProtocolQualifierInstances();
+ for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(1, lpql.size(), "Client nep should support 1 kind of cep");
+ assertThat("client nep should support 2 kind of cep", lpql, hasItems(DIGITALSIGNALTYPE100GigE.VALUE));
assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR protocol type");
checkCommonPartOfNep(nep, false);
}
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
assertEquals(portName, nameList.get(0).getValue(), "value of OTSi nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(), "value-name of OTSi nep should be '" + nepName + "'");
- assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(),
- "OTSi nep should support 2 kind of cep");
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ List<SupportedCepLayerProtocolQualifierInstances> lsclpqi = nep
+ .getSupportedCepLayerProtocolQualifierInstances();
+ for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(2, lpql.size(), "OTSi nep should support 2 kind of cep");
assertThat("OTSi nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE, PHOTONICLAYERQUALIFIEROTSi.VALUE));
+ lpql, hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE, PHOTONICLAYERQUALIFIEROTSi.VALUE));
assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
"OTSi nep should be of PHOTONIC_MEDIA protocol type");
checkCommonPartOfNep(nep, withSip);
private void checkNepOtsiRdmNode(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
boolean withSip) {
+ if (!nep.getUuid().equals(nepUuid)) {
+ LOG.info("ERRORUUIDNEP on Nep {}, expected {}", nep.getName().toString(), portName);
+ }
assertEquals(nepUuid, nep.getUuid(), "bad uuid for " + portName);
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
assertEquals(portName, nameList.get(0).getValue(),
"value of OTSi nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(),
"value-name of OTSi nep should be '" + nepName + "'");
- assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(),
- "OTSi nep of RDM infra node should support only 1 kind of cep");
- assertThat("OTSi nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE));
- assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
- "OTSi nep should be of PHOTONIC_MEDIA protocol type");
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ List<SupportedCepLayerProtocolQualifierInstances> lsclpqi = nep
+ .getSupportedCepLayerProtocolQualifierInstances();
+ for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ if (nepName.contains("OMS")) {
+ assertEquals(1, lpql.size(), "OTSi nep of RDM infra node should support only 1 kind of cep");
+ assertThat("OTSi nep should support 1 kind of cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE));
+ assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
+ "OTSi nep should be of PHOTONIC_MEDIA protocol type");
+ } else if (nepName.contains("OTS")) {
+ assertEquals(1, lpql.size(), "OTSi nep of RDM infra node should support only 1 kind of cep");
+ assertThat("OTSi nep should support 1 kind of cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROTS.VALUE));
+ assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
+ "OTSi nep should be of PHOTONIC_MEDIA protocol type");
+ }
checkCommonPartOfNep(nep, withSip);
}
private void checkCommonPartOfNep(OwnedNodeEdgePoint nep, boolean withSip) {
- assertEquals(PortDirection.BIDIRECTIONAL, nep.getLinkPortDirection(),
- "link port direction should be DIRECTIONAL");
+ assertEquals(Direction.BIDIRECTIONAL, nep.getDirection(), "link port direction should be DIRECTIONAL");
assertEquals(AdministrativeState.UNLOCKED, nep.getAdministrativeState(),
"administrative state should be UNLOCKED");
- assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(),
- "termination state should be TERMINATED BIDIRECTIONAL");
+// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4
+// assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(),
+// "termination state should be TERMINATED BIDIRECTIONAL");
assertEquals(LifecycleState.INSTALLED, nep.getLifecycleState(), "life-cycle state should be INSTALLED");
if (withSip) {
assertEquals(1, nep.getMappedServiceInterfacePoint().size(), "Given nep should support 1 SIP");
}
- assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(),
- "termination direction should be BIDIRECTIONAL");
+// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4
+// assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(),
+// "termination direction should be BIDIRECTIONAL");
assertEquals(OperationalState.ENABLED, nep.getOperationalState(),
"operational state of client nep should be ENABLED");
assertEquals(PortRole.SYMMETRIC, nep.getLinkPortRole(),
"link-port-role of client nep should be SYMMETRIC");
}
- private void checkTransitionalLink(
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link, Uuid node1Uuid,
- Uuid node2Uuid, String tp1, String tp2, String ietfNodeId) {
- Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((tp1 + "to" + tp2).getBytes(Charset.forName("UTF-8")))
- .toString());
- assertEquals(linkUuid, link.getUuid(), "bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2);
- assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(),
- "Available capacity unit should be GBPS");
- assertEquals(Uint64.valueOf(100), link.getAvailableCapacity().getTotalSize().getValue(),
- "Available capacity -total size value should be 100");
- assertEquals(2, link.getTransitionedLayerProtocolName().size(),
- "transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA");
- assertThat("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
- link.getTransitionedLayerProtocolName(),
- hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()));
- assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),
- "transitional link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
- assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertEquals(topologyUuid, nodeEdgePointList.get(1).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(0).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(tp1.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nep2Uuid = new Uuid(UUID.nameUUIDFromBytes(tp2.getBytes(Charset.forName("UTF-8"))).toString());
- assertThat("transitional links should terminate on " + tp1 + " and " + tp2 + " neps",
- nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- }
-
- private void checkOmsLink(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link,
+ private void checkOmsLink(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link link,
Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid, String linkName) {
assertEquals(linkName, link.getName().get(new NameKey("OMS link name")).getValue(), "bad name for the link");
assertEquals(linkUuid, link.getUuid(), "bad uuid for link");
link.getLayerProtocolName().stream().findFirst().orElseThrow().getName(),
"oms link should be between 2 nodes of protocol layers PHOTONIC_MEDIA");
assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),"otn tapi link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
.link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
assertEquals(2 , nodeEdgePointList.size(), "oms link should be between 2 neps");
assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
}
private void checkXpdrRdmLink(
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link, Uuid node1Uuid,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link link, Uuid node1Uuid,
Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid, String linkName) {
assertEquals(linkName, link.getName().get(new NameKey("XPDR-RDM link name")).getValue(),
"bad name for the link");
"oms link should be between 2 nodes of protocol layers PHOTONIC_MEDIA");
assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),
"otn tapi link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
.link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
assertEquals(2 , nodeEdgePointList.size(), "oms link should be between 2 neps");
assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
tpdr1Bldr.setTerminationPoint(tps);
return new NodeBuilder(initialNode).addAugmentation(tpdr1Bldr.build()).build();
}
-}
\ No newline at end of file
+
+ private int getRank(String searchedChar, List<OwnedNodeEdgePoint> onepList) {
+ int foundAtRank = 0;
+ int rank = 0;
+ for (OwnedNodeEdgePoint onep: onepList) {
+ for (Map.Entry<NameKey, Name> entry: onep.getName().entrySet()) {
+ if (entry.getValue().getValue().contains(searchedChar)) {
+ foundAtRank = rank;
+ }
+ }
+ rank++;
+ }
+ LOG.info("searched Char {} found at rank {}", searchedChar, foundAtRank);
+ return foundAtRank;
+ }
+
+ private int getNodeRank(String searchedChar,
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeList) {
+ int foundAtRank = 0;
+ int rank = 0;
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node: nodeList) {
+ for (Map.Entry<NameKey, Name> entry: node.getName().entrySet()) {
+ if (entry.getValue().getValue().contains(searchedChar)) {
+ foundAtRank = rank;
+ }
+ }
+ rank++;
+ }
+ LOG.info("searched Char {} found at rank {}", searchedChar, foundAtRank);
+ return foundAtRank;
+ }
+
+ private Integer nrgContainsClientAndNetwork(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid) {
+ // 1 NRG should at least contain the NEP of interest in the NEP List
+ Integer indexNrg = 0;
+ for (NodeRuleGroup nrg : nrgList) {
+ Boolean foundClient = false;
+ Boolean foundNetwork = false;
+ for (NodeEdgePoint nep : nrg.nonnullNodeEdgePoint().values()) {
+ foundClient = foundClient || nep.getNodeEdgePointUuid().equals(clientNepUuid);
+ foundNetwork = foundNetwork || nep.getNodeEdgePointUuid().equals(networkNepUuid);
+ }
+ if (foundClient && foundNetwork) {
+ return indexNrg;
+ }
+ indexNrg++;
+ }
+ return null;
+ }
+
+}
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.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LAYERPROTOCOLQUALIFIER;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Decimal64;
import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
public class ConvertORTopoToTapiTopoTest extends AbstractTest {
private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiTopoTest.class);
@BeforeAll
static void setUp() throws InterruptedException, ExecutionException {
- TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
- TapiTopologyDataUtils.OPENROADM_TOPOLOGY_FILE, InstanceIdentifiers.OVERLAY_NETWORK_II);
- TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
- TapiTopologyDataUtils.OTN_TOPOLOGY_FILE, InstanceIdentifiers.OTN_NETWORK_II);
- TopologyDataUtils.writePortmappingFromFileToDatastore(getDataStoreContextUtil(),
+ TopologyDataUtils.writeTopologyFromFileToDatastore(
+ getDataStoreContextUtil(),
+ TapiTopologyDataUtils.OPENROADM_TOPOLOGY_FILE,
+ InstanceIdentifiers.OVERLAY_NETWORK_II);
+ TopologyDataUtils.writeTopologyFromFileToDatastore(
+ getDataStoreContextUtil(),
+ TapiTopologyDataUtils.OTN_TOPOLOGY_FILE,
+ InstanceIdentifiers.OTN_NETWORK_II);
+ TopologyDataUtils.writePortmappingFromFileToDatastore(
+ getDataStoreContextUtil(),
TapiTopologyDataUtils.PORTMAPPING_FILE);
-
- KeyedInstanceIdentifier<Node, NodeKey> muxAIID = InstanceIdentifier.create(Networks.class)
- .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network
- .class, new NetworkKey(new NetworkId("otn-topology")))
- .child(Node.class, new NodeKey(new NodeId("SPDR-SA1-XPDR1")));
FluentFuture<Optional<Node>> muxAFuture = dataBroker.newReadOnlyTransaction()
- .read(LogicalDatastoreType.CONFIGURATION, muxAIID);
- KeyedInstanceIdentifier<Node, NodeKey> muxCIID = InstanceIdentifier.create(Networks.class)
- .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network
- .class, new NetworkKey(new NetworkId("otn-topology")))
- .child(Node.class, new NodeKey(new NodeId("SPDR-SC1-XPDR1")));
- FluentFuture<Optional<Node>> muxCFuture = dataBroker.newReadOnlyTransaction()
- .read(LogicalDatastoreType.CONFIGURATION, muxCIID);
- KeyedInstanceIdentifier<Node, NodeKey> switchIID = InstanceIdentifier.create(Networks.class)
- .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network
- .class, new NetworkKey(new NetworkId("otn-topology")))
- .child(Node.class, new NodeKey(new NodeId("SPDR-SA1-XPDR2")));
- FluentFuture<Optional<Node>> switchFuture = dataBroker.newReadOnlyTransaction()
- .read(LogicalDatastoreType.CONFIGURATION, switchIID);
-
+ .read(LogicalDatastoreType.CONFIGURATION,
+ //muxAIID
+ InstanceIdentifier.create(Networks.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
+ .networks.Network.class,
+ new NetworkKey(new NetworkId("otn-topology")))
+ .child(Node.class, new NodeKey(new NodeId("SPDR-SA1-XPDR1"))));
+ FluentFuture<Optional<Node>> muxCFuture =
+ dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION,
+ //muxCIID
+ InstanceIdentifier.create(Networks.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
+ .networks.Network.class,
+ new NetworkKey(new NetworkId("otn-topology")))
+ .child(Node.class, new NodeKey(new NodeId("SPDR-SC1-XPDR1"))));
+ FluentFuture<Optional<Node>> switchFuture =
+ dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION,
+ //switchIID
+ InstanceIdentifier.create(Networks.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
+ .networks.Network.class,
+ new NetworkKey(new NetworkId("otn-topology")))
+ .child(Node.class, new NodeKey(new NodeId("SPDR-SA1-XPDR2"))));
otnMuxA = muxAFuture.get().orElseThrow();
otnMuxC = muxCFuture.get().orElseThrow();
otnSwitch = switchFuture.get().orElseThrow();
-
- KeyedInstanceIdentifier<Node, NodeKey> tpdrIID = InstanceIdentifier.create(Networks.class)
- .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network
- .class, new NetworkKey(new NetworkId("otn-topology")))
- .child(Node.class, new NodeKey(new NodeId("XPDR-A1-XPDR1")));
- FluentFuture<Optional<Node>> tpdrFuture = dataBroker.newReadOnlyTransaction()
- .read(LogicalDatastoreType.CONFIGURATION, tpdrIID);
+ FluentFuture<Optional<Node>> tpdrFuture =
+ dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION,
+ //tpdrIID
+ InstanceIdentifier.create(Networks.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
+ .networks.Network.class,
+ new NetworkKey(new NetworkId("otn-topology")))
+ .child(Node.class, new NodeKey(new NodeId("XPDR-A1-XPDR1"))));
tpdr100G = tpdrFuture.get().orElseThrow();
-
- InstanceIdentifier<Network1> linksIID = InstanceIdentifier.create(Networks.class)
- .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network
- .class, new NetworkKey(new NetworkId("otn-topology")))
- .augmentation(Network1.class);
FluentFuture<Optional<Network1>> linksFuture = dataBroker.newReadOnlyTransaction()
- .read(LogicalDatastoreType.CONFIGURATION, linksIID);
+ .read(LogicalDatastoreType.CONFIGURATION,
+ //linksIID
+ InstanceIdentifier.create(Networks.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
+ .networks.Network.class,
+ new NetworkKey(new NetworkId("otn-topology")))
+ .augmentation(Network1.class));
otnLinks = linksFuture.get().orElseThrow().getLink();
-
- topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
- Charset.forName("UTF-8"))).toString());
+ topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
networkTransactionService = new NetworkTransactionImpl(getDataBroker());
tapiLink = new TapiLinkImpl(networkTransactionService);
LOG.info("TEST SETUP READY");
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
+ Uuid dsrNodeUuid = new Uuid(
+ UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ var dsrNode = tapiFactory.getTapiNodes()
+ .get(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .topology.NodeKey(dsrNodeUuid));
Uuid networkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
assertNull(nepN.getAdministrativeState(), "Administrative State should not be present");
assertNull(nepN.getOperationalState(), "Operational State should not be present");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid));
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertNull(enep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(enep.getOperationalState(), "Operational State should not be present");
-
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertNull(inep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(inep.getOperationalState(), "Operational State should not be present");
}
@Test
void convertNodeWhenBadStates1() {
- Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", AdminStates.OutOfService,
- State.OutOfService);
+ Node tpdr =
+ changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", AdminStates.OutOfService, State.OutOfService);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
+ Uuid dsrNodeUuid = new Uuid(
+ UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ var dsrNode = tapiFactory.getTapiNodes()
+ .get(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .topology.NodeKey(dsrNodeUuid));
Uuid networkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
assertEquals(AdministrativeState.LOCKED, nepN.getAdministrativeState(),
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, nepN.getOperationalState(), "Operational State should be Disabled");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid));
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
}
@Test
void convertNodeWhenBadStates2() {
- Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", AdminStates.Maintenance,
- State.Degraded);
+ Node tpdr = changeTerminationPointState(tpdr100G, "XPDR1-NETWORK1", AdminStates.Maintenance, State.Degraded);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortList.add(tp.getTpId().getValue());
}
}
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid));
+ Uuid dsrNodeUuid = new Uuid(
+ UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ var dsrNode = tapiFactory.getTapiNodes()
+ .get(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .topology.NodeKey(dsrNodeUuid));
Uuid networkNepUuid = new Uuid(
UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
.toString());
assertEquals(AdministrativeState.LOCKED, nepN.getAdministrativeState(),
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, nepN.getOperationalState(), "Operational State should be Disabled");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid));
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
}
@Test
void convertOtnLinkWhenNoState() {
- HashMap<LinkKey, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link
- link = changeOtnLinkState(otnLinks.get(new LinkKey(
+ HashMap<LinkKey,
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link link =
+ changeOtnLinkState(otnLinks.get(new LinkKey(
new LinkId("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"))), null, null);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortListA.add(tp.getTpId().getValue());
}
}
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(otnMuxA, networkPortListA);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
List<String> networkPortListC = new ArrayList<>();
for (TerminationPoint tp : otnMuxC.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxC, networkPortListC);
- tapiFactory.convertLinks(otnLinksAlt);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiAbsFactory.convertLinks(otnLinksAlt);
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+ List<Link> tapiLinks = tapiAbsFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull(tapiLinks.get(3).getAdministrativeState(), "Administrative State should not be present");
+ assertNull(tapiLinks.get(1).getAdministrativeState(), "Administrative State should not be present");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertNull(tapiLinks.get(3).getOperationalState(), "Operational State should not be present");
+ assertNull(tapiLinks.get(1).getOperationalState(), "Operational State should not be present");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
}
@Test
void convertOtnLinkWhenNoStateOnOppositeLink() {
- HashMap<LinkKey, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link
- link = changeOtnLinkState(otnLinks.get(new LinkKey(
+ HashMap<LinkKey,
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link link =
+ changeOtnLinkState(otnLinks.get(new LinkKey(
new LinkId("ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1"))), null, null);
otnLinksAlt.replace(link.key(), link);
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortListA.add(tp.getTpId().getValue());
}
}
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(otnMuxA, networkPortListA);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
List<String> networkPortListC = new ArrayList<>();
for (TerminationPoint tp : otnMuxC.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxC, networkPortListC);
- tapiFactory.convertLinks(otnLinksAlt);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiAbsFactory.convertLinks(otnLinksAlt);
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+ List<Link> tapiLinks = tapiAbsFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull(tapiLinks.get(3).getAdministrativeState(), "Administrative State should not be present");
+ assertNull(tapiLinks.get(1).getAdministrativeState(), "Administrative State should not be present");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertNull(tapiLinks.get(3).getOperationalState(), "Operational State should not be present");
+ assertNull(tapiLinks.get(1).getOperationalState(), "Operational State should not be present");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
}
@Test
void convertOtnLinkWhenBadState1() {
- HashMap<LinkKey, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link
- link = changeOtnLinkState(otnLinks.get(new LinkKey(
+ HashMap<LinkKey,
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link link =
+ changeOtnLinkState(otnLinks.get(new LinkKey(
new LinkId("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"))),
AdminStates.OutOfService, State.OutOfService);
otnLinksAlt.replace(link.key(), link);
-
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortListA.add(tp.getTpId().getValue());
}
}
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(otnMuxA, networkPortListA);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
List<String> networkPortListC = new ArrayList<>();
for (TerminationPoint tp : otnMuxC.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxC, networkPortListC);
- tapiFactory.convertLinks(otnLinksAlt);
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiAbsFactory.convertLinks(otnLinksAlt);
+ List<Link> tapiLinks = tapiAbsFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState(),
+ LOG.info("TapiLinks are as follow : {}", tapiLinks);
+ assertEquals(AdministrativeState.LOCKED, tapiLinks.get(1).getAdministrativeState(),
"Administrative state should be LOCKED");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertEquals(OperationalState.DISABLED, tapiLinks.get(3).getOperationalState(),
+ assertEquals(OperationalState.DISABLED, tapiLinks.get(1).getOperationalState(),
"Operational state should be DISABLED");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
@Test
void convertOtnLinkWhenBadState2() {
- HashMap<LinkKey, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link
- link = changeOtnLinkState(otnLinks.get(new LinkKey(
+ HashMap<LinkKey,
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link link =
+ changeOtnLinkState(otnLinks.get(new LinkKey(
new LinkId("ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"))),
AdminStates.Maintenance, State.Degraded);
otnLinksAlt.replace(link.key(), link);
-
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortListA.add(tp.getTpId().getValue());
}
}
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(otnMuxA, networkPortListA);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
List<String> networkPortListC = new ArrayList<>();
for (TerminationPoint tp : otnMuxC.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxC, networkPortListC);
- tapiFactory.convertLinks(otnLinksAlt);
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiAbsFactory.convertLinks(otnLinksAlt);
+ List<Link> tapiLinks = tapiAbsFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState(),
+ assertEquals(AdministrativeState.LOCKED, tapiLinks.get(1).getAdministrativeState(),
"Administrative state should be LOCKED");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertEquals(OperationalState.DISABLED, tapiLinks.get(3).getOperationalState(),
+ assertEquals(OperationalState.DISABLED, tapiLinks.get(1).getOperationalState(),
"Operational state should be DISABLED");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
@Test
void convertOtnLinkWhenBadStateOnOppositeLink() {
- HashMap<LinkKey, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link
- link = changeOtnLinkState(otnLinks.get(new LinkKey(
+ HashMap<LinkKey,
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link> otnLinksAlt = new HashMap<>(otnLinks);
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link link =
+ changeOtnLinkState(otnLinks.get(new LinkKey(
new LinkId("ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1"))),
AdminStates.OutOfService, State.OutOfService);
otnLinksAlt.replace(link.key(), link);
-
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortListA.add(tp.getTpId().getValue());
}
}
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(otnMuxA, networkPortListA);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
List<String> networkPortListC = new ArrayList<>();
for (TerminationPoint tp : otnMuxC.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxC, networkPortListC);
- tapiFactory.convertLinks(otnLinksAlt);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiAbsFactory.convertLinks(otnLinksAlt);
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+ List<Link> tapiLinks = tapiAbsFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState(),
+ assertEquals(AdministrativeState.LOCKED, tapiLinks.get(1).getAdministrativeState(),
"Administrative state should be LOCKED");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertEquals(OperationalState.DISABLED, tapiLinks.get(3).getOperationalState(),
+ assertEquals(OperationalState.DISABLED, tapiLinks.get(1).getOperationalState(),
"Operational state should be DISABLED");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
@Test
void convertNodeForTransponder100G() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(tpdr100G, networkPortList);
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream()
- .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
- .collect(Collectors.toList());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes =
+ tapiFactory.getTapiNodes().values().stream()
+ .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
+ .collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 (no more transitional links)");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(tapiNodes.get(1), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1+DSR");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "tpdr", "XPDR-A1-XPDR1+OTSi");
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(1), dsrNodeUuid, otsiNodeUuid,
- "XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1", "XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1", "XPDR-A1-XPDR1");
+ Uuid dsrNodeUuid = new Uuid(
+ UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ checkDsrNode(tapiNodes.get(getNodeRank("SPDR-SA1", tapiNodes)), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1+XPONDER");
}
@Test
void convertNodeForOtnMuxponder() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxA, networkPortList);
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream()
- .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
- .collect(Collectors.toList());
-
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "mux", "SPDR-SA1-XPDR1+DSR");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "mux", "SPDR-SA1-XPDR1+OTSi");
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR1+iODU+XPDR1-NETWORK1", "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1", "SPDR-SA1-XPDR1");
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes =
+ tapiFactory.getTapiNodes().values().stream()
+ .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
+ .collect(Collectors.toList());
+
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR & ODU merged");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0, no more transitional links");
+ Uuid dsrNodeUuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ checkDsrNode(tapiNodes.get(getNodeRank("SPDR-SA1", tapiNodes)), dsrNodeUuid, "mux", "SPDR-SA1-XPDR1+XPONDER");
}
@Test
void convertNodeForOtnSwitch() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortList = new ArrayList<>();
for (TerminationPoint tp : otnSwitch.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnSwitch, networkPortList);
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream()
- .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
- .collect(Collectors.toList());
-
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(4, tapiFactory.getTapiLinks().size(), "Link list size should be 4");
-
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "switch", "SPDR-SA1-XPDR2+DSR");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "switch", "SPDR-SA1-XPDR2+OTSi");
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(2), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR2+iODU+XPDR2-NETWORK4", "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK4", "SPDR-SA1-XPDR2");
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes =
+ tapiFactory.getTapiNodes().values().stream()
+ .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
+ .collect(Collectors.toList());
+
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR/ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
+
+ Uuid dsrNodeUuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ checkDsrNode(tapiNodes.get(getNodeRank("SPDR-SA1", tapiNodes)), dsrNodeUuid, "switch",
+ "SPDR-SA1-XPDR2+XPONDER");
}
@Test
void convertOtnLink() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
networkPortListA.add(tp.getTpId().getValue());
}
}
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(otnMuxA, networkPortListA);
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
List<String> networkPortListC = new ArrayList<>();
for (TerminationPoint tp : otnMuxC.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxC, networkPortListC);
- tapiFactory.convertLinks(otnLinks);
- assertEquals(4, tapiFactory.getTapiLinks().size(), "Link list size should be 4");
-
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid link1Uuid =
- new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid link2Uuid =
- new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
-
- List<Link> links = tapiFactory.getTapiLinks().values().stream()
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
+
+ tapiAbsFactory.convertLinks(otnLinks);
+ assertEquals(2, tapiAbsFactory.getTapiLinks().size(), "Link list size should be 2 : no transitional link");
+
+ Uuid node1Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid node2Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid node3Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid node4Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp1Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1".getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp2Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1".getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp3Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid tp4Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid link1Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid link2Uuid = new Uuid(
+ UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8")))
+ .toString());
+ List<Link> links = tapiAbsFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkOtnLink(links.get(3), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
+ LOG.info("Node3 {}, Node4 = {},", node3Uuid, node4Uuid);
+ checkOtnLink(links.get(1), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
"SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
- checkOtnLink(links.get(2), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
+ checkOtnLink(links.get(0), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
"SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
+ LOG.info("The link we check has name {}", links.get(0).getName());
}
@Test
void convertRoadmInfrastructureWhenNoXponderAttached() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
- tapiFactory.convertRoadmInfrastructure();
-
- assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1");
- assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be empty");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList());
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "infra", "ROADM-infra");
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ tapiAbsFactory.convertRoadmInfrastructure();
+
+ assertEquals(1, tapiAbsFactory.getTapiNodes().size(), "Node list size should be 1");
+ assertEquals(0, tapiAbsFactory.getTapiLinks().size(), "Link list size should be empty");
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes =
+ tapiAbsFactory.getTapiNodes().values().stream().collect(Collectors.toList());
+ Uuid photNodeUuid = new Uuid(
+ UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8"))).toString());
+ checkOtsiNode(tapiNodes.get(0), photNodeUuid, "infra", "ROADM-infra");
}
@Test
void convertRoadmInfrastructureWhenOtnMuxAttached() {
- ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORTopoToTapiTopo tapiAbsFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
+ ConvertORToTapiTopology tapiFactory = new ConvertORToTapiTopology(topologyUuid);
List<String> networkPortListA = new ArrayList<>();
for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
}
}
tapiFactory.convertNode(otnMuxA, networkPortListA);
- tapiFactory.convertRoadmInfrastructure();
-
- assertEquals(3, tapiFactory.getTapiNodes().size(), "Node list size should be 3");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
- = tapiFactory.getTapiNodes().values().stream()
- .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
- .collect(Collectors.toList());
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(2), otsiNodeUuid, "infra", "ROADM-infra");
-
- List<Link> links = tapiFactory.getTapiLinks().values().stream()
+ tapiAbsFactory.setTapiNodes(tapiFactory.getTapiNodes());
+ tapiAbsFactory.convertRoadmInfrastructure();
+ LOG.info("ERRORLINK List of link = {}", tapiAbsFactory.getTapiLinks().toString());
+ assertEquals(2, tapiAbsFactory.getTapiNodes().size(),
+ "Node list size should be 2");
+ assertEquals(1, tapiAbsFactory.getTapiLinks().size(), "Link list size should be 1");
+
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeMap =
+ tapiFactory.getTapiNodes();
+ nodeMap.putAll(tapiAbsFactory.getTapiNodes());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes =
+ nodeMap.values().stream()
+ .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
+ .collect(Collectors.toList());
+ checkOtsiNode(
+ tapiNodes.get(getNodeRank("ROADM", tapiNodes)),
+ //otsiNodeUuid,
+ new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8"))).toString()),
+ "infra", "ROADM-infra");
+ List<Link> links = tapiAbsFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
- .toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("roadm node+nep+1")
- .getBytes(Charset.forName("UTF-8"))).toString());
- Uuid linkUuid =
- new Uuid(UUID.nameUUIDFromBytes(
- "SPDR-SA1-XPDR1+OTSi--SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- checkOmsLink(links.get(1), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "SPDR-SA1-XPDR1+OTSi--SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1");
+ String str1 =
+ "SPDR-SA1-XPDR1+XPONDER--SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1";
+ LOG.info("LinksCheck 0 = {} ", links.get(0).getName());
+ checkOmsLink(links.get(0),
+ //node1Uuid,
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8"))).toString()),
+ //node2Uuid,
+ new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8"))).toString()),
+ //tp1Uuid,
+ new Uuid(
+ UUID.nameUUIDFromBytes(
+ "SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1".getBytes(Charset.forName("UTF-8")))
+ .toString()),
+ //tp2Uuid,
+ new Uuid(UUID.nameUUIDFromBytes(("roadm node+nep+1").getBytes(Charset.forName("UTF-8"))).toString()),
+ //linkUuid,
+ new Uuid(UUID.nameUUIDFromBytes(str1.getBytes(Charset.forName("UTF-8"))).toString()),
+ str1);
}
- private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
- Uuid nodeUuid, String dsrNodeType, String nodeId) {
+ private void checkDsrNode(
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node,
+ Uuid nodeUuid, String dsrNodeType, String nodeId) {
assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid");
assertEquals(nodeId, node.getName().get(new NameKey("dsr/odu node name")).getValue(), "incorrect node name");
assertEquals(AdministrativeState.UNLOCKED, node.getAdministrativeState(),
assertEquals(OperationalState.ENABLED, node.getOperationalState(), "operational state should be ENABLED");
assertThat("one value-name should be 'dsr/odu node name'",
new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("dsr/odu node name")));
- assertEquals(2, node.getLayerProtocolName().size(),
- "dsr node should manage 2 protocol layers : dsr and odu");
- assertThat("dsr node should manage 2 protocol layers : dsr and odu",
- node.getLayerProtocolName(), hasItems(LayerProtocolName.DSR, LayerProtocolName.ODU));
+ assertEquals(4, node.getLayerProtocolName().size(),
+ "dsr node should manage 4 protocol layers : dsr, odu, DIGITALOTN and photonic");
+ assertThat("dsr node should manage 3 protocol layers : dsr, odu and photonic",
+ node.getLayerProtocolName(), hasItems(LayerProtocolName.DSR, LayerProtocolName.ODU,
+ LayerProtocolName.PHOTONICMEDIA));
List<OwnedNodeEdgePoint> nepsN = node.nonnullOwnedNodeEdgePoint().values().stream()
.filter(n -> n.getName().containsKey(new NameKey("iNodeEdgePoint_N")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
}
private void checkOtsiNode(
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
- Uuid nodeUuid, String otsiNodeType, String nodeId) {
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node,
+ Uuid nodeUuid, String otsiNodeType, String nodeId) {
assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid");
assertEquals(nodeId, node.getName().get(new NameKey("otsi node name")).getValue(), "incorrect node name");
assertEquals(AdministrativeState.UNLOCKED, node.getAdministrativeState(),
otnSwitch.getNodeId().getValue(), TapiStringConstants.I_OTSI);
OwnedNodeEdgePoint nep2 = nepsE.get(0);
Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+eOTSi+XPDR2-NETWORK2")
+ UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+PHOTONIC_MEDIA_OTS+XPDR2-NETWORK2")
.getBytes(Charset.forName("UTF-8"))).toString());
checkNepOtsiNode(nep2, enepUuid, "XPDR2-NETWORK2", "eNodeEdgePoint",
- otnSwitch.getNodeId().getValue(), TapiStringConstants.E_OTSI);
+ otnSwitch.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA_OTS);
List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals(1, nepsI.size(), "Mux-OTSi node should have 1 iNEPs");
OwnedNodeEdgePoint nep3 = nepsE.get(0);
Uuid enepUuid2 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+eOTSi+XPDR1-NETWORK1")
+ UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
.getBytes(Charset.forName("UTF-8"))).toString());
checkNepOtsiNode(nep3, enepUuid2, "XPDR1-NETWORK1", "eNodeEdgePoint",
- otnMuxA.getNodeId().getValue(), TapiStringConstants.E_OTSI);
+ otnMuxA.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA_OTS);
OwnedNodeEdgePoint nep4 = nepsI.get(0);
Uuid inepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+iOTSi+XPDR1-NETWORK1")
assertEquals(2, nepsI.size(), "Tpdr-OTSi node should have 2 iNEPs");
OwnedNodeEdgePoint nep5 = nepsE.get(0);
Uuid enepUuid3 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+eOTSi+XPDR1-NETWORK1")
+ UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
.getBytes(Charset.forName("UTF-8"))).toString());
checkNepOtsiNode(nep5, enepUuid3, "XPDR1-NETWORK1", "eNodeEdgePoint",
- tpdr100G.getNodeId().getValue(), TapiStringConstants.E_OTSI);
+ tpdr100G.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA_OTS);
OwnedNodeEdgePoint nep6 = nepsI.get(0);
Uuid inepUuid3 = new Uuid(
UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+iOTSi+XPDR1-NETWORK1")
}
}
- private void checkNepClient10G(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
- String nodeId, String extension) {
+ private void checkNepClient10G(
+ OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName, String nodeId, String extension) {
assertEquals(nepUuid, nep.getUuid(), "bad uuid for " + portName);
- List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
- Name name = nameList.get(0);
- assertEquals(String.join("+", nodeId, extension, portName), name.getValue(),
+ Name name = new ArrayList<>(nep.nonnullName().values()).get(0);
+ assertEquals(
+ String.join("+", nodeId, extension, portName),
+ name.getValue(),
"value of client nep should be '" + portName + "'");
assertEquals(nepName, name.getValueName(),
"value-name of client nep for '" + portName + "' should be '" + nepName + "'");
- assertEquals(3, nep.getSupportedCepLayerProtocolQualifier().size(),
- "Client nep should support 3 kind of cep");
- assertThat("client nep should support 3 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ for (SupportedCepLayerProtocolQualifierInstances entry : nep.getSupportedCepLayerProtocolQualifierInstances()) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(3, lpql.size(), "Client nep should support 3 kind of cep");
+ assertThat("client nep should support 3 kind of cep", lpql,
hasItems(ODUTYPEODU2.VALUE, ODUTYPEODU2E.VALUE, DIGITALSIGNALTYPE10GigELAN.VALUE));
- assertEquals(LayerProtocolName.ETH, nep.getLayerProtocolName(), "client nep should be of ETH protocol type");
+ assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR(ETH) protocol ");
checkCommonPartOfNep(nep, false);
checkSIP(nep, portName, nodeId, extension);
}
- private void checkNepNetworkODU4(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
- String nodeId, String extension) {
+ private void checkNepNetworkODU4(
+ OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName, String nodeId, String extension) {
assertEquals(nepUuid, nep.getUuid(), "bad uuid for " + portName);
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
Name name = nameList.get(0);
"value of network nep should be '" + portName + "'");
assertEquals(nepName, name.getValueName(),
"value-name of network nep for '" + portName + "' should be '" + nepName + "'");
- assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(),
- "Network nep should support 1 kind of cep");
- assertThat("network nep should support 1 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItem(ODUTYPEODU4.VALUE));
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ for (SupportedCepLayerProtocolQualifierInstances entry :nep.getSupportedCepLayerProtocolQualifierInstances()) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(1, lpql.size(), "Network nep should support 1 kind of cep");
+ assertThat("network nep should support 1 kind of cep", lpql, hasItem(ODUTYPEODU4.VALUE));
assertEquals(LayerProtocolName.ODU, nep.getLayerProtocolName(), "network nep should be of ODU protocol type");
checkCommonPartOfNep(nep, false);
checkSIP(nep, portName, nodeId, extension);
}
- private void checkNodeRuleGroupForTpdrDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
- Uuid nodeUuid) {
- assertEquals(2, nrgList.size(), "transponder DSR should contain 2 node rule group");
+ private void checkNodeRuleGroupForTpdrDSR(
+ List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid, Uuid nodeUuid) {
+ assertEquals(4, nrgList.size(), "transponder DSR should contain 4 node rule group (2*DSR/I_ODU+2*E_ODU/I_ODU)");
for (NodeRuleGroup nodeRuleGroup : nrgList) {
assertEquals(2, nodeRuleGroup.getNodeEdgePoint().size(),
"each node-rule-group should contain 2 NEP for transponder DSR");
List<Rule> rule = new ArrayList<>(nrgList.get(1).nonnullRule().values());
assertEquals(1, rule.size(), "node-rule-group nb 1 should contain a single rule");
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
- private void checkNodeRuleGroupForMuxDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
- Uuid nodeUuid) {
- assertEquals(4, nrgList.size(), "muxponder DSR should contain 4 node rule group");
+ private void checkNodeRuleGroupForMuxDSR(
+ List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid, Uuid nodeUuid) {
+ assertEquals(8, nrgList.size(), "muxponder DSR should contain 8 node rule group (4*DSR/I_ODU + 4*E_ODU/I_ODU)");
for (NodeRuleGroup nodeRuleGroup : nrgList) {
assertEquals(2, nodeRuleGroup.getNodeEdgePoint().size(),
"each node-rule-group should contain 2 NEP for muxponder DSR");
List<Rule> rule = new ArrayList<>(nrgList.get(1).nonnullRule().values());
assertEquals(1, rule.size(), "node-rule-group nb 2 should contain a single rule");
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
- private void checkNodeRuleGroupForSwitchDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
- Uuid nodeUuid) {
- assertEquals(1, nrgList.size(), "Switch-DSR should contain a single node rule group");
+ private void checkNodeRuleGroupForSwitchDSR(
+ List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid, Uuid nodeUuid) {
+ assertEquals(2, nrgList.size(), "Switch-DSR should contain 2 node rule groups (DSR/I_ODU + E_ODU/I_ODU)");
assertEquals(8, nrgList.get(0).getNodeEdgePoint().size(), "Switch-DSR node-rule-group should contain 8 NEP");
List<NodeEdgePoint> nrg = nrgList.get(0).nonnullNodeEdgePoint().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getNodeEdgePointUuid().getValue()
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForRdmInfra(List<NodeRuleGroup> nrgList, int nbNeps) {
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
- private void checkNodeRuleGroupForTpdrOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
- Uuid nodeUuid) {
+ private void checkNodeRuleGroupForTpdrOTSi(
+ List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid, Uuid nodeUuid) {
assertEquals(2, nrgList.size(), "Tpdr-OTSi should contain two node rule groups");
List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).getNodeEdgePoint().values());
assertEquals(2, nodeEdgePointList.size(), "Tpdr-OTSi node-rule-group should contain 2 NEP");
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
- private void checkNodeRuleGroupForMuxOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
- Uuid nodeUuid) {
+ private void checkNodeRuleGroupForMuxOTSi(
+ List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid, Uuid nodeUuid) {
assertEquals(1, nrgList.size(), "Mux-OTSi should contain a single node rule group");
List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).getNodeEdgePoint().values());
assertEquals(2, nodeEdgePointList.size(), "Mux-OTSi node-rule-group should contain 2 NEP");
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
- private void checkNodeRuleGroupForSwitchOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
- Uuid nodeUuid) {
+ private void checkNodeRuleGroupForSwitchOTSi(
+ List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid, Uuid nodeUuid) {
assertEquals(4, nrgList.size(), "Switch-OTSi should contain 4 node rule group");
for (NodeRuleGroup nodeRuleGroup : nrgList) {
assertEquals(2, nodeRuleGroup.getNodeEdgePoint().size(),
List<Rule> ruleList0 = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList0.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList0.get(0).getLocalId(),"local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList0.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList0.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
- private void checkNepClient100GSwitch(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
- String nodeId, String extension) {
+ private void checkNepClient100GSwitch(
+ OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName, String nodeId, String extension) {
assertEquals(nepUuid, nep.getUuid(), "bad uuid for " + portName);
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
assertEquals(String.join("+", nodeId, extension, portName), nameList.get(0).getValue(),
"value of client nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(),
"value-name of client nep for '" + portName + "' should be '" + nepName + "'");
- assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 2 kind of cep");
- assertThat("client nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ for (SupportedCepLayerProtocolQualifierInstances entry : nep.getSupportedCepLayerProtocolQualifierInstances()) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(2, lpql.size(), "Client nep should support 2 kind of cep");
+ assertThat("client nep should support 2 kind of cep", lpql,
hasItems(ODUTYPEODU4.VALUE, DIGITALSIGNALTYPE100GigE.VALUE));
- assertEquals(LayerProtocolName.ETH, nep.getLayerProtocolName(), "client nep should be of ETH protocol type");
+ assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR(ETH) protocol");
checkCommonPartOfNep(nep, false);
checkSIP(nep, portName, nodeId, extension);
}
- private void checkNepClient100GTpdr(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
- String nodeId, String extension) {
+ private void checkNepClient100GTpdr(
+ OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName, String nodeId, String extension) {
assertEquals(nepUuid, nep.getUuid(), "bad uuid for " + portName);
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
assertEquals(String.join("+", nodeId, extension, portName), nameList.get(0).getValue(),
"value of client nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(),
"value-name of client nep for '" + portName + "' should be 100G-tpdr'");
- assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 1 kind of cep");
- assertThat("client nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(DIGITALSIGNALTYPE100GigE.VALUE));
- assertEquals(LayerProtocolName.ETH, nep.getLayerProtocolName(), "client nep should be of ETH protocol type");
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ for (SupportedCepLayerProtocolQualifierInstances entry : nep.getSupportedCepLayerProtocolQualifierInstances()) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(1, lpql.size(), "Client nep should support 1 kind of cep");
+ assertThat("client nep should support 2 kind of cep", lpql, hasItems(DIGITALSIGNALTYPE100GigE.VALUE));
+ assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR(ETH) protocol");
checkCommonPartOfNep(nep, false);
checkSIP(nep, portName, nodeId, extension);
}
- private void checkNepOtsiNode(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
- String nodeId, String extension) {
+ private void checkNepOtsiNode(
+ OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName, String nodeId, String extension) {
assertEquals(nepUuid, nep.getUuid(), "bad uuid for " + portName);
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
assertEquals(String.join("+", nodeId, extension, portName), nameList.get(0).getValue(),
"value of OTSi nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(), "value-name of OTSi nep should be '" + nepName + "'");
- assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(), "OTSi nep should support 2 kind of cep");
- assertThat("OTSi nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ for (SupportedCepLayerProtocolQualifierInstances entry : nep.getSupportedCepLayerProtocolQualifierInstances()) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(2, lpql.size(), "OTSi nep should support 2 kind of cep");
+ assertThat("OTSi nep should support 2 kind of cep", lpql,
hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE, PHOTONICLAYERQUALIFIEROTSi.VALUE));
assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
"OTSi nep should be of PHOTONIC_MEDIA protocol type");
}
private void checkSIP(OwnedNodeEdgePoint nep, String portName, String nodeId, String extension) {
- Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", nodeId, extension, portName))
- .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid sipUuid = new Uuid(
+ UUID.nameUUIDFromBytes((String.join("+", "SIP", nodeId, extension, portName))
+ .getBytes(Charset.forName("UTF-8")))
+ .toString());
assertEquals(
sipUuid,
nep.getMappedServiceInterfacePoint().get(new MappedServiceInterfacePointKey(sipUuid))
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
assertEquals(portName, nameList.get(0).getValue(), "value of OTSi nep should be '" + portName + "'");
assertEquals(nepName, nameList.get(0).getValueName(), "value-name of OTSi nep should be '" + nepName + "'");
- assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(),
- "OTSi nep of RDM infra node should support only 1 kind of cep");
- assertThat("OTSi nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE));
+ List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
+ for (SupportedCepLayerProtocolQualifierInstances entry : nep.getSupportedCepLayerProtocolQualifierInstances()) {
+ lpql.add(entry.getLayerProtocolQualifier());
+ }
+ assertEquals(1, lpql.size(), "OTSi nep of RDM infra node should support only 1 kind of cep");
+ assertThat("OTSi nep should support OTS cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROTS.VALUE));
assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
"OTSi nep should be of PHOTONIC_MEDIA protocol type");
assertEquals(0, nep.nonnullMappedServiceInterfacePoint().size(), "OTSi nep of RDM infra should support no SIP");
}
private void checkCommonPartOfNep(OwnedNodeEdgePoint nep, boolean isRdm) {
- assertEquals(PortDirection.BIDIRECTIONAL, nep.getLinkPortDirection(),
+ assertEquals(Direction.BIDIRECTIONAL, nep.getDirection(),
"link port direction should be DIRECTIONAL");
assertEquals(AdministrativeState.UNLOCKED, nep.getAdministrativeState(),
"administrative state should be UNLOCKED");
- assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(),
- "termination state should be TERMINATED BIDIRECTIONAL");
+// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4
+// assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(),
+// "termination state should be TERMINATED BIDIRECTIONAL");
assertEquals(LifecycleState.INSTALLED, nep.getLifecycleState(),
"life-cycle state should be INSTALLED");
if (!isRdm) {
assertEquals(1, nep.getMappedServiceInterfacePoint().size(), "client nep should support 1 SIP");
}
- assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(),
- "termination direction should be BIDIRECTIONAL");
+// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4
+// assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(),
+// "termination direction should be BIDIRECTIONAL");
assertEquals(OperationalState.ENABLED, nep.getOperationalState(),
"operational state of client nep should be ENABLED");
assertEquals(PortRole.SYMMETRIC, nep.getLinkPortRole(), "link-port-role of client nep should be SYMMETRIC");
}
- private void checkTransitionalLink(Link link, Uuid node1Uuid, Uuid node2Uuid, String tp1, String tp2,
- String ietfNodeId) {
- Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((tp1 + "to" + tp2)
- .getBytes(Charset.forName("UTF-8"))).toString());
- assertEquals(linkUuid, link.getUuid(), "bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2);
- assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(),
- "Available capacity unit should be GBPS");
- assertEquals(Uint64.valueOf(100), link.getAvailableCapacity().getTotalSize().getValue(),
- "Available capacity -total size value should be 100");
- assertEquals(2, link.getTransitionedLayerProtocolName().size(),
- "transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA");
- assertThat("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
- link.getTransitionedLayerProtocolName(),
- hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()));
- assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),
- "transitional link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
- assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertEquals(topologyUuid, nodeEdgePointList.get(1).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(0).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(tp1.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nep2Uuid = new Uuid(UUID.nameUUIDFromBytes(tp2.getBytes(Charset.forName("UTF-8"))).toString());
- assertThat("transitional links should terminate on " + tp1 + " and " + tp2 + " neps",
- nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- }
-
- private void checkOtnLink(Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid,
- String linkName) {
+ private void checkOtnLink(
+ Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid, String linkName) {
assertEquals(linkName, link.getName().get(new NameKey("otn link name")).getValue(), "bad name for the link");
assertEquals(linkUuid, link.getUuid(), "bad uuid for link");
- assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(),
+ assertEquals(CAPACITYUNITGBPS.VALUE, link.getAvailableCapacity().getTotalSize().getUnit(),
"Available capacity unit should be MBPS");
String prefix = linkName.split("-")[0];
if ("OTU4".equals(prefix)) {
assertEquals(Uint64.valueOf(100000), link.getAvailableCapacity().getTotalSize().getValue(),
"Available capacity -total size value should be 100 000");
}
- assertEquals(CapacityUnit.GBPS, link.getTotalPotentialCapacity().getTotalSize().getUnit(),
+ assertEquals(CAPACITYUNITGBPS.VALUE, link.getTotalPotentialCapacity().getTotalSize().getUnit(),
"Total capacity unit should be GBPS");
- assertEquals(Uint64.valueOf(100), link.getTotalPotentialCapacity().getTotalSize().getValue(),
+ assertEquals(Decimal64.valueOf("100"), link.getTotalPotentialCapacity().getTotalSize().getValue(),
"Total capacity -total size value should be 100");
if ("OTU4".equals(prefix)) {
assertEquals(
"otn link should be between 2 nodes of protocol layers ODU");
}
assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "otn tapi link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
+ LOG.info("OUTPUT: Node1UUID = {}, Node2UU2D = {},", node1Uuid, node2Uuid);
+ LOG.info("NEPLIST = {}", nodeEdgePointList);
assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
"topology uuid should be the same for the two termination point of the link");
assertEquals(topologyUuid, nodeEdgePointList.get(1).getTopologyUuid(),
"administrative state should be UNLOCKED");
}
- private void checkOmsLink(Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid,
- String linkName) {
- assertEquals(linkName, link.getName().get(new NameKey("OMS link name")).getValue(), "bad name for the link");
+ private void checkOmsLink(
+ Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid, String linkName) {
+ assertEquals(linkName, link.getName().get(new NameKey("OTS link name")).getValue(), "bad name for the link");
assertEquals(linkUuid, link.getUuid(), "bad uuid for link");
assertEquals(
LayerProtocolName.PHOTONICMEDIA.getName(),
link.getLayerProtocolName().stream().findFirst().orElseThrow().getName(),
"oms link should be between 2 nodes of protocol layers PHOTONIC_MEDIA");
assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "otn tapi link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
+ .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
assertEquals(2, nodeEdgePointList.size(), "oms link should be between 2 neps");
assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
"topology uuid should be the same for the two termination point of the link");
}
private Node changeTerminationPointState(Node initialNode, String tpid, AdminStates admin, State oper) {
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder tpdr1Bldr
- = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder(
- initialNode.augmentation(Node1.class));
+ var tpdr1Bldr = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .Node1Builder(initialNode.augmentation(Node1.class));
Map<TerminationPointKey, TerminationPoint> tps = new HashMap<>(tpdr1Bldr.getTerminationPoint());
- TerminationPointBuilder tpBldr = new TerminationPointBuilder(
- tps.get(new TerminationPointKey(new TpId(tpid))));
- TerminationPoint1Builder tp1Bldr = new TerminationPoint1Builder(tpBldr.augmentation(TerminationPoint1.class));
- tp1Bldr.setAdministrativeState(admin)
- .setOperationalState(oper);
+ TerminationPointBuilder tpBldr = new TerminationPointBuilder(tps.get(new TerminationPointKey(new TpId(tpid))));
+ TerminationPoint1Builder tp1Bldr =
+ new TerminationPoint1Builder(tpBldr.augmentation(TerminationPoint1.class))
+ .setAdministrativeState(admin)
+ .setOperationalState(oper);
tpBldr.addAugmentation(tp1Bldr.build());
tps.replace(tpBldr.key(), tpBldr.build());
- tpdr1Bldr.setTerminationPoint(tps);
- return new NodeBuilder(initialNode).addAugmentation(tpdr1Bldr.build()).build();
+ return new NodeBuilder(initialNode).addAugmentation(tpdr1Bldr.setTerminationPoint(tps).build()).build();
}
- private org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
- .Link changeOtnLinkState(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
- .Link initiallink, AdminStates admin, State oper) {
+ private org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link changeOtnLinkState(
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.Link initiallink,
+ AdminStates admin,
+ State oper) {
+ var linkBldr = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.LinkBuilder(initiallink);
+ return linkBldr
+ .addAugmentation(
+ new Link1Builder(linkBldr.augmentation(Link1.class))
+ .setAdministrativeState(admin)
+ .setOperationalState(oper)
+ .build())
+ .build();
+ }
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
- .LinkBuilder linkBldr = new
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
- .LinkBuilder(initiallink);
- Link1Builder link1Bldr = new Link1Builder(linkBldr.augmentation(Link1.class));
- link1Bldr.setAdministrativeState(admin)
- .setOperationalState(oper);
- linkBldr.addAugmentation(link1Bldr.build());
- return linkBldr.build();
+ private int getNodeRank(
+ String searchedChar,
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeList) {
+ int foundAtRank = 0;
+ int rank = 0;
+ for (var node: nodeList) {
+ for (Map.Entry<NameKey, Name> entry: node.getName().entrySet()) {
+ if (entry.getValue().getValue().contains(searchedChar)) {
+ foundAtRank = rank;
+ }
+ }
+ rank++;
+ }
+ LOG.info("searched Char {} found at rank {}", searchedChar, foundAtRank);
+ return foundAtRank;
}
-}
\ No newline at end of file
+}
*/
package org.opendaylight.transportpce.tapi.topology;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.mock;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import com.google.common.util.concurrent.FluentFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Optional;
+import java.nio.charset.Charset;
+import java.util.UUID;
import java.util.concurrent.ExecutionException;
-import org.eclipse.jdt.annotation.NonNull;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.ReadTransaction;
-import org.opendaylight.mdsal.common.api.CommitInfo;
-import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.TapiStringConstants;
import org.opendaylight.transportpce.tapi.utils.TapiContext;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
-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.GetTopologyDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutput;
+import org.opendaylight.yangtools.yang.common.ErrorType;
import org.opendaylight.yangtools.yang.common.RpcResult;
+@ExtendWith(MockitoExtension.class)
public class TapiTopologyImplExceptionTest {
+ @Mock
+ private NetworkTransactionService networkTransactionService;
@Mock
private TapiContext tapiContext;
@Mock
@Test
void getTopologyDetailsWithExceptionTest() throws InterruptedException, ExecutionException {
- DataBroker dataBroker = mock(DataBroker.class);
- when(dataBroker.newReadOnlyTransaction())
- .thenReturn(new ReadTransactionMock());
- NetworkTransactionService networkTransactionService = mock(NetworkTransactionService.class);
- Answer<FluentFuture<CommitInfo>> answer = new Answer<FluentFuture<CommitInfo>>() {
-
- @Override
- public FluentFuture<CommitInfo> answer(InvocationOnMock invocation) throws Throwable {
- return CommitInfo.emptyFluentFuture();
- }
-
- };
- when(networkTransactionService.commit()).then(answer);
- tapiContext = new TapiContext(networkTransactionService);
-
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TapiStringConstants.T0_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(dataBroker, tapiContext, topologyUtils, tapiLink);
+ when(networkTransactionService.read(any(), any()))
+ .thenReturn(FluentFuture.from(Futures.immediateFailedFuture(new InterruptedException())));
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils,
+ tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
- RpcResult<GetTopologyDetailsOutput> rpcResult = result.get();
- if (rpcResult.isSuccessful()) {
- Topology topology = rpcResult.getResult().getTopology();
- assertNull(topology, "Topology should be null");
- } else {
- assertNull(null, "Topology should be null");
- }
- }
-
- private final class ReadTransactionMock implements ReadTransaction {
-
- @Override
- public @NonNull Object getIdentifier() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public <T extends DataObject> @NonNull FluentFuture<Optional<T>> read(@NonNull LogicalDatastoreType store,
- @NonNull InstanceIdentifier<T> path) {
- return FluentFuture.from(Futures.immediateFailedFuture(new InterruptedException()));
- }
-
- @Override
- public @NonNull FluentFuture<Boolean> exists(@NonNull LogicalDatastoreType store,
- @NonNull InstanceIdentifier<?> path) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void close() {
- // TODO Auto-generated method stub
- }
+ assertFalse(result.get().isSuccessful(), "RpcResult is not successful");
+ assertNull(result.get().getResult(), "RpcResult result should be null");
+ assertEquals(ErrorType.RPC, result.get().getErrors().get(0).getErrorType());
+ assertEquals("Error building topology", result.get().getErrors().get(0).getMessage());
}
}
\ No newline at end of file
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
+import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.utils.TopologyDataUtils;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.Sip;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.SipKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsOutput;
-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.GetTopologyDetailsOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.Sip;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.SipKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Node;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.details.output.Topology;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yangtools.yang.common.Decimal64;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
@Test
void getTopologyDetailsForTransponder100GTopologyWhenSuccessful()
throws ExecutionException, InterruptedException {
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TapiStringConstants.TPDR_100G);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ LOG.info("TPDR100GUuid = {}", topologyUuid);
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils,
+ tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
+ LOG.info("RESULT of getTopoDetailsTopo/name = {}", result.get().getResult().getTopology().getName().toString());
result.addListener(new Runnable() {
@Override
public void run() {
List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule");
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
- assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(),
+ assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
@Test
void getTopologyDetailsForOtnTopologyWithOtnLinksWhenSuccessful()
throws ExecutionException, InterruptedException {
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TapiStringConstants.T0_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ LOG.info("T0MultilayerUuid = {}", topologyUuid);
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils,
+ tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
@Nullable
Topology topology = rpcResult.getResult().getTopology();
assertNotNull(topology, "Topology should not be null");
- assertEquals(13, topology.getNode().size(), "Node list size should be 13");
+ for (Map.Entry<
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> entry :
+ topology.getNode().entrySet()) {
+ LOG.debug("NODESDETECTED = {}",entry.getValue().getName().toString());
+ }
+ assertEquals(7, topology.getNode().size(), "Node list size should be 7");
long nb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))))
.count();
long nb2 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
long nb3 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
long nb4 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
long nb5 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
assertEquals(2, nb5, "SPDR-SA1-XPDR2 (switch) should have 2 network neps");
- assertEquals(18, topology.getLink().size(), "Link list size should be 18");
+ long nb7 = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("otsi node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
+ .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .count();
+ assertEquals(1, nb7, "XPDR-A1-XPDR1 should only have 1 OTSI network nep");
+ long nb8 = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("otsi node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
+ .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .count();
+ assertEquals(1, nb8, "SPDR-SA1-XPDR1 (mux) should have a single OTSI network nep");
+ long nb9 = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("otsi node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
+ .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .count();
+ assertEquals(2, nb9, "SPDR-SA1-XPDR2 (switch) should have 2 OTSI network nep");
+
+ assertEquals(10, topology.getLink().size(), "Link list size should be 10, no more transitionnal links");
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes("T0 - Multi-layer topology".getBytes()).toString());
assertEquals(topoUuid, topology.getUuid(), "incorrect topology uuid");
assertEquals(
long nbPhotonicNodes = topology.nonnullNode().values().stream()
.filter(n -> n.getName().containsKey(new NameKey("otsi node name"))).count();
assertEquals(6, nbDsrOduNodes, "Node list should contain 6 DSR-ODU nodes");
- assertEquals(7, nbPhotonicNodes, "Node list should contain 7 Photonics nodes");
- long nbTransititionalLinks = topology.getLink().values().stream()
- .filter(l -> l.getName().containsKey(new NameKey("transitional link name"))).count();
- long nbOmsLinks = topology.getLink().values().stream()
- .filter(l -> l.getName().containsKey(new NameKey("OMS link name"))).count();
+ assertEquals(7, nbPhotonicNodes, "Node list should contain 7 Photonics node");
+ long nbOtsLinks = topology.getLink().values().stream()
+ .filter(l -> l.getName().containsKey(new NameKey("OTS link name"))).count();
long nbOtnLinks = topology.getLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("otn link name"))).count();
- assertEquals(8, nbTransititionalLinks, "Link list should contain 8 transitional links");
- assertEquals(8, nbOmsLinks, "Link list should contain 8 transitional links");
+ assertEquals(8, nbOtsLinks, "Link list should contain 8 OTS links");
assertEquals(2, nbOtnLinks, "Link list should contain 2 OTN links");
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(StandardCharsets.UTF_8))
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
- Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR".getBytes(StandardCharsets.UTF_8))
+ Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
- Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(StandardCharsets.UTF_8))
+ Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
- Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+OTSi".getBytes(StandardCharsets.UTF_8))
+ Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
"SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
checkOtnLink(links.get(1), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link2Uuid,
"SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
+
}
@Test
void getTopologyDetailsForFullTapiTopologyWithLinksWhenSuccessful()
throws ExecutionException, InterruptedException {
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TapiStringConstants.T0_FULL_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ LOG.info("T0FullMultilayerUuid = {}", topologyUuid);
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils,
+ tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
@Nullable
Topology topology = rpcResult.getResult().getTopology();
assertNotNull(topology, "Topology should not be null");
- // 2 Nodes per Xpdr/Spdr node (DSR-ODU & PHOT) + 1 Node per Roadm
- assertEquals(18, topology.getNode().size(), "Node list size should be 18");
+ // 2 Nodes per Xpdr/Spdr node (DSR-ODU & PHOT) + 3 Node per Roadm
+ assertEquals(10, topology.getNode().size(), "Node list size should be 10");
+ List<Map<NameKey, Name>> nodeNames = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
+ .map(Node::getName).collect(Collectors.toList());
+ LOG.info("TopologyNodes = {}", nodeNames.toString());
+ Node nodeTsp = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
+ .findAny().orElseThrow();
+ LOG.debug("XPDRA1 NEPs = {}", nodeTsp.getOwnedNodeEdgePoint().toString());
long nb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))))
.count();
// 2 client ports in configuration -> removed the checkTp so we have 2 NEPs
- assertEquals(2, nb1, "XPDR-A1-XPDR1+DSR should only have two client neps");
+ assertEquals(2, nb1, "XPDR-A1-XPDR1+XPONDER should only have two client neps");
long inb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(2, inb1, "XPDR-A1-XPDR1+DSR should only have two internal network neps");
+ assertEquals(2, inb1, "XPDR-A1-XPDR1+XPONDER should only have two internal network neps");
long enb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(2, enb1, "XPDR-A1-XPDR1+DSR should only have two external network neps");
+ assertEquals(2, enb1, "XPDR-A1-XPDR1+XPONDER should only have two external network neps");
long nb2 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
- assertEquals(4, nb2, "SPDR-SA1-XPDR1+DSR (mux) should have 4 client neps");
+ assertEquals(4, nb2, "SPDR-SA1-XPDR1+XPONDER (mux) should have 4 client neps");
long inb3 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(1, inb3, "SPDR-SA1-XPDR1+DSR (mux) should have a single internal network nep");
+ assertEquals(1, inb3, "SPDR-SA1-XPDR1+XPONDER (mux) should have a single internal network nep");
long enb3 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(4, enb3, "SPDR-SA1-XPDR1+DSR (mux) should have 4 external network nep");
+ assertEquals(4, enb3, "SPDR-SA1-XPDR1+XPONDER (mux) should have 4 external network nep");
long nb4 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
- assertEquals(4, nb4, "SPDR-SA1-XPDR2+DSR (switch) should have 4 client neps");
+ assertEquals(4, nb4, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 client neps");
long inb5 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(4, inb5, "SPDR-SA1-XPDR2+DSR (switch) should have 4 internal network neps");
+ assertEquals(4, inb5, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 internal network neps");
long enb5 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(4, enb5, "SPDR-SA1-XPDR2+DSR (switch) should have 4 external network neps");
+ assertEquals(4, enb5, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 external network neps");
- // Now lets check for the Photonic media nodes (same nodes as for DSR + 1 Roadm node)
- nb1 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint"))))
- .count();
- // 2 client ports in configuration -> removed the checkTp so we have 2 NEPs
- assertEquals(2, nb1, "XPDR-A1-XPDR1+OTSi should only have two internal network neps");
inb1 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(2, inb1, "XPDR-A1-XPDR1+OTSi should only have two external network neps");
+ assertEquals(2, inb1, "XPDR-A1-XPDR1+XPONDER should only have two external network neps");
enb1 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("PhotMedNodeEdgePoint"))))
- .count();
- assertEquals(2, enb1, "XPDR-A1-XPDR1+OTSi should only have two photonic network neps");
- nb2 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint"))))
+ .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(1, nb2, "SPDR-SA1-XPDR1+OTSi (mux) should have a single internal network nep");
+ assertEquals(2, enb1, "XPDR-A1-XPDR1+XPONDER should only have two photonic network neps");
inb3 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
.count();
- assertEquals(1, inb3, "SPDR-SA1-XPDR1+OTSi (mux) should have a single external network nep");
- enb3 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("PhotMedNodeEdgePoint"))))
- .count();
- assertEquals(1, enb3, "SPDR-SA1-XPDR1+OTSi (mux) should have a single photonic network nep");
- nb4 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint"))))
- .count();
- assertEquals(4, nb4, "SPDR-SA1-XPDR2+OTSi (switch) should have 4 internal network neps");
+ assertEquals(1, inb3, "SPDR-SA1-XPDR1+XPONDER (mux) should have a single external network nep");
inb5 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
.count();
- assertEquals(4, inb5, "SPDR-SA1-XPDR2+OTSi (switch) should have 4 external network neps");
- enb5 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("PhotMedNodeEdgePoint"))))
- .count();
- assertEquals(4, enb5, "SPDR-SA1-XPDR2+OTSi (switch) should have 4 photonic network neps");
- // We should have 3 neps per DEGREE-TTP port and 3 neps per SRG-PP port
+ assertEquals(4, inb5, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 external network neps");
long inb6 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue().equals(
- "ROADM-A1+PHOTONIC_MEDIA"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && !node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("roadm node name")).getValue()
+ .equals("ROADM-A1+PHOTONIC_MEDIA"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().values().stream().findFirst().orElseThrow().getValue().contains("DEG")))
+ .filter(nep -> nep.getName().values().stream().findAny().orElseThrow().getValue().contains("DEG")))
.count();
- assertEquals(6, inb6, "ROADM-A1+PHOTONIC_MEDIA (DEGREE) should have 6 network neps");
+ assertEquals(4, inb6, "ROADM-A1+PHOTONIC_MEDIA (DEGREE) should have 4 network neps");
long enb6 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue().equals(
- "ROADM-A1+PHOTONIC_MEDIA"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && !node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("roadm node name")).getValue()
+ .equals("ROADM-A1+PHOTONIC_MEDIA"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().values().stream().findFirst().orElseThrow().getValue().contains("SRG")))
+ .filter(nep -> nep.getName().values().stream().findAny().orElseThrow().getValue().contains("SRG")))
.count();
- assertEquals(24, enb6, "ROADM-A1+PHOTONIC_MEDIA (SRG) should have 24 network neps");
+ assertEquals(8, enb6, "ROADM-A1+PHOTONIC_MEDIA (SRG) should have 8 network neps (OTS)");
// Links in openroadm topology which include Roadm-to-Roadm and Xpdr-to-Roadm (ortopo / 2)
- // + transitional links -> 1 per network port of Xpdr + OTN links / 2
- assertEquals(25, topology.getLink().size(), "Link list size should be 25");
+ // + transitional links -> 0 per network port of Xpdr + OTN links / 2
+ List<String> linkList = new ArrayList<>();
+ for (Map.Entry<LinkKey, Link> entry : topology.getLink().entrySet()) {
+ linkList.add(entry.getValue().getName().entrySet().iterator().next().getValue().toString());
+ }
+ assertEquals(9, topology.getLink().size(), "Link list size should be 8 XPDR To SRG and 1 DEG2A-DEG1C");
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes("T0 - Full Multi-layer topology".getBytes()).toString());
assertEquals(topoUuid, topology.getUuid(), "incorrect topology uuid");
assertEquals(
assertEquals(8, nbDsrOduNodes, "Node list should contain 8 DSR-ODU nodes");
// We need to add the Roadms as Photonic nodes. Instead of 1 node as roadm infra we have 2 roadm nodes
assertEquals(8, nbPhotonicNodes, "Node list should contain 8 Photonics nodes");
- long nbTransititionalLinks = topology.getLink().values().stream()
- .filter(l -> l.getName().containsKey(new NameKey("transitional link name"))).count();
// Roadm-to-Roadm
long nbOmsLinks = topology.getLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("OMS link name"))).count();
// Xpdr-to-Roadm
long nbOmsLinks1 = topology.getLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("XPDR-RDM link name"))).count();
- // 1 transitional link per NETWORK port
- assertEquals(16, nbTransititionalLinks, "Link list should contain 16 transitional links");
// 1 OMS per ROADM-to-ROADM link + Existing XPDR-tp-ROADM link in openroadm topology
assertEquals(9, nbOmsLinks + nbOmsLinks1, "Link list should contain 9 OMS links");
}
@Test
void getNodeAndNepsDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TapiStringConstants.T0_FULL_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils,
+ tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
@Nullable
Topology topology = rpcResult.getResult().getTopology();
for (Node node:topology.getNode().values()) {
- String nodeName = node.getName().values().stream().findFirst().orElseThrow().getValue();
- GetNodeDetailsInput input1 = TapiTopologyDataUtils.buildGetNodeDetailsInput(
- TapiStringConstants.T0_FULL_MULTILAYER, nodeName);
+ Uuid nodeUuid = node.getUuid();
+ GetNodeDetailsInput input1 = TapiTopologyDataUtils.buildGetNodeDetailsInput(topologyUuid, nodeUuid);
ListenableFuture<RpcResult<GetNodeDetailsOutput>> result1 = tapiTopoImpl.getNodeDetails(input1);
result.addListener(new Runnable() {
@Override
Node node1 = rpcResult1.getResult().getNode();
assertNotNull(node1, "Node should not be null");
for (OwnedNodeEdgePoint onep:node1.getOwnedNodeEdgePoint().values()) {
- String onepName = onep.getName().values().stream().findFirst().orElseThrow().getValue();
+ Uuid onepUuid = onep.getUuid();
GetNodeEdgePointDetailsInput input2 = TapiTopologyDataUtils.buildGetNodeEdgePointDetailsInput(
- TapiStringConstants.T0_FULL_MULTILAYER, nodeName, onepName);
+ topologyUuid, nodeUuid, onepUuid);
ListenableFuture<RpcResult<GetNodeEdgePointDetailsOutput>> result2
= tapiTopoImpl.getNodeEdgePointDetails(input2);
result.addListener(new Runnable() {
endSignal.await();
RpcResult<GetNodeEdgePointDetailsOutput> rpcResult2 = result2.get();
org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.topology.rev181210.get.node.edge.point.details.output.NodeEdgePoint
+ .urn.onf.otcc.yang.tapi.topology.rev221121.get.node.edge.point.details.output.NodeEdgePoint
onep1 = rpcResult2.getResult().getNodeEdgePoint();
assertNotNull(onep1, "Node Edge Point should not be null");
}
@Test
void getLinkDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
- GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(
- TapiStringConstants.T0_FULL_MULTILAYER);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils,
+ tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
result.addListener(new Runnable() {
@Override
@Nullable
Topology topology = rpcResult.getResult().getTopology();
for (Link link:topology.getLink().values()) {
- String linkName = link.getName().values().stream().findFirst().orElseThrow().getValue();
+ Uuid linkUuid = link.getUuid();
GetLinkDetailsInput input1 = TapiTopologyDataUtils.buildGetLinkDetailsInput(
- TapiStringConstants.T0_FULL_MULTILAYER, linkName);
+ topologyUuid, linkUuid);
ListenableFuture<RpcResult<GetLinkDetailsOutput>> result1 = tapiTopoImpl.getLinkDetails(input1);
result.addListener(new Runnable() {
@Override
}, executorService);
endSignal.await();
RpcResult<GetLinkDetailsOutput> rpcResult1 = result1.get();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.link.details.output.Link link1
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.link.details.output.Link link1
= rpcResult1.getResult().getLink();
assertNotNull(link1, "Link should not be null");
}
void getSipDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
GetServiceInterfacePointListInput input = TapiTopologyDataUtils.buildServiceInterfacePointListInput();
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
+ TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(networkTransactionService, tapiContext, topologyUtils,
+ tapiLink);
ListenableFuture<RpcResult<GetServiceInterfacePointListOutput>> result = tapiTopoImpl
.getServiceInterfacePointList(input);
result.addListener(new Runnable() {
endSignal.await();
RpcResult<GetServiceInterfacePointDetailsOutput> rpcResult1 = result1.get();
org.opendaylight.yang.gen.v1
- .urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.details.output.Sip sip1
+ .urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.details.output.Sip sip1
= rpcResult1.getResult().getSip();
assertNotNull(sip1, "Sip should not be null");
}
Uuid linkUuid, String linkName) {
assertEquals(linkName, link.getName().get(new NameKey("otn link name")).getValue(), "bad name for the link");
assertEquals(linkUuid, link.getUuid(), "bad uuid for link");
- assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(),
+ assertEquals(CAPACITYUNITGBPS.VALUE, link.getAvailableCapacity().getTotalSize().getUnit(),
"Available capacity unit should be MBPS");
String prefix = linkName.split("-")[0];
if ("OTU4".equals(prefix)) {
assertEquals(Uint64.valueOf(100000), link.getAvailableCapacity().getTotalSize().getValue(),
"Available capacity -total size value should be 100 000");
}
- assertEquals(CapacityUnit.GBPS, link.getTotalPotentialCapacity().getTotalSize().getUnit(),
+ assertEquals(CAPACITYUNITGBPS.VALUE, link.getTotalPotentialCapacity().getTotalSize().getUnit(),
"Total capacity unit should be GBPS");
- assertEquals(Uint64.valueOf(100), link.getTotalPotentialCapacity().getTotalSize().getValue(),
+ assertEquals(Decimal64.valueOf("100"), link.getTotalPotentialCapacity().getTotalSize().getValue(),
"Total capacity -total size value should be 100");
if ("OTU4".equals(prefix)) {
assertEquals("otn link should be between 2 nodes of protocol layers PHOTONIC_MEDIA",
}
assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),
"transitional link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
.link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
assertEquals(topoUuid, nodeEdgePointList.get(0).getTopologyUuid(),
"topology uuid should be the same for the two termination point of the link");
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceAEndBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ProtectionRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.constraint.RequestedCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraintBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ProtectionRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.constraint.RequestedCapacityBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintKey;
+import org.opendaylight.yangtools.yang.common.Decimal64;
import org.opendaylight.yangtools.yang.common.Uint32;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.opendaylight.yangtools.yang.common.Uint8;
public final class TapiConnectivityDataUtils {
return new CreateConnectivityServiceInputBuilder()
.setEndPoint(endPointMap)
- .setConnectivityConstraint(new ConnectivityConstraintBuilder().setServiceLayer(LayerProtocolName.DSR)
- .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).setServiceLevel("some service-level")
- .setRequestedCapacity(new RequestedCapacityBuilder()
- .setTotalSize(new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
- .setValue(Uint64.valueOf(10)).build()).build()).build())
- .setState("some state")
+ .setLayerProtocolName(LayerProtocolName.DSR)
+ .setConnectivityConstraint(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
+ .create.connectivity.service.input.ConnectivityConstraintBuilder()
+ .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).setServiceLevel("some service-level")
+ .setRequestedCapacity(new RequestedCapacityBuilder()
+ .setTotalSize(new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE)
+ .setValue(Decimal64.valueOf("10")).build()).build()).build())
+ .setState(AdministrativeState.UNLOCKED)
+ .setTopologyConstraint(getTopoConstraintMap())
.build();
}
public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() {
return new DeleteConnectivityServiceInputBuilder()
- .setServiceIdOrName(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
.build();
}
return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR)
.setAdministrativeState(AdministrativeState.UNLOCKED)
.setOperationalState(OperationalState.ENABLED)
- .setDirection(PortDirection.BIDIRECTIONAL)
+ .setDirection(Direction.BIDIRECTIONAL)
.setRole(PortRole.SYMMETRIC)
.setProtectionRole(ProtectionRole.NA)
.setLocalId("SPDR-SC1-XPDR1")
return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR)
.setAdministrativeState(AdministrativeState.UNLOCKED)
.setOperationalState(OperationalState.ENABLED)
- .setDirection(PortDirection.BIDIRECTIONAL)
+ .setDirection(Direction.BIDIRECTIONAL)
.setRole(PortRole.SYMMETRIC)
.setProtectionRole(ProtectionRole.NA)
.setLocalId("SPDR-SA1-XPDR1")
.build());
}
+ private static Map<TopologyConstraintKey, TopologyConstraint> getTopoConstraintMap() {
+ Map<TopologyConstraintKey, TopologyConstraint> topoConstraintMap = new HashMap<>();
+ TopologyConstraint topoConstraint = new TopologyConstraintBuilder()
+ .setLocalId("localIdTopoConstraint").build();
+ topoConstraintMap.put(topoConstraint.key(), topoConstraint);
+ return topoConstraintMap;
+ }
+
public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
EndPoint endPoint1 = getEndPoint1Builder().build();
EndPoint endPoint2 = getEndPoint2Builder().build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint
endPoint11 = new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder(endPoint1).build();
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint1).build();
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint
endPoint12 = new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder(endPoint2).build();
+ .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint2).build();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint>
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint>
endPointMap = new HashMap<>();
endPointMap.put(endPoint11.key(), endPoint11);
endPointMap.put(endPoint12.key(), endPoint12);
.build();
connectionMap.put(connection.key(), connection);
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name name =
- new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder()
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name name =
+ new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder()
.setValueName("Connectivity Service Name").setValue("service 1")
.build();
+ ConnectivityConstraint conCons = new ConnectivityConstraintBuilder()
+ .setServiceLevel(null)
+ .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
+ .build();
ConnectivityService connServ = new ConnectivityServiceBuilder()
.setAdministrativeState(AdministrativeState.LOCKED)
.setOperationalState(OperationalState.DISABLED)
.setLifecycleState(LifecycleState.PLANNED)
.setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
- .setServiceLayer(LayerProtocolName.DSR)
- .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY)
- .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL)
+ .setLayerProtocolName(LayerProtocolName.DSR)
+ .setConnectivityConstraint(conCons)
+ .setDirection(ForwardingDirection.BIDIRECTIONAL)
.setName(Map.of(name.key(), name))
.setConnection(connectionMap)
.setEndPoint(endPointMap)
public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() {
return new DeleteConnectivityServiceInputBuilder()
- .setServiceIdOrName("random-service").build();
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()))
+ .build();
}
private TapiConnectivityDataUtils() {
package org.opendaylight.transportpce.tapi.utils;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInputBuilder;
public final class TapiTopologyDataUtils {
public static final String OPENROADM_TOPOLOGY_FILE = "src/test/resources/openroadm-topology.xml";
public static final String OTN_TOPOLOGY_FILE = "src/test/resources/otn-topology.xml";
public static final String PORTMAPPING_FILE = "src/test/resources/portmapping.xml";
- public static GetTopologyDetailsInput buildGetTopologyDetailsInput(String topoName) {
+ public static GetTopologyDetailsInput buildGetTopologyDetailsInput(Uuid topoId) {
return new GetTopologyDetailsInputBuilder()
- .setTopologyIdOrName(topoName)
+ .setTopologyId(topoId)
.build();
}
- public static GetNodeDetailsInput buildGetNodeDetailsInput(String topoName, String nodeName) {
+ public static GetNodeDetailsInput buildGetNodeDetailsInput(Uuid topoId, Uuid nodeId) {
return new GetNodeDetailsInputBuilder()
- .setTopologyIdOrName(topoName)
- .setNodeIdOrName(nodeName)
+ .setTopologyId(topoId)
+ .setNodeId(nodeId)
.build();
}
- public static GetLinkDetailsInput buildGetLinkDetailsInput(String topoName, String linkName) {
+ public static GetLinkDetailsInput buildGetLinkDetailsInput(Uuid topoId, Uuid linkId) {
return new GetLinkDetailsInputBuilder()
- .setTopologyIdOrName(topoName)
- .setLinkIdOrName(linkName)
+ .setTopologyId(topoId)
+ .setLinkId(linkId)
.build();
}
public static GetServiceInterfacePointDetailsInput buildGetServiceInterfacePointDetailsInput(Uuid sipUuid) {
return new GetServiceInterfacePointDetailsInputBuilder()
- .setSipIdOrName(sipUuid.getValue())
+ .setUuid(sipUuid)
.build();
}
- public static GetNodeEdgePointDetailsInput buildGetNodeEdgePointDetailsInput(String topoName, String nodeName,
- String onepName) {
+ public static GetNodeEdgePointDetailsInput buildGetNodeEdgePointDetailsInput(Uuid topoId, Uuid nodeId,
+ Uuid onepId) {
return new GetNodeEdgePointDetailsInputBuilder()
- .setTopologyIdOrName(topoName)
- .setNodeIdOrName(nodeName)
- .setEpIdOrName(onepName)
+ .setTopologyId(topoId)
+ .setNodeId(nodeId)
+ .setNodeEdgePointId(onepId)
.build();
}
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>12.0.3</version>
+ <version>12.0.4</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>19.1.0</transportpce.models.version>
+ <transportpce.models.version>19.2.0</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>6.0.5</version>
+ <version>6.0.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.test.DataStoreContext;
import org.opendaylight.transportpce.test.converter.XMLDataObjectConverter;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.Network;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
response['switching-pool-lcp'][0]['switching-pool-type'])
self.assertEqual(1,
len(response['switching-pool-lcp'][0]['non-blocking-list']))
- self.assertIn(
- {'nbl-number': 2,
- 'lcp-list': ['XPDR2-NETWORK3', 'XPDR2-NETWORK4', 'XPDR2-CLIENT1', 'XPDR2-CLIENT3',
- 'XPDR2-CLIENT2', 'XPDR2-NETWORK1', 'XPDR2-CLIENT4', 'XPDR2-NETWORK2'],
- 'interconnect-bandwidth-unit': 1000000000,
- 'interconnect-bandwidth': 0},
- response['switching-pool-lcp'][0]['non-blocking-list'])
+ expected_sorted_list = ['XPDR2-CLIENT1', 'XPDR2-CLIENT2', 'XPDR2-CLIENT3', 'XPDR2-CLIENT4',
+ 'XPDR2-NETWORK1', 'XPDR2-NETWORK2', 'XPDR2-NETWORK3', 'XPDR2-NETWORK4']
+ expected_subset_response = {
+ "nbl-number": 2,
+ "interconnect-bandwidth-unit": 1000000000,
+ "interconnect-bandwidth": 0}
+ subset = {k: v for k, v in response['switching-pool-lcp'][0]['non-blocking-list'][0].items()
+ if k in expected_subset_response}
+ self.assertDictEqual(subset, expected_subset_response)
+ self.assertEqual(sorted(response['switching-pool-lcp'][0]['non-blocking-list'][0]['lcp-list']),
+ expected_sorted_list)
def test_20_spdr_switching_pool_3(self):
response = test_utils.get_portmapping_node_attr("SPDR-SA1", "switching-pool-lcp", "3")
]
}
}
+ SUBSET_NETWORK1_CHECK_DICT = {"logical-connection-point": "XPDR4-NETWORK1",
+ "supporting-port": "L1",
+ "port-direction": "bidirectional",
+ "port-qual": "xpdr-network",
+ "supporting-circuit-pack-name": "1/1/6-PLUG-NET",
+ "xpdr-type": "regen",
+ "port-admin-state": "InService",
+ "port-oper-state": "InService"
+ }
REGEN_CAPABILITIES = ["OTUC2-REGEN",
"OTUC3-REGEN",
"OTUC4-REGEN",
]
+ SUP_INT_CAPA = ["org-openroadm-port-types:if-otsi-otsigroup"]
NODE_VERSION = "7.1"
@classmethod
def test_05_get_portmapping_network1(self):
response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK1")
self.assertEqual(response["status_code"], requests.codes.ok)
- self.NETWORK1_CHECK_DICT["supporting-otucn"] = "XPDR4-NETWORK1-OTUC4"
- self.NETWORK1_CHECK_DICT["lcp-hash-val"] = "AKkLPpWaa8x+"
- self.NETWORK1_CHECK_DICT["connection-map-lcp"] = "XPDR4-NETWORK2"
- self.assertIn(
- self.NETWORK1_CHECK_DICT,
- response["mapping"])
+ self.SUBSET_NETWORK1_CHECK_DICT["supporting-otucn"] = "XPDR4-NETWORK1-OTUC4"
+ self.SUBSET_NETWORK1_CHECK_DICT["lcp-hash-val"] = "AKkLPpWaa8x+"
+ self.SUBSET_NETWORK1_CHECK_DICT["connection-map-lcp"] = "XPDR4-NETWORK2"
+ subset = {k: v for k, v in response["mapping"][0].items() if k in self.SUBSET_NETWORK1_CHECK_DICT}
+ self.assertDictEqual(subset, self.SUBSET_NETWORK1_CHECK_DICT)
+ self.assertEqual(sorted(response["mapping"][0]["regen-profiles"]["regen-profile"]),
+ self.REGEN_CAPABILITIES)
+ self.assertEqual(sorted(response["mapping"][0]["supported-interface-capability"]),
+ self.SUP_INT_CAPA)
def test_06_get_portmapping_network1(self):
response = test_utils.get_portmapping_node_attr("XPDR-A2", "mapping", "XPDR4-NETWORK2")
self.assertEqual(response["status_code"], requests.codes.ok)
- self.NETWORK1_CHECK_DICT["logical-connection-point"] = "XPDR4-NETWORK2"
- self.NETWORK1_CHECK_DICT["supporting-otucn"] = "XPDR4-NETWORK2-OTUC4"
- self.NETWORK1_CHECK_DICT["lcp-hash-val"] = "AKkLPpWaa8x9"
- self.NETWORK1_CHECK_DICT["connection-map-lcp"] = "XPDR4-NETWORK1"
- self.NETWORK1_CHECK_DICT["supporting-circuit-pack-name"] = "1/1/5-PLUG-NET"
- self.assertIn(
- self.NETWORK1_CHECK_DICT,
- response["mapping"])
+ self.SUBSET_NETWORK1_CHECK_DICT["logical-connection-point"] = "XPDR4-NETWORK2"
+ self.SUBSET_NETWORK1_CHECK_DICT["supporting-otucn"] = "XPDR4-NETWORK2-OTUC4"
+ self.SUBSET_NETWORK1_CHECK_DICT["lcp-hash-val"] = "AKkLPpWaa8x9"
+ self.SUBSET_NETWORK1_CHECK_DICT["connection-map-lcp"] = "XPDR4-NETWORK1"
+ self.SUBSET_NETWORK1_CHECK_DICT["supporting-circuit-pack-name"] = "1/1/5-PLUG-NET"
+ subset = {k: v for k, v in response["mapping"][0].items() if k in self.SUBSET_NETWORK1_CHECK_DICT}
+ self.assertDictEqual(subset, self.SUBSET_NETWORK1_CHECK_DICT)
+ self.assertEqual(sorted(response["mapping"][0]["regen-profiles"]["regen-profile"]),
+ self.REGEN_CAPABILITIES)
+ self.assertEqual(sorted(response["mapping"][0]["supported-interface-capability"]),
+ self.SUP_INT_CAPA)
def test_07_check_interface_oduc4(self):
response = test_utils.check_node_attribute_request(
T100GE = 'Transponder 100GE'
T0_MULTILAYER_TOPO = 'T0 - Multi-layer topology'
T0_FULL_MULTILAYER_TOPO = 'T0 - Full Multi-layer topology'
+T100GE_UUID = 'cf51c729-3699-308a-a7d0-594c6a62ebbb'
+T0_MULTILAYER_TOPO_UUID = '747c670e-7a07-3dab-b379-5b1cd17402a3'
+T0_FULL_MULTILAYER_TOPO_UUID = '393f09a4-0a0b-3d82-a4f6-1fbbc14ca1a7'
SIM_LOG_DIRECTORY = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'log')
"tail-retention": "no"}
}
- tapi_topo = {"topology-id-or-name": "TBD"}
+ tapi_topo = {"topology-id": "TBD"}
@classmethod
def setUpClass(cls):
print("execution of {}".format(self.id().split(".")[-1]))
def test_01_get_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
'node should contain 1 node rule group')
def test_02_get_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
def test_04_check_tapi_topos(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(len(response["output"]["topology"]["node"]), 1, 'Topology should contain 1 node')
self.assertNotIn("link", response["output"]["topology"], 'Topology should contain no link')
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
def test_07_check_tapi_topos(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
def test_10_check_tapi_topos(self):
self.test_01_get_tapi_topology_T100G()
-
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(1, len(response["output"]["topology"]["node"]), 'Topology should contain 1 node')
self.assertNotIn("link", response["output"]["topology"], 'Topology should contain no link')
- self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# 'node name should be: ROADM-infra')
+ nodes = response["output"]["topology"]["node"]
+ self.assertEqual("ROADM-infra",
+ response["output"]["topology"]["node"][0]["name"][count_position_name_from_value_name(
+ response["output"]["topology"]["node"][0]["name"], "otsi node name")]["value"],
'node name should be: ROADM-infra')
+ self.assertEqual(1, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
+ 'Topology should contain 1 otsi nodes')
self.assertIn("PHOTONIC_MEDIA", response["output"]["topology"]["node"][0]["layer-protocol-name"],
'Node layer protocol should contain PHOTONIC_MEDIA')
self.assertEqual(1, len(response["output"]["topology"]["node"][0]["node-rule-group"]),
time.sleep(2)
def test_13_check_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
'name of owned-node-edge-points should be XPDR-A1-XPDR1+DSR+XPDR1-CLIENT1')
def test_14_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(3, len(nodes), 'Topology should contain 3 nodes')
- self.assertEqual(2, len(links), 'Topology should contain 2 links')
+ self.assertEqual(2, len(nodes), 'Topology should contain 2 nodes')
+ self.assertEqual(1, len(links), 'Topology should contain 1 link')
self.assertEqual(2, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 2 otsi nodes')
self.assertEqual(1, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
'Topology should contain 1 dsr node')
- self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 1 transitional link')
- self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 1 oms link')
+ self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 1 ots link')
def test_15_connect_xpdrc(self):
response = test_utils.mount_device("XPDR-C1", ('xpdrc', self.NODE_VERSION))
time.sleep(2)
def test_18_check_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
'name of owned-node-edge-points should be XPDR-A1-XPDR1+DSR+XPDR1-CLIENT1')
def test_19_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
- self.assertEqual(4, len(links), 'Topology should contain 4 links')
+ self.assertEqual(3, len(nodes), 'Topology should contain 3 nodes')
+ self.assertEqual(2, len(links), 'Topology should contain 2 links')
self.assertEqual(3, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 3 otsi nodes')
self.assertEqual(2, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
'Topology should contain 2 dsr nodes')
- self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 2 transitional links')
- self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 2 oms links')
+ self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 2 ots links')
def test_20_connect_spdr_sa1(self):
response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
self.test_18_check_tapi_topology_T100G()
def test_29_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(9, len(nodes), 'Topology should contain 9 nodes')
- self.assertEqual(8, len(links), 'Topology should contain 8 links')
+ self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
+ self.assertEqual(4, len(links), 'Topology should contain 4 links')
self.assertEqual(5, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 5 otsi nodes')
self.assertEqual(4, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
'Topology should contain 4 dsr nodes')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 4 transitional links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 4 oms links')
+ self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 4 ots links')
def test_30_add_oms_attributes(self):
# Config ROADMA-ROADMC oms-attributes
time.sleep(self.WAITING)
def test_32_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(9, len(nodes), 'Topology should contain 9 nodes')
- self.assertEqual(9, len(links), 'Topology should contain 9 links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 4 transitional links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 4 oms links')
+ self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
+ self.assertEqual(5, len(links), 'Topology should contain 5 links')
+ self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 4 ots links')
self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 1 otn link')
for link in links:
if link["name"][0]["value"] == "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1":
self.assertEqual(100000, int(link["available-capacity"]["total-size"]["value"]),
'OTU4 link should have an available capacity of 100 000 Mbps')
- elif link["name"][0]["value-name"] == "transitional link name":
- self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
- 'link should have an available capacity of 100 Gbps')
+# elif link["name"][0]["value-name"] == "transitional link name":
+# self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
+# 'link should have an available capacity of 100 Gbps')
self.assertEqual(2, len(link["node-edge-point"]), 'link should have 2 neps')
def test_33_create_ODU4_service(self):
time.sleep(self.WAITING)
def test_34_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(9, len(nodes), 'Topology should contain 9 nodes')
- self.assertEqual(10, len(links), 'Topology should contain 10 links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 4 transitional links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 4 oms links')
+ self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
+ self.assertEqual(6, len(links), 'Topology should contain 6 links')
+ self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 4 ots links')
self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 2 otn links')
for link in links:
elif link["name"][0]["value"] == "ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1":
self.assertEqual(100000, int(link["available-capacity"]["total-size"]["value"]),
'ODU4 link should have an available capacity of 100 000 Mbps')
- elif link["name"][0]["value-name"] == "transitional link name":
- self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
- 'link should have an available capacity of 100 Gbps')
+# elif link["name"][0]["value-name"] == "transitional link name":
+# self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
+# 'link should have an available capacity of 100 Gbps')
self.assertEqual(2, len(link["node-edge-point"]), 'link should have 2 neps')
def test_35_connect_sprda_2_n2_to_roadma_pp3(self):
time.sleep(2)
def test_37_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(11, len(nodes), 'Topology should contain 11 nodes')
- self.assertEqual(12, len(links), 'Topology should contain 12 links')
+ self.assertEqual(6, len(nodes), 'Topology should contain 6 nodes')
+ self.assertEqual(7, len(links), 'Topology should contain 7 links')
self.assertEqual(6, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 6 otsi nodes')
- self.assertEqual(5, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
- 'Topology should contain 5 dsr nodes')
- self.assertEqual(5, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 5 transitional links')
- self.assertEqual(5, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 5 oms links')
+ self.assertEqual(5, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 5 ots links')
self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 2 otn links')
+ self.assertEqual(5, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
+ 'Topology should contain 5 dsr nodes')
def test_38_delete_ODU4_service(self):
self.del_serv_input_data["service-delete-req-info"]["service-name"] = "service1-ODU4"
time.sleep(self.WAITING)
def test_40_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(11, len(nodes), 'Topology should contain 11 nodes')
- self.assertEqual(10, len(links), 'Topology should contain 10 links')
+ self.assertEqual(6, len(nodes), 'Topology should contain 6 nodes')
+ self.assertEqual(5, len(links), 'Topology should contain 5 links')
self.assertEqual(0, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 0 otn link')
self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content))
def test_42_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(1, len(response["output"]["topology"]["node"]), 'Topology should contain 1 node')
self.assertNotIn("link", response["output"]["topology"], 'Topology should contain no link')
- self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# 'node name should be: ROADM-infra')
+ self.assertEqual("ROADM-infra",
+ response["output"]["topology"]["node"][0]["name"][count_position_name_from_value_name(
+ response["output"]["topology"]["node"][0]["name"], "otsi node name")]["value"],
'node name should be: ROADM-infra')
def test_43_get_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
def count_object_with_double_key(list_dicts, key1, key2, value):
nb = 0
for dictio in list_dicts:
- if dictio[key1][0][key2] == value:
- nb += 1
+ for name in dictio[key1]:
+ if name[key2] == value:
+ nb += 1
return nb
+def count_position_name_from_value_name(name, valuename):
+ nb = 0
+ index = 0
+ for names in name:
+ if names["value-name"] == valuename:
+ index = nb
+ nb += 1
+ return index
+
+
if __name__ == "__main__":
unittest.main(verbosity=2)
WAITING = 20 # nominal value is 300
NODE_VERSION = '2.2.1'
uuid_services = UuidServices()
+ uuidTpAiOTSI = "f4c370be-e307-380d-a31b-7edc2b431e5d"
+ uuidTpZiOTSI = "febb4502-6b27-3701-990b-3aa4941f48c4"
+ uuidTpADSR = "3aca9b37-bc46-335d-b147-2423690dee18"
+ uuidTpZDSR = "709d3595-6d56-3ad6-a3cd-5a4a09ce6f9d"
+# SIP uuids
+ # SIP+SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1 UUID IS
+ sAOTS = "38d81f55-1798-3520-ba16-08efa56630c4"
+ # SIP+SPDR-SC1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1 UUID IS
+ sZOTS = "97d9ba27-0efa-3010-8b98-b4d73240120c"
+ # SIP+SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1 UUID IS
+ sAeOTS = "f4dbce65-6191-3c84-b351-29ccb0629221"
+ # SIP+SPDR-SC1-XPDR1+eOTSi+XPDR1-NETWORK1 UUID IS
+ sZeOTS = "faabebd3-d7af-3389-96a7-261672744591"
+ # SIP+SPDR-SA1-XPDR1+DSR+XPDR1-CLIENT1 UUID IS
+ sADSR = "c14797a0-adcc-3875-a1fe-df8949d1a2d7"
+ # SIP+SPDR-SC1-XPDR1+DSR+XPDR1-CLIENT1 UUID IS
+ sZDSR = "25812ef2-625d-3bf8-af55-5e93946d1c22"
+ # SIP+SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1 UUID IS
+ sAeODU = "b6421484-531f-3444-adfc-e11c503f1fab"
+ # SIP+SPDR-SC1-XPDR1+eODU+XPDR1-CLIENT1 UUID IS
+ sZeODU = "4511fca7-0cf7-3b27-a128-3b372d5e1fa8"
+ # uuid_A = uuid.UUID(bytes("SPDR-SA1-XPDR1+DSR+eOTSI+XPDR1-NETWORK1", 'utf-8'))
+ # uuid_C = uuid.UUID(bytes("SPDR-SC1-XPDR1+DSR+eOTSI+XPDR1-NETWORK1", 'utf-8'))
cr_serv_input_data = {
"end-point": [
{
"layer-protocol-name": "PHOTONIC_MEDIA",
"service-interface-point": {
- "service-interface-point-uuid": "b1a0d883-32b8-3b0b-93d6-7ed074f6f107"
+ "service-interface-point-uuid": "c14797a0-adcc-3875-a1fe-df8949d1a2d7"
},
"administrative-state": "UNLOCKED",
"operational-state": "ENABLED",
{
"layer-protocol-name": "PHOTONIC_MEDIA",
"service-interface-point": {
- "service-interface-point-uuid": "d1d6305e-179b-346f-b02d-8260aebe1ce8"
+ "service-interface-point-uuid": "25812ef2-625d-3bf8-af55-5e93946d1c22"
},
"administrative-state": "UNLOCKED",
"operational-state": "ENABLED",
}
],
"connectivity-constraint": {
- "service-layer": "PHOTONIC_MEDIA",
"service-type": "POINT_TO_POINT_CONNECTIVITY",
"service-level": "Some service-level",
"requested-capacity": {
"total-size": {
"value": "100",
- "unit": "GB"
+ "unit": "tapi-common:CAPACITY_UNIT_GBPS"
}
}
},
- "state": "Some state"}
+ "topology-constraint": [
+ {
+ "local-id": "localIdTopoConstraint",
+ "name": [
+ {
+ "value-name": "Dumb constraint",
+ "value": "for debug1"
+ }
+ ]
+ }
+ ],
+ "state": "LOCKED",
+ "layer-protocol-name": "PHOTONIC_MEDIA"}
- del_serv_input_data = {"service-id-or-name": "TBD"}
+ del_serv_input_data = {"uuid": "TBD"}
- tapi_topo = {"topology-id-or-name": "TBD"}
+ tapi_topo = {"topology-id": "TBD"}
@classmethod
def setUpClass(cls):
'There should be 22 openroadm links')
def test_13_get_tapi_topology_details(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
self.assertEqual(response['status_code'], requests.codes.ok)
- self.assertEqual(len(response['output']['topology']['node']), 14, 'There should be 14 TAPI nodes')
- self.assertEqual(len(response['output']['topology']['link']), 15, 'There should be 15 TAPI links')
+ self.assertEqual(len(response['output']['topology']['node']), 8, 'There should be 8 TAPI nodes')
+ self.assertEqual(len(response['output']['topology']['link']), 3, 'There should be 3 TAPI links')
+ print(response['output']['topology']['node'][0])
+ print(response['output']['topology']['node'][1])
+ print(response['output']['topology']['node'][2])
def test_14_check_sip_details(self):
response = test_utils.transportpce_api_rpc_request(
'tapi-common', 'get-service-interface-point-list', None)
- self.assertEqual(len(response['output']['sip']), 60, 'There should be 60 service interface point')
+ self.assertEqual(len(response['output']['sip']), 72, 'There should be 72 service interface point')
# test create connectivity service from spdrA to spdrC for Photonic_media
def test_15_create_connectivity_service_PhotonicMedia(self):
+ self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = self.sAOTS
+ self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = self.sZOTS
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'create-connectivity-service', self.cr_serv_input_data)
time.sleep(self.WAITING)
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'PHOTONIC_MEDIA',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ # 'service-layer': 'PHOTONIC_MEDIA',
+ 'layer-protocol-name': 'PHOTONIC_MEDIA',
+ # 'connectivity-direction': 'BIDIRECTIONAL'
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'SPDR-SC1-XPDR1'}
# test create connectivity service from spdrA to spdrC for odu
def test_17_create_connectivity_service_ODU(self):
# pylint: disable=line-too-long
+ self.cr_serv_input_data["layer-protocol-name"] = "ODU"
self.cr_serv_input_data["end-point"][0]["layer-protocol-name"] = "ODU"
- self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = "5efda776-f8de-3e0b-9bbd-2c702e210946"
+ self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = self.sAeODU
self.cr_serv_input_data["end-point"][1]["layer-protocol-name"] = "ODU"
- self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = "8116d0af-39fa-3df5-bed2-dd2cd5e8217d"
- self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "ODU"
+ self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = self.sZeODU
+# self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "ODU"
self.cr_serv_input_data["connectivity-constraint"]["service-level"] = self.uuid_services.pm
response = test_utils.transportpce_api_rpc_request(
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'ODU',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ 'layer-protocol-name': 'ODU',
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'SPDR-SC1-XPDR1'}
# test create connectivity service from spdrA to spdrC for dsr
def test_19_create_connectivity_service_DSR(self):
# pylint: disable=line-too-long
+ self.cr_serv_input_data["layer-protocol-name"] = "DSR"
self.cr_serv_input_data["end-point"][0]["layer-protocol-name"] = "DSR"
- self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = "c14797a0-adcc-3875-a1fe-df8949d1a2d7"
+ self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = self.sADSR
self.cr_serv_input_data["end-point"][1]["layer-protocol-name"] = "DSR"
- self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = "25812ef2-625d-3bf8-af55-5e93946d1c22"
- self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "DSR"
+ self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = self.sZDSR
+# self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "DSR"
self.cr_serv_input_data["connectivity-constraint"]["requested-capacity"]["total-size"]["value"] = "10"
self.cr_serv_input_data["connectivity-constraint"]["service-level"] = self.uuid_services.odu
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'DSR',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ 'layer-protocol-name': 'DSR',
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'SPDR-SC1-XPDR1'}
for ele in liste_service:
if ele['uuid'] == self.uuid_services.pm:
self.assertEqual(ele['operational-state'], 'ENABLED')
- self.assertEqual(ele['service-layer'], 'PHOTONIC_MEDIA')
+# self.assertEqual(ele['service-layer'], 'PHOTONIC_MEDIA')
+ self.assertEqual(ele['layer-protocol-name'], 'PHOTONIC_MEDIA')
nbconnection = len(ele['connection'])
self.assertEqual(nbconnection, 3, 'There should be 3 connections')
elif ele['uuid'] == self.uuid_services.odu:
self.assertEqual(ele['operational-state'], 'ENABLED')
- self.assertEqual(ele['service-layer'], 'ODU')
+# self.assertEqual(ele['service-layer'], 'ODU')
+ self.assertEqual(ele['layer-protocol-name'], 'ODU')
nbconnection = len(ele['connection'])
self.assertEqual(nbconnection, 1, 'There should be 1 connections')
elif ele['uuid'] == self.uuid_services.dsr:
self.assertEqual(ele['operational-state'], 'ENABLED')
- self.assertEqual(ele['service-layer'], 'DSR')
+# self.assertEqual(ele['service-layer'], 'DSR')
+ self.assertEqual(ele['layer-protocol-name'], 'DSR')
nbconnection = len(ele['connection'])
self.assertEqual(nbconnection, 2, 'There should be 2 connections')
else:
time.sleep(2)
def test_22_delete_connectivity_service_DSR(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.dsr)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.dsr)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response["status_code"], (requests.codes.ok, requests.codes.no_content))
time.sleep(self.WAITING)
def test_23_delete_connectivity_service_ODU(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.odu)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.odu)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response["status_code"], (requests.codes.ok, requests.codes.no_content))
time.sleep(self.WAITING)
def test_24_delete_connectivity_service_PhotonicMedia(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.pm)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.pm)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response["status_code"], (requests.codes.ok, requests.codes.no_content))
self.odu = None
self.dsr = None
self.eth = None
+# XPDR-A1-XPDR1+XPONDER Uuid is:
+# 4378fc29-6408-39ec-8737-5008c3dc49e5
+# XPDR-C1-XPDR1+XPONDER Uuid is:
+# 1770bea4-b1da-3b20-abce-7d182c0ec0df
+# ROADM-A1+PHOTONIC_MEDIA Uuid is:
+# 3b726367-6f2d-3e3f-9033-d99b61459075
class TransportPCEFulltesting(unittest.TestCase):
}
],
"connectivity-constraint": {
- "service-layer": "ETH",
+ # "service-layer": "ETH",
"service-type": "POINT_TO_POINT_CONNECTIVITY",
"service-level": "Some service-level",
"requested-capacity": {
"total-size": {
"value": "100",
- "unit": "GB"
+ "unit": "tapi-common:CAPACITY_UNIT_GBPS"
}
}
},
- "state": "Some state"
+ "topology-constraint": [
+ {
+ "local-id": "localIdTopoConstraint",
+ "name": [
+ {
+ "value-name": "Dumb constraint",
+ "value": "for debug1"
+ }
+ ]
+ }
+ ],
+ "state": "LOCKED",
+ "layer-protocol-name": "ETH"
}
- del_serv_input_data = {"service-id-or-name": "TBD"}
+ del_serv_input_data = {"uuid": "TBD"}
- tapi_topo = {"topology-id-or-name": "TBD"}
+ tapi_topo = {"topology-id": "TBD"}
node_details = {
- "topology-id-or-name": "TBD",
- "node-id-or-name": "TBD"
+ "topology-id": "TBD",
+ "node-id": "TBD"
}
- tapi_serv_details = {"service-id-or-name": "TBD"}
+ tapi_serv_details = {"uuid": "TBD"}
processes = []
uuid_services = UuidServices()
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'ETH',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ # 'service-layer': 'ETH',
+ 'layer-protocol-name': 'ETH',
+ # 'connectivity-direction': 'BIDIRECTIONAL'
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'XPDR-C1-XPDR1'}
time.sleep(1)
def test_13_get_connectivity_service_Ethernet(self):
- self.tapi_serv_details["service-id-or-name"] = str(self.uuid_services.eth)
+ self.tapi_serv_details["uuid"] = str(self.uuid_services.eth)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'get-connectivity-service-details', self.tapi_serv_details)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(link['org-openroadm-common-network:operational-state'], 'inService')
self.assertEqual(link['org-openroadm-common-network:administrative-state'], 'inService')
self.assertEqual(nb_updated_link, 2, "Only two xponder-output/input links should have been modified")
- time.sleep(1)
+ time.sleep(10)
def test_17_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["node-id"] = "1770bea4-b1da-3b20-abce-7d182c0ec0df"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+DSR"
- response = test_utils.transportpce_api_rpc_request(
- 'tapi-topology', 'get-node-details', self.node_details)
- self.assertEqual(response['status_code'], requests.codes.ok)
- nep_list = response['output']['node']['owned-node-edge-point']
- for nep in nep_list:
- if 'XPDR1-NETWORK1' in nep['name'][0]['value']:
- self.assertEqual(nep['operational-state'], 'DISABLED',
- "Operational State should be 'DISABLED'")
- self.assertEqual(nep['administrative-state'], 'LOCKED',
- "Administrative State should be 'LOCKED'")
- nb_updated_neps += 1
- else:
- self.assertEqual(nep['operational-state'], 'ENABLED',
- "Operational State should be 'ENABLED'")
- self.assertEqual(nep['administrative-state'], 'UNLOCKED',
- "Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 4, "Only two xponder neps should have been modified")
+ self.node_details["node-id"] = "XPDR-C1-XPDR1+DSR"
+# response = test_utils.transportpce_api_rpc_request(
+# 'tapi-topology', 'get-node-details', self.node_details)
+# self.assertEqual(response['status_code'], requests.codes.ok)
+# nep_list = response['output']['node']['owned-node-edge-point']
+# for nep in nep_list:
+# if 'XPDR1-NETWORK1' in nep['name'][0]['value']:
+# self.assertEqual(nep['operational-state'], 'DISABLED',
+# "Operational State should be 'DISABLED'")
+# self.assertEqual(nep['administrative-state'], 'LOCKED',
+# "Administrative State should be 'LOCKED'")
+# nb_updated_neps += 1
+# else:
+# self.assertEqual(nep['operational-state'], 'ENABLED',
+# "Operational State should be 'ENABLED'")
+# self.assertEqual(nep['administrative-state'], 'UNLOCKED',
+# "Administrative State should be 'UNLOCKED'")
+ self.assertEqual(nb_updated_neps, 3, "3 xponder neps (OTS, OTSI_MC, eODU) should have been modified")
time.sleep(1)
def test_18_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
else:
self.assertEqual(link['operational-state'], 'ENABLED')
self.assertEqual(link['administrative-state'], 'UNLOCKED')
- self.assertEqual(nb_updated_link, 2,
- "Only two xponder-output/input & xponder-transi links should have been modified")
+ self.assertEqual(nb_updated_link, 1,
+ "Only one xponder-output/input bidirectional link should have been modified")
time.sleep(1)
def test_19_check_update_service_Ethernet(self):
self.assertEqual(response['services'][0]['administrative-state'], 'inService')
def test_20_check_update_connectivity_service_Ethernet(self):
- self.tapi_serv_details["service-id-or-name"] = str(self.uuid_services.eth)
+ self.tapi_serv_details["uuid"] = str(self.uuid_services.eth)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'get-connectivity-service-details', self.tapi_serv_details)
self.assertEqual(response['status_code'], requests.codes.ok)
time.sleep(1)
def test_24_check_update_tapi_neps_ok(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["node-id"] = "1770bea4-b1da-3b20-abce-7d182c0ec0df"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+DSR"
- response = test_utils.transportpce_api_rpc_request(
- 'tapi-topology', 'get-node-details', self.node_details)
- self.assertEqual(response['status_code'], requests.codes.ok)
- nep_list = response['output']['node']['owned-node-edge-point']
- for nep in nep_list:
- self.assertEqual(nep['operational-state'], 'ENABLED',
- "Operational State should be 'ENABLED'")
- self.assertEqual(nep['administrative-state'], 'UNLOCKED',
- "Administrative State should be 'UNLOCKED'")
+# self.node_details["node-id"] = "XPDR-C1-XPDR1+DSR"
+# response = test_utils.transportpce_api_rpc_request(
+# 'tapi-topology', 'get-node-details', self.node_details)
+# self.assertEqual(response['status_code'], requests.codes.ok)
+# nep_list = response['output']['node']['owned-node-edge-point']
+# for nep in nep_list:
+# self.assertEqual(nep['operational-state'], 'ENABLED',
+# "Operational State should be 'ENABLED'")
+# self.assertEqual(nep['administrative-state'], 'UNLOCKED',
+# "Administrative State should be 'UNLOCKED'")
time.sleep(1)
def test_25_check_update_tapi_links_ok(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
time.sleep(1)
def test_31_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 3, "Only three roadm neps should have been modified")
+ self.assertEqual(nb_updated_neps, 2, "Only 2 roadm SRG-PP nep (OTS/MC)should have been modified")
time.sleep(1)
def test_32_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
self.test_23_check_update_openroadm_topo_ok()
def test_38_check_update_tapi_neps_ok(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
time.sleep(1)
def test_45_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 3, "Only three roadm neps should have been modified")
+ self.assertEqual(nb_updated_neps, 4, "4 roadm NEPS should have been modified (OTS/OMS/MC/OTSI_MC")
time.sleep(1)
def test_46_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
time.sleep(1)
def test_59_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = uuid.UUID(bytes="ROADM-A1+PHOTONIC_MEDIA".bytes)
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 3, "Only three roadm neps should have been modified")
+ self.assertEqual(nb_updated_neps, 1, "Only 1 roadm neps OTS should have been modified for SRG2PP")
time.sleep(1)
def test_60_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
self.test_13_get_connectivity_service_Ethernet()
def test_63_delete_connectivity_service_Ethernet(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.eth)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.eth)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response['status_code'], (requests.codes.ok, requests.codes.no_content))