<artifactId>transportpce-ordmodels-service</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}.ordmodels</groupId>
+ <artifactId>transportpce-ordmodels-network</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>transportpce-tapimodels</artifactId>
import org-openroadm-common-state-types {
prefix org-openroadm-common-state-types;
}
+ import tapi-common {
+ prefix tapi-common;
+ revision-date 2018-12-10;
+ }
+ import tapi-notification {
+ prefix tapi-notification;
+ revision-date 2018-12-10;
+ }
organization
"transportPCE";
"YANG definitions for using REST API in NBI notifications module. Copyright
(c) 2020 ORANGE and others. All rights reserved.";
+ revision 2021-10-13 {
+ description
+ "Implement new models, RPC for TAPI service notification";
+ }
+
revision 2021-08-13 {
description
"Rename the groupings, containers and RPCs";
}
}
+ grouping notification-tapi-service {
+ leaf notification-type {
+ type tapi-notification:notification-type;
+ description "none";
+ }
+ leaf target-object-type {
+ type tapi-notification:object-type;
+ description "none";
+ }
+ leaf target-object-identifier {
+ type tapi-common:uuid;
+ description "none";
+ }
+ list target-object-name {
+ key 'value-name';
+ min-elements 1;
+ uses tapi-common:name-and-value;
+ description "none";
+ }
+ leaf event-time-stamp {
+ type tapi-common:date-and-time;
+ description "none";
+ }
+ leaf sequence-number {
+ type uint64;
+ config false;
+ description "A monotonous increasing sequence number associated with the notification.
+ The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";
+ }
+ leaf source-indicator {
+ type tapi-notification:source-indicator;
+ description "none";
+ }
+ leaf layer-protocol-name {
+ type tapi-common:layer-protocol-name;
+ description "none";
+ }
+ list changed-attributes {
+ key 'value-name';
+ uses tapi-notification:name-and-value-change;
+ description "none";
+ }
+ list additional-info {
+ key 'value-name';
+ uses tapi-common:name-and-value;
+ description "none";
+ }
+ leaf additional-text {
+ 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;
+ description "none";
+ }
+
container notification-process-service {
description
"Model used to send a notification from a service request";
uses notification-alarm-service;
}
+ container notification-tapi-service {
+ description
+ "Model used to send a tapi notification";
+ uses notification-tapi-service;
+ }
+
rpc get-notifications-process-service {
description "Get the notifications service sent by ServiceHandler through filtering connection type";
input {
}
uses notification-alarm-service;
}
+
+ notification publish-tapi-notification-service {
+ description "Publish the TAPI notifications service for topic";
+ leaf topic {
+ type string;
+ mandatory true;
+ description
+ "Topic where to send the notification service";
+ }
+ uses tapi-notification:notification;
+ }
}
module transportpce-networkutils {
- yang-version 1;
+ yang-version 1.1;
namespace "http://org/opendaylight/transportpce/networkutils";
prefix org-opendaylight-transportpce-networkutils;
+ import ietf-network {
+ prefix nd;
+ revision-date 2018-02-26;
+ }
+ import ietf-network-topology {
+ prefix nwt;
+ revision-date 2018-02-26;
+ }
+ import org-openroadm-common-network {
+ prefix cnet;
+ revision-date 2021-12-10;
+ }
+
+ revision 2022-06-30 {
+ description
+ "Add transportpce augmentation to manage otn-link-type in otn-topology";
+ }
+
revision 2017-08-18 {
description
"Initial revision of networkutils model";
}
+ typedef otn-link-type {
+ type enumeration {
+ enum "OTU4" {
+ value 0;
+ }
+ enum "ODU4" {
+ value 1;
+ }
+ enum "ODTU4" {
+ value 2;
+ }
+ enum "ODU2e" {
+ value 3;
+ }
+ enum "ODU0" {
+ value 4;
+ }
+ enum "OTUC4" {
+ value 5;
+ }
+ enum "ODUC4" {
+ value 6;
+ }
+ enum "OTUC3" {
+ value 7;
+ }
+ enum "ODUC3" {
+ value 8;
+ }
+ enum "OTUC2" {
+ value 9;
+ }
+ enum "ODUC2" {
+ value 10;
+ }
+ }
+ }
+
grouping links-input-grouping {
container links-input {
description
}
}
}
+
+ augment "/nd:networks/nd:network/nwt:link" {
+ when "../nd:network-types/cnet:openroadm-common-network/otn-topology";
+ description
+ "Defines more accurate otn link types to differentiate otn links in otn-topology";
+ leaf otn-link-type {
+ when
+ "../cnet:link-type = 'OTN-LINK'";
+ type otn-link-type;
+ description
+ "type of otn link, to help link management inside transportpce";
+ }
+ }
}
import org.opendaylight.mdsal.binding.api.NotificationService;
import org.opendaylight.transportpce.dmaap.client.listener.NbiNotificationsListenerImpl;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NbiNotificationsListener;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsListener;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.rev210813.NbiNotificationsListener;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsListener;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishTapiNotificationService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Override
public void onPublishNotificationAlarmService(PublishNotificationAlarmService notification) {
-
}
+ @Override
+ public void onPublishTapiNotificationService(PublishTapiNotificationService notification) {
+ }
}
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.rev210813.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
@Path("/events")
public interface EventsApi {
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.endpoint.TxDirection;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.lgx.Lgx;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.port.Port;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceAEnd;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.rev210813.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.rev210813.notification.process.service.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.rev210813.notification.process.service.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.rev211210.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.rev210813.NbiNotificationsListener;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsListener;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceZEndBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint8;
import org.slf4j.LoggerFactory;
relying on open models, each of them communicating through published APIs.
-.. figure:: ./images/TransportPCE-Diagram-Phosphorus.jpg
+.. figure:: ./images/TransportPCE-Diagram-Sulfur.jpg
:alt: TransportPCE architecture
TransportPCE architecture
This feature allows TransportPCE application to expose at its northbound interface other APIs than
those defined by the OpenROADM MSA. With this feature, TransportPCE provides part of the Transport-API
-specified by the Open Networking Foundation. More specifically, the Topology Service and Connectivity
-Service components are implemented, allowing to expose to higher level applications an abstraction of
-its OpenROADM topologies in the form of topologies respecting the T-API modelling, as well as
-creating/deleting connectivity services between the Service Interface Points (SIPs) exposed by the
-T-API topology. The current version of TransportPCE implements the *tapi-topology.yang* and
-*tapi-connectivity.yang* models in the revision 2018-12-10 (T-API v2.1.2).
+specified by the Open Networking Foundation. More specifically, the Topology Service, Connectivity and Notification
+Service components are implemented, allowing to:
-Additionally, support for the Notification Service component will be added in future releases, which
-will allow higher level applications to create/delete a Notification Subscription Service to receive
-several T-API notifications as defined in the *tapi-notification.yang* model.
+1. Expose to higher level applications an abstraction of its OpenROADM topologies in the form of topologies respecting the T-API modelling.
+2. Create/delete connectivity services between the Service Interface Points (SIPs) exposed by the T-API topology.
+3. Create/Delete Notification Subscription Service to expose to higher level applications T-API notifications through a Kafka server.
+
+The current version of TransportPCE implements the *tapi-topology.yang*,
+*tapi-connectivity.yang* and *tapi-notification.yang* models in the revision
+2018-12-10 (T-API v2.1.2).
+
+Additionally, support for the Path Computation Service will be added in future releases, which will allow T-PCE
+to compute a path over the T-API topology.
T-API Topology Service
~~~~~~~~~~~~~~~~~~~~~~
{
"tapi-topology:input": {
"tapi-topology:topology-id-or-name": "T0 - Full Multi-layer topology",
- "tapi-topology:node-id-or-name": "ROADM-A1+PHOTONINC_MEDIA"
+ "tapi-topology:node-id-or-name": "ROADM-A1+PHOTONIC_MEDIA"
}
}
{
"tapi-topology:input": {
"tapi-topology:topology-id-or-name": "T0 - Full Multi-layer topology",
- "tapi-topology:node-id-or-name": "ROADM-A1+PHOTONINC_MEDIA",
- "tapi-topology:ep-id-or-name": "ROADM-A1+PHOTONINC_MEDIA+DEG1-TTP-TXRX"
+ "tapi-topology:node-id-or-name": "ROADM-A1+PHOTONIC_MEDIA",
+ "tapi-topology:ep-id-or-name": "ROADM-A1+PHOTONIC_MEDIA+DEG1-TTP-TXRX"
}
}
T-API Notification Service
~~~~~~~~~~~~~~~~~~~~~~~~~~
-In future releases, the T-API notification service will be implemented. The objective will be to write and read
-T-API notifications stored in topics of a Kafka server as explained later in the odl-transportpce-nbinotifications
-section, but T-API based.
+- RPC calls implemented:
+
+ - create-notification-subscription-service
+
+ - get-supported-notification-types
+
+ - delete-notification-subscription-service
+
+ - get-notification-subscription-service-details
+
+ - get-notification-subscription-service-list
+
+ - get-notification-list
+
+Sulfur SR1 extends the T-API interface support by implementing the T-API notification service. This feature
+allows TransportPCE to write and read tapi-notifications stored in topics of a Kafka server. It also upgrades
+the nbinotifications module to support the serialization and deserialization of tapi-notifications into JSON
+format and vice-versa. Current implementation of the notification service creates a Kafka topic and stores
+tapi-notification on reception of a create-notification-subscription-service request. Only connectivity-service
+related notifications are stored in the Kafka server.
+
+In comparison with openroadm notifications, in which several pre-defined kafka topics are created on nbinotification
+module instantiation, tapi-related kafka topics are created on-demand. Upon reception of a
+*create-notification-subscription-service request*, a new topic will be created in the Kafka server.
+This topic is named after the connectivity-service UUID.
+
+.. note::
+ Creating a Notification Subscription Service could include a list of T-API object UUIDs, therefore 1 topic per UUID
+ is created in the Kafka server.
+
+In the current implementation, only Connectivity Service related notification are supported.
+
+**REST API** : *POST /restconf/operations/tapi-notification:get-supported-notification-types*
+
+The response body will include the type of notifications supported and the object types
+
+Use the following RPC to create a Notification Subscription Service.
+
+**REST API** : *POST /restconf/operations/tapi-notification:create-notification-subscription-service*
+
+**Sample JSON Data**
+
+.. code:: json
+
+ {
+ "tapi-notification:input": {
+ "tapi-notification:subscription-filter": {
+ "tapi-notification:requested-notification-types": [
+ "ALARM_EVENT"
+ ],
+ "tapi-notification:requested-object-types": [
+ "CONNECTIVITY_SERVICE"
+ ],
+ "tapi-notification:requested-layer-protocols": [
+ "<LAYER_PROTOCOL_NAME>"
+ ],
+ "tapi-notification:requested-object-identifier": [
+ "<Service_UUID>"
+ ],
+ "tapi-notification:include-content": true,
+ "tapi-notification:local-id": "localId",
+ "tapi-notification:name": [
+ {
+ "tapi-notification:value-name": "Subscription name",
+ "tapi-notification:value": "<notification_service_name>"
+ }
+ ]
+ },
+ "tapi-notification:subscription-state": "ACTIVE"
+ }
+ }
+
+This call will return the *UUID* of the Notification Subscription service, which can later be used to retrieve the
+details of the created subscription, to delete the subscription (and all the related kafka topics) or to retrieve
+all the tapi notifications related to that subscription service.
+
+The figure below shows an example of the application of tapi and nbinotifications in order to notify when there is
+a connectivity service creation process. Depending on the status of the process a tapi-notification with the
+corresponding updated state of the connectivity service is sent to the topic "Service_UUID".
+
+.. figure:: ./images/TransportPCE-tapi-nbinotifications-service-example.jpg
+ :alt: Example of tapi connectivity service notifications using the feature nbinotifications in TransportPCE
+
+Additionally, when a connectivity service breaks down or is restored a tapi notification alarming the new status
+will be sent to a Kafka Server. Below an example of a tapi notification is shown.
+
+**Sample JSON T-API notification**
+
+.. code:: json
+
+ {
+ "nbi-notifications:notification-tapi-service": {
+ "layer-protocol-name": "<LAYER_PROTOCOL_NAME>",
+ "notification-type": "ATTRIBUTE_VALUE_CHANGE",
+ "changed-attributes": [
+ {
+ "value-name": "administrativeState",
+ "old-value": "<LOCKED_OR_UNLOCKED>",
+ "new-value": "<UNLOCKED_OR_LOCKED>"
+ },
+ {
+ "value-name": "operationalState",
+ "old-value": "DISABLED_OR_ENABLED",
+ "new-value": "ENABLED_OR_DISABLED"
+ }
+ ],
+ "target-object-name": [
+ {
+ "value-name": "Connectivity Service Name",
+ "value": "<SERVICE_UUID>"
+ }
+ ],
+ "uuid": "<NOTIFICATION_UUID>",
+ "target-object-type": "CONNECTIVITY_SERVICE",
+ "event-time-stamp": "2022-04-06T09:06:01+00:00",
+ "target-object-identifier": "<SERVICE_UUID>"
+ }
+ }
+
+To retrieve these tapi connectivity service notifications stored in the kafka server:
+
+**REST API** : *POST /restconf/operations/tapi-notification:get-notification-list*
+
+**Sample JSON Data**
+
+.. code:: json
+
+ {
+ "tapi-notification:input": {
+ "tapi-notification:subscription-id-or-name": "<SUBSCRIPTION_UUID_OR_NAME>",
+ "tapi-notification:time-period": "time-period"
+ }
+ }
+Further development will support more types of T-API objects, i.e., node, link, topology, connection...
odl-transportpce-dmaap-client
-----------------------------
<parent>
<groupId>io.lighty.core</groupId>
<artifactId>lighty-app-parent</artifactId>
- <version>16.0.0</version>
+ <version>16.1.0</version>
<relativePath/>
</parent>
import org.opendaylight.transportpce.tapi.topology.TapiPortMappingListener;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiListener;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.TransportpceNetworkutilsService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.OrgOpenroadmServiceService;
R2RTapiLinkDiscovery tapilinkDiscoveryImpl = new R2RTapiLinkDiscovery(networkTransaction,
deviceTransactionManager, tapiLink);
TapiRendererListenerImpl tapiRendererListenerImpl = new TapiRendererListenerImpl(lightyServices
- .getBindingDataBroker());
+ .getBindingDataBroker(), lightyServices.getBindingNotificationPublishService());
TapiPceListenerImpl tapiPceListenerImpl = new TapiPceListenerImpl(lightyServices.getBindingDataBroker());
TapiServiceHandlerListenerImpl tapiServiceHandlerListener = new TapiServiceHandlerListenerImpl(
lightyServices.getBindingDataBroker());
TapiPortMappingListener tapiPortMappingListener =
new TapiPortMappingListener(tapiNetworkModelService);
TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl =
- new TapiNetworkModelListenerImpl(networkTransaction);
+ new TapiNetworkModelListenerImpl(networkTransaction,
+ lightyServices.getBindingNotificationPublishService());
tapiProvider = initTapi(lightyServices, servicehandler, networkTransaction, serviceDataStoreOperations,
tapiNetConfTopologyListener, tapiPortMappingListener, tapiNetworkutilsServiceImpl,
if (activateNbiNotification) {
LOG.info("Creating nbi-notifications beans ...");
nbiNotificationsProvider = new NbiNotificationsProvider(
- publisherServiceList, publisherAlarmList, null, null, lightyServices.getRpcProviderService(),
- lightyServices.getNotificationService(), lightyServices.getAdapterContext().currentSerializer());
+ publisherServiceList, publisherAlarmList, null, null, lightyServices.getRpcProviderService(),
+ lightyServices.getNotificationService(), lightyServices.getAdapterContext().currentSerializer(),
+ networkTransaction);
}
}
// API models / opendaylight
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.alarmsuppression.rev171102
.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.$YangModuleInfoImpl
.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.$YangModuleInfoImpl
.getInstance(),
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModuleInfoImpl
.getInstance(),
.getInstance(),
org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.$YangModuleInfoImpl
.getInstance());
private static final Set<YangModuleInfo> TPCE_YANG_MODEL = Stream.concat(
<artifactId>transportpce-api</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>transportpce-tapimodels</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>transportpce-common</artifactId>
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.kafka.common.TopicPartition;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
Properties propsConsumer = NbiNotificationsUtils.loadProperties("subscriber.properties");
propsConsumer.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
propsConsumer.put(ConsumerConfig.CLIENT_ID_CONFIG, id);
+ propsConsumer.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
propsConsumer.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
propsConsumer.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG , deserializerConf);
propsConsumer.put(ConfigConstants.CONVERTER , deserializer);
final ConsumerRecords<String, D> consumerRecords = consumer.poll(Duration.ofMillis(1000));
List<D> notificationServiceList = new ArrayList<>();
YangInstanceIdentifier.of(name);
- for (ConsumerRecord<String, D> record : consumerRecords) {
+ for (ConsumerRecord<String, D> record : consumerRecords.records(new TopicPartition(topicName, 0))) {
if (record.value() != null) {
notificationServiceList.add(record.value());
}
package org.opendaylight.transportpce.nbinotifications.impl;
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 java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ExecutionException;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.nbinotifications.consumer.Subscriber;
import org.opendaylight.transportpce.nbinotifications.serialization.NotificationAlarmServiceDeserializer;
import org.opendaylight.transportpce.nbinotifications.serialization.NotificationServiceDeserializer;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsAlarmServiceInput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsAlarmServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsAlarmServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsProcessServiceInput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsProcessServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsProcessServiceOutputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NbiNotificationsService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.transportpce.nbinotifications.serialization.TapiNotificationDeserializer;
+import org.opendaylight.transportpce.nbinotifications.utils.TopicManager;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceInput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceInput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceOutputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.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.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.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.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.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.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.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.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.ErrorType;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class NbiNotificationsImpl implements NbiNotificationsService {
+public class NbiNotificationsImpl implements NbiNotificationsService, TapiNotificationService {
private static final Logger LOG = LoggerFactory.getLogger(NbiNotificationsImpl.class);
private final JsonStringConverter<NotificationProcessService> converterService;
private final JsonStringConverter<NotificationAlarmService> converterAlarmService;
+ private final JsonStringConverter<NotificationTapiService> converterTapiService;
private final String server;
+ private final NetworkTransactionService networkTransactionService;
+ private final TopicManager topicManager;
public NbiNotificationsImpl(JsonStringConverter<NotificationProcessService> converterService,
- JsonStringConverter<NotificationAlarmService> converterAlarmService, String server) {
+ JsonStringConverter<NotificationAlarmService> converterAlarmService,
+ JsonStringConverter<NotificationTapiService> converterTapiService, String server,
+ NetworkTransactionService networkTransactionService, TopicManager topicManager) {
this.converterService = converterService;
this.converterAlarmService = converterAlarmService;
+ this.converterTapiService = converterTapiService;
this.server = server;
+ this.networkTransactionService = networkTransactionService;
+ this.topicManager = topicManager;
}
@Override
return RpcResultBuilder.success(new GetNotificationsAlarmServiceOutputBuilder()
.setNotificationsAlarmService(notificationAlarmServiceList).build()).buildFuture();
}
+
+ @Override
+ public ListenableFuture<RpcResult<GetSupportedNotificationTypesOutput>>
+ getSupportedNotificationTypes(GetSupportedNotificationTypesInput input) {
+ NotificationContext notificationContext = getNotificationContext();
+ if (notificationContext == null) {
+ return RpcResultBuilder.<GetSupportedNotificationTypesOutput>failed()
+ .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());
+ }
+ }
+ return RpcResultBuilder.success(new GetSupportedNotificationTypesOutputBuilder()
+ .setSupportedNotificationTypes(notificationTypeList)
+ .setSupportedObjectTypes(objectTypeList).build()).buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<CreateNotificationSubscriptionServiceOutput>>
+ createNotificationSubscriptionService(CreateNotificationSubscriptionServiceInput input) {
+ for (Uuid uuid:input.getSubscriptionFilter().getRequestedObjectIdentifier()) {
+ LOG.info("Adding T-API topic: {} to Kafka server", uuid.getValue());
+ this.topicManager.addTapiTopic(uuid.getValue());
+ }
+ SubscriptionFilter subscriptionFilter = new SubscriptionFilterBuilder()
+ .setName(input.getSubscriptionFilter().getName())
+ .setLocalId(input.getSubscriptionFilter().getLocalId())
+ .setIncludeContent(input.getSubscriptionFilter().getIncludeContent())
+ .setRequestedNotificationTypes(input.getSubscriptionFilter().getRequestedNotificationTypes())
+ .setRequestedLayerProtocols(input.getSubscriptionFilter().getRequestedLayerProtocols())
+ .setRequestedObjectIdentifier(input.getSubscriptionFilter().getRequestedObjectIdentifier())
+ .setRequestedObjectTypes(input.getSubscriptionFilter().getRequestedObjectTypes())
+ .build();
+ Uuid notifSubscriptionUuid = new Uuid(UUID.randomUUID().toString());
+ SubscriptionService subscriptionService = new SubscriptionServiceBuilder()
+ .setSubscriptionFilter(subscriptionFilter)
+ .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)
+ .setName(subscriptionService.getName())
+ .build();
+ NotificationContext notificationContext = getNotificationContext();
+ Map<NotifSubscriptionKey, NotifSubscription> notifSubscriptions = new HashMap<>();
+ if (notificationContext != null && notificationContext.getNotifSubscription() != null) {
+ notifSubscriptions.putAll(notificationContext.getNotifSubscription());
+ }
+ notifSubscriptions.put(notifSubscriptionKey, notifSubscription);
+ NotificationContext notificationContext1 = new NotificationContextBuilder()
+ .setNotification(notificationContext == null ? new HashMap<>() : notificationContext.getNotification())
+ .setNotifSubscription(notifSubscriptions)
+ .build();
+ if (!updateNotificationContext(notificationContext1)) {
+ LOG.error("Failed to update Notification context");
+ return RpcResultBuilder.<CreateNotificationSubscriptionServiceOutput>failed()
+ .withError(ErrorType.RPC, "Failed to update notification context").buildFuture();
+ }
+ CreateNotificationSubscriptionServiceOutput serviceOutput =
+ new CreateNotificationSubscriptionServiceOutputBuilder()
+ .setSubscriptionService(subscriptionService)
+ .build();
+ return RpcResultBuilder.success(serviceOutput).buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<UpdateNotificationSubscriptionServiceOutput>>
+ updateNotificationSubscriptionService(UpdateNotificationSubscriptionServiceInput input) {
+ // TODO --> Not yet implemented
+ return null;
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<DeleteNotificationSubscriptionServiceOutput>>
+ deleteNotificationSubscriptionService(DeleteNotificationSubscriptionServiceInput input) {
+ try {
+ if (input == null || input.getSubscriptionIdOrName() == 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());
+ 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()) {
+ return RpcResultBuilder.<DeleteNotificationSubscriptionServiceOutput>failed()
+ .withError(ErrorType.APPLICATION,
+ "Notification subscription doesnt exist").buildFuture();
+ }
+ NotifSubscription notifSubscription = optionalNotifSub.get();
+ this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, notifSubscriptionIID);
+ this.networkTransactionService.commit().get();
+ for (Uuid objectUuid:notifSubscription.getSubscriptionFilter().getRequestedObjectIdentifier()) {
+ this.topicManager.deleteTapiTopic(objectUuid.getValue());
+ }
+ return RpcResultBuilder.success(new DeleteNotificationSubscriptionServiceOutputBuilder().build())
+ .buildFuture();
+ } catch (InterruptedException | ExecutionException | NoSuchElementException e) {
+ LOG.error("Failed to delete Notification subscription service", e);
+ }
+ return RpcResultBuilder.<DeleteNotificationSubscriptionServiceOutput>failed()
+ .withError(ErrorType.APPLICATION,
+ "Failed to delete notification subscription service").buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<GetNotificationSubscriptionServiceDetailsOutput>>
+ getNotificationSubscriptionServiceDetails(GetNotificationSubscriptionServiceDetailsInput input) {
+ if (input == null || input.getSubscriptionIdOrName() == 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());
+ NotificationContext notificationContext = getNotificationContext();
+ if (notificationContext == null) {
+ return RpcResultBuilder.<GetNotificationSubscriptionServiceDetailsOutput>failed()
+ .withError(ErrorType.APPLICATION, "Notification context is empty")
+ .buildFuture();
+ }
+ 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
+ .details.output.SubscriptionServiceBuilder().build()).build()).buildFuture();
+ }
+ if (!notificationContext.getNotifSubscription().containsKey(new NotifSubscriptionKey(notifSubsUuid))) {
+ return RpcResultBuilder.<GetNotificationSubscriptionServiceDetailsOutput>failed()
+ .withError(ErrorType.APPLICATION,
+ "Notification subscription service doesnt exist").buildFuture();
+ }
+ 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
+ .SubscriptionServiceBuilder(notificationContext.getNotifSubscription().get(
+ new NotifSubscriptionKey(notifSubsUuid))).build()).build()).buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<GetNotificationSubscriptionServiceListOutput>>
+ getNotificationSubscriptionServiceList(GetNotificationSubscriptionServiceListInput input) {
+ NotificationContext notificationContext = getNotificationContext();
+ if (notificationContext == null) {
+ return RpcResultBuilder.<GetNotificationSubscriptionServiceListOutput>failed()
+ .withError(ErrorType.APPLICATION, "Notification context is empty")
+ .buildFuture();
+ }
+ if (notificationContext.getNotifSubscription() == null) {
+ return RpcResultBuilder.success(new GetNotificationSubscriptionServiceListOutputBuilder()
+ .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>
+ 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
+ subscriptionService = new org.opendaylight.yang.gen.v1
+ .urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.subscription.service
+ .list.output.SubscriptionServiceBuilder(notifSubscription).build();
+ notifSubsMap.put(subscriptionService.key(), subscriptionService);
+ }
+ return RpcResultBuilder.success(new GetNotificationSubscriptionServiceListOutputBuilder()
+ .setSubscriptionService(notifSubsMap).build()).buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<GetNotificationListOutput>> getNotificationList(GetNotificationListInput input) {
+ try {
+ LOG.info("RPC getNotificationList received");
+ if (input == null || input.getSubscriptionIdOrName() == 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());
+ 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()) {
+ return RpcResultBuilder.<GetNotificationListOutput>failed()
+ .withError(ErrorType.APPLICATION,
+ "Notification subscription doesnt exist").buildFuture();
+ }
+ NotifSubscription notifSubscription = optionalNotifSub.get();
+ 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;
+ }
+ 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) {
+ notificationMap.put(notif.key(), notif);
+ }
+ return RpcResultBuilder.success(new GetNotificationListOutputBuilder()
+ .setNotification(notificationMap).build()).buildFuture();
+ } catch (InterruptedException | ExecutionException | NoSuchElementException e) {
+ LOG.error("Failed to get Notifications from Kafka", e);
+ }
+ return RpcResultBuilder.<GetNotificationListOutput>failed()
+ .withError(ErrorType.APPLICATION,
+ "Notifications couldnt be retrieved from Kafka server").buildFuture();
+ }
+
+ private NotificationContext getNotificationContext() {
+ LOG.info("Getting tapi notification context");
+ try {
+ InstanceIdentifier<NotificationContext> notificationcontextIID =
+ InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
+ .child(NotificationContext.class).build();
+ Optional<NotificationContext> notificationContextOptional
+ = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, notificationcontextIID).get();
+ if (!notificationContextOptional.isPresent()) {
+ LOG.error("Could not get TAPI notification context");
+ return null;
+ }
+ return notificationContextOptional.get();
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Could not get TAPI notification context");
+ }
+ return null;
+ }
+
+ private boolean updateNotificationContext(NotificationContext notificationContext1) {
+ try {
+ InstanceIdentifier<NotificationContext> notificationcontextIID =
+ InstanceIdentifier.builder(Context.class).augmentation(Context1.class)
+ .child(NotificationContext.class).build();
+ this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, notificationcontextIID,
+ notificationContext1);
+ this.networkTransactionService.commit().get();
+ return true;
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Could not update TAPI notification context");
+ }
+ 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.mdsal.binding.api.RpcProviderService;
import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.nbinotifications.listener.NbiNotificationsListenerImpl;
import org.opendaylight.transportpce.nbinotifications.producer.Publisher;
-import org.opendaylight.transportpce.nbinotifications.serialization.NotificationAlarmServiceSerializer;
-import org.opendaylight.transportpce.nbinotifications.serialization.NotificationServiceSerializer;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NbiNotificationsListener;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NbiNotificationsService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
+import org.opendaylight.transportpce.nbinotifications.utils.TopicManager;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsListener;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.TapiNotificationService;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.concepts.ObjectRegistration;
import org.slf4j.Logger;
private final NotificationService notificationService;
private final JsonStringConverter<NotificationProcessService> converterService;
private final JsonStringConverter<NotificationAlarmService> converterAlarmService;
+ private final JsonStringConverter<NotificationTapiService> converterTapiService;
private final String subscriberServer;
private ObjectRegistration<NbiNotificationsService> rpcRegistration;
private ListenerRegistration<NbiNotificationsListener> listenerRegistration;
+ private TopicManager topicManager = TopicManager.getInstance();
+ private final NetworkTransactionService networkTransactionService;
public NbiNotificationsProvider(List<String> publishersService, List<String> publishersAlarm,
- String subscriberServer, String publisherServer,
- RpcProviderService rpcProviderService, NotificationService notificationService,
- BindingDOMCodecServices bindingDOMCodecServices) {
+ String subscriberServer, String publisherServer,
+ RpcProviderService rpcProviderService, NotificationService notificationService,
+ BindingDOMCodecServices bindingDOMCodecServices,
+ NetworkTransactionService networkTransactionService) {
this.rpcService = rpcProviderService;
this.notificationService = notificationService;
+ this.topicManager.setPublisherServer(publisherServer);
converterService = new JsonStringConverter<>(bindingDOMCodecServices);
+ this.topicManager.setProcessConverter(converterService);
for (String publisherService: publishersService) {
LOG.info("Creating publisher for the following class {}", publisherService);
- publishersServiceMap.put(publisherService, new Publisher<>(publisherService, publisherServer,
- converterService, NotificationServiceSerializer.class));
+ this.topicManager.addProcessTopic(publisherService);
}
converterAlarmService = new JsonStringConverter<>(bindingDOMCodecServices);
+ this.topicManager.setAlarmConverter(converterAlarmService);
for (String publisherAlarm: publishersAlarm) {
LOG.info("Creating publisher for the following class {}", publisherAlarm);
- publishersAlarmMap.put(publisherAlarm, new Publisher<>(publisherAlarm, publisherServer,
- converterAlarmService, NotificationAlarmServiceSerializer.class));
+ this.topicManager.addAlarmTopic(publisherAlarm);
}
this.subscriberServer = subscriberServer;
+ converterTapiService = new JsonStringConverter<>(bindingDOMCodecServices);
+ LOG.info("baozhi tapi converter: {}", converterTapiService);
+ this.topicManager.setTapiConverter(converterTapiService);
+ this.networkTransactionService = networkTransactionService;
}
/**
*/
public void init() {
LOG.info("NbiNotificationsProvider Session Initiated");
- rpcRegistration = rpcService.registerRpcImplementation(NbiNotificationsService.class,
- new NbiNotificationsImpl(converterService, converterAlarmService, subscriberServer));
- listenerRegistration = notificationService.registerNotificationListener(
- new NbiNotificationsListenerImpl(publishersServiceMap, publishersAlarmMap));
+ NbiNotificationsImpl nbiImpl = new NbiNotificationsImpl(converterService, converterAlarmService,
+ converterTapiService, subscriberServer, this.networkTransactionService, this.topicManager);
+ rpcRegistration = rpcService.registerRpcImplementation(NbiNotificationsService.class, nbiImpl);
+ rpcService.registerRpcImplementation(TapiNotificationService.class, nbiImpl);
+ NbiNotificationsListenerImpl nbiNotificationsListener =
+ new NbiNotificationsListenerImpl(this.topicManager.getProcessTopicMap(),
+ this.topicManager.getAlarmTopicMap(), this.topicManager.getTapiTopicMap());
+ listenerRegistration = notificationService.registerNotificationListener(nbiNotificationsListener);
+ this.topicManager.setNbiNotificationsListener(nbiNotificationsListener);
}
/**
*/
package org.opendaylight.transportpce.nbinotifications.listener;
+import java.util.HashMap;
import java.util.Map;
import org.opendaylight.transportpce.nbinotifications.producer.Publisher;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NbiNotificationsListener;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NbiNotificationsListener;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfo;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfoBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AdditionalInfoKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.AlarmInfoBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.ChangedAttributesKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectName;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectNameBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.tapi.service.TargetObjectNameKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class NbiNotificationsListenerImpl implements NbiNotificationsListener {
private static final Logger LOG = LoggerFactory.getLogger(NbiNotificationsListenerImpl.class);
- private final Map<String, Publisher<NotificationProcessService>> publishersServiceMap;
- private final Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap;
+ private Map<String, Publisher<NotificationProcessService>> publishersServiceMap;
+ private Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap;
+ private Map<String, Publisher<NotificationTapiService>> tapiPublisherMap;
public NbiNotificationsListenerImpl(Map<String, Publisher<NotificationProcessService>> publishersServiceMap,
- Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap) {
+ Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap,
+ Map<String, Publisher<NotificationTapiService>> tapiPublisherMap) {
this.publishersServiceMap = publishersServiceMap;
this.publishersAlarmMap = publishersAlarmMap;
+ this.tapiPublisherMap = tapiPublisherMap;
}
@Override
.setServiceName(notification.getServiceName())
.build(), "alarm" + notification.getConnectionType().getName());
}
+
+ @Override
+ public void onPublishTapiNotificationService(PublishTapiNotificationService notification) {
+ LOG.info("Receiving request for publishing TAPI notification");
+ String topic = notification.getTopic();
+ if (!tapiPublisherMap.containsKey(topic)) {
+ LOG.error("Unknown topic {}", topic);
+ return;
+ }
+ Publisher<NotificationTapiService> publisher = tapiPublisherMap.get(topic);
+ publisher.sendEvent(new NotificationTapiServiceBuilder(transformTapiNotification(notification))
+ .build(), topic);
+ }
+
+ private NotificationTapiService transformTapiNotification(PublishTapiNotificationService notification) {
+ Map<AdditionalInfoKey, AdditionalInfo> addInfoMap = new HashMap<>();
+ if (notification.getAdditionalInfo() != null) {
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.AdditionalInfo
+ addInfo:notification.getAdditionalInfo().values()) {
+ AdditionalInfo transAddInfo = new AdditionalInfoBuilder(addInfo).build();
+ addInfoMap.put(transAddInfo.key(), transAddInfo);
+ }
+ }
+ Map<ChangedAttributesKey, ChangedAttributes> changedAttMap = new HashMap<>();
+ if (notification.getChangedAttributes() != null) {
+ for (org.opendaylight.yang.gen.v1
+ .urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes
+ changedAtt:notification.getChangedAttributes().values()) {
+ ChangedAttributes transChangedAtt = new ChangedAttributesBuilder(changedAtt).build();
+ changedAttMap.put(transChangedAtt.key(), transChangedAtt);
+ }
+ }
+ Map<NameKey, Name> nameMap = new HashMap<>();
+ if (notification.getName() != null) {
+ for (Name name:notification.getName().values()) {
+ Name transName = new NameBuilder(name).build();
+ nameMap.put(transName.key(), transName);
+ }
+ }
+ Map<TargetObjectNameKey, TargetObjectName> targetObjNameMap = new HashMap<>();
+ if (notification.getTargetObjectName() != null) {
+ for (org.opendaylight.yang.gen.v1
+ .urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName
+ targetObjectName:notification.getTargetObjectName().values()) {
+ TargetObjectName transTargetObjName = new TargetObjectNameBuilder(targetObjectName).build();
+ targetObjNameMap.put(transTargetObjName.key(), transTargetObjName);
+ }
+ }
+ LOG.info("Notification uuid = {}", notification.getUuid());
+ return new NotificationTapiServiceBuilder()
+ .setAlarmInfo(notification.getAlarmInfo() == null ? null
+ : new AlarmInfoBuilder(notification.getAlarmInfo()).build())
+ .setAdditionalText(notification.getAdditionalText())
+ .setAdditionalInfo(addInfoMap)
+ .setNotificationType(notification.getNotificationType())
+ .setChangedAttributes(changedAttMap)
+ .setEventTimeStamp(notification.getEventTimeStamp())
+ .setLayerProtocolName(notification.getLayerProtocolName())
+ .setName(nameMap)
+ .setSequenceNumber(notification.getSequenceNumber())
+ .setSourceIndicator(notification.getSourceIndicator())
+ .setTargetObjectIdentifier(notification.getTargetObjectIdentifier())
+ .setTargetObjectName(targetObjNameMap)
+ .setTargetObjectType(notification.getTargetObjectType())
+ .setTcaInfo(notification.getTcaInfo() == null ? null
+ : new TcaInfoBuilder(notification.getTcaInfo()).build())
+ .setUuid(notification.getUuid())
+ .build();
+ }
+
+ public void setPublishersServiceMap(Map<String, Publisher<NotificationProcessService>> publishersServiceMap) {
+ this.publishersServiceMap = publishersServiceMap;
+ }
+
+ public void setPublishersAlarmMap(Map<String, Publisher<NotificationAlarmService>> publishersAlarmMap) {
+ this.publishersAlarmMap = publishersAlarmMap;
+ }
+
+ public void setTapiPublishersMap(Map<String, Publisher<NotificationTapiService>> tapiPublishersMap) {
+ this.tapiPublisherMap = tapiPublishersMap;
+ }
}
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.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.alarm.service.output.NotificationsAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.rev210813.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.rev210813.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.process.service.output.NotificationsProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.process.service.output.NotificationsProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.rev210813.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.slf4j.Logger;
--- /dev/null
+/*
+ * Copyright © 2021 Nokia, 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.nbinotifications.serialization;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+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.rev211013.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.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TapiNotificationDeserializer implements Deserializer<Notification> {
+ private static final Logger LOG = LoggerFactory.getLogger(TapiNotificationDeserializer.class);
+ private JsonStringConverter<NotificationTapiService> converter;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void configure(Map<String, ?> configs, boolean isKey) {
+ LOG.info("Tapi Deserializer configuration {}", configs);
+ if (configs.containsKey(ConfigConstants.CONVERTER)
+ && configs.get(ConfigConstants.CONVERTER) instanceof JsonStringConverter<?>) {
+ converter = (JsonStringConverter<NotificationTapiService>) configs.get(ConfigConstants.CONVERTER);
+ }
+ }
+
+ @Override
+ public Notification deserialize(String topic, byte[] data) {
+ if (converter == null) {
+ throw new IllegalArgumentException(
+ "Converter should be configured through configure method of deserializer");
+ }
+ String value = new String(data, StandardCharsets.UTF_8);
+ // The message published is
+ // org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService
+ // we have to map it to
+ // org.opendaylight.yang.gen.v1
+ // .urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification
+ NotificationTapiService mappedString = converter.createDataObjectFromJsonString(
+ YangInstanceIdentifier.of(NotificationTapiService.QNAME), value, JSONCodecFactorySupplier.RFC7951);
+ if (mappedString == null) {
+ return null;
+ }
+ LOG.info("Reading Tapi event {}", mappedString);
+ return transformNotificationTapiService(mappedString);
+ }
+
+ private Notification transformNotificationTapiService(NotificationTapiService mappedString) {
+ 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.rev211013.notification.tapi.service.AdditionalInfo
+ addInfo:mappedString.getAdditionalInfo().values()) {
+ AdditionalInfo transAddInfo = new AdditionalInfoBuilder()
+ .setValue(addInfo.getValue())
+ .setValueName(addInfo.getValueName())
+ .build();
+ addInfoMap.put(transAddInfo.key(), transAddInfo);
+ }
+ }
+ Map<ChangedAttributesKey, ChangedAttributes> changedAttMap = new HashMap<>();
+ if (mappedString.getChangedAttributes() != null) {
+ for (org.opendaylight.yang.gen.v1
+ .nbi.notifications.rev211013.notification.tapi.service.ChangedAttributes changedAtt:mappedString
+ .getChangedAttributes().values()) {
+ ChangedAttributes transChangedAtt = new ChangedAttributesBuilder(changedAtt).build();
+ changedAttMap.put(transChangedAtt.key(), transChangedAtt);
+ }
+ }
+ Map<NameKey, Name> nameMap = new HashMap<>();
+ if (mappedString.getName() != null) {
+ for (Name name:mappedString.getName().values()) {
+ Name transName = new NameBuilder(name).build();
+ nameMap.put(transName.key(), transName);
+ }
+ }
+ Map<TargetObjectNameKey, TargetObjectName> targetObjNameMap = new HashMap<>();
+ if (mappedString.getTargetObjectName() != null) {
+ for (org.opendaylight.yang.gen.v1
+ .nbi.notifications.rev211013.notification.tapi.service.TargetObjectName
+ targetObjectName:mappedString.getTargetObjectName().values()) {
+ TargetObjectName transTargetObjName = new TargetObjectNameBuilder(targetObjectName).build();
+ targetObjNameMap.put(transTargetObjName.key(), transTargetObjName);
+ }
+ }
+ LOG.info("Notification uuid = {}", mappedString.getUuid().getValue());
+ return new NotificationBuilder()
+ .setAlarmInfo(mappedString.getAlarmInfo() == null ? null
+ : new AlarmInfoBuilder(mappedString.getAlarmInfo()).build())
+ .setAdditionalText(mappedString.getAdditionalText())
+ .setAdditionalInfo(addInfoMap)
+ .setNotificationType(mappedString.getNotificationType())
+ .setChangedAttributes(changedAttMap)
+ .setEventTimeStamp(mappedString.getEventTimeStamp())
+ .setLayerProtocolName(mappedString.getLayerProtocolName())
+ .setName(nameMap)
+ .setSequenceNumber(mappedString.getSequenceNumber())
+ .setSourceIndicator(mappedString.getSourceIndicator())
+ .setTargetObjectIdentifier(mappedString.getTargetObjectIdentifier())
+ .setTargetObjectName(targetObjNameMap)
+ .setTargetObjectType(mappedString.getTargetObjectType())
+ .setTcaInfo(mappedString.getTcaInfo() == null ? null
+ : new TcaInfoBuilder(mappedString.getTcaInfo()).build())
+ .setUuid(mappedString.getUuid())
+ .build();
+ }
+}
+
--- /dev/null
+/*
+ * Copyright © 2021 Nokia, 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.nbinotifications.serialization;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+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.rev211013.NotificationTapiService;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TapiNotificationSerializer implements Serializer<NotificationTapiService> {
+ private static final Logger LOG = LoggerFactory.getLogger(TapiNotificationSerializer.class);
+ private JsonStringConverter<NotificationTapiService> converter;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void configure(Map<String, ?> configs, boolean isKey) {
+ LOG.info("Deserializer configuration {}", configs);
+ if (configs.containsKey(ConfigConstants.CONVERTER)
+ && configs.get(ConfigConstants.CONVERTER) instanceof JsonStringConverter<?>) {
+ converter = (JsonStringConverter<NotificationTapiService>) configs.get(ConfigConstants.CONVERTER);
+ }
+ }
+
+ @Override
+ public byte[] serialize(String topic, NotificationTapiService data) {
+ if (converter == null) {
+ throw new IllegalArgumentException(
+ "Converter should be configured through configure method of serializer");
+ }
+ if (data == null) {
+ LOG.error("Notification data is empty");
+ return new byte[0];
+ }
+ try {
+ InstanceIdentifier<NotificationTapiService> iid = InstanceIdentifier.builder(NotificationTapiService.class)
+ .build();
+ String serialized = converter.createJsonStringFromDataObject(iid, data, JSONCodecFactorySupplier.RFC7951);
+ LOG.info("Serialized event {}", serialized);
+ return serialized.getBytes(StandardCharsets.UTF_8);
+ } catch (IOException e) {
+ LOG.error("Event couldnt be serialized", e);
+ return new byte[0];
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright © 2021 Nokia, 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.nbinotifications.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.opendaylight.transportpce.common.converter.JsonStringConverter;
+import org.opendaylight.transportpce.nbinotifications.listener.NbiNotificationsListenerImpl;
+import org.opendaylight.transportpce.nbinotifications.producer.Publisher;
+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.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class TopicManager {
+
+ private static final Logger LOG = LoggerFactory.getLogger(TopicManager.class);
+ private static TopicManager instance = new TopicManager();
+
+ private Map<String, Publisher<NotificationTapiService>> tapiPublisherMap = new HashMap<>();
+ private String publisherServer;
+ private JsonStringConverter<NotificationTapiService> tapiConverter;
+ private NbiNotificationsListenerImpl nbiNotificationsListener;
+ private Map<String, Publisher<NotificationAlarmService>> alarmPublisherMap = new HashMap<>();
+ private Map<String, Publisher<NotificationProcessService>> processPublisherMap = new HashMap<>();
+ private JsonStringConverter<NotificationProcessService> processConverter;
+ private JsonStringConverter<NotificationAlarmService> alarmConverter;
+ private int calledSetConverter = 0;
+
+ private TopicManager() {
+ }
+
+ public static TopicManager getInstance() {
+ return instance;
+ }
+
+ public void setNbiNotificationsListener(NbiNotificationsListenerImpl nbiNotificationsListener) {
+ this.nbiNotificationsListener = nbiNotificationsListener;
+ }
+
+ public void setProcessConverter(JsonStringConverter<NotificationProcessService> processConverter) {
+ this.processConverter = processConverter;
+ }
+
+ public void setAlarmConverter(JsonStringConverter<NotificationAlarmService> alarmConverter) {
+ this.alarmConverter = alarmConverter;
+ }
+
+ public void setTapiConverter(JsonStringConverter<NotificationTapiService> tapiConverter) {
+ this.tapiConverter = tapiConverter;
+ this.calledSetConverter++;
+ }
+
+ public void setPublisherServer(String publisherServer) {
+ this.publisherServer = publisherServer;
+ }
+
+ public void addProcessTopic(String topic) {
+ LOG.info("Adding process topic: {}", topic);
+ processPublisherMap.put(topic, new Publisher<>(topic, publisherServer, processConverter,
+ NotificationServiceSerializer.class));
+ if (this.nbiNotificationsListener != null) {
+ this.nbiNotificationsListener.setPublishersServiceMap(processPublisherMap);
+ }
+ }
+
+ public void addAlarmTopic(String topic) {
+ LOG.info("Adding alarm topic: {}", topic);
+ alarmPublisherMap.put(topic, new Publisher<>(topic, publisherServer, alarmConverter,
+ NotificationAlarmServiceSerializer.class));
+ if (this.nbiNotificationsListener != null) {
+ this.nbiNotificationsListener.setPublishersAlarmMap(alarmPublisherMap);
+ }
+ }
+
+ public void addTapiTopic(String topic) {
+ if (tapiPublisherMap.containsKey(topic)) {
+ LOG.info("Tapi topic: {} already exists", topic);
+ return;
+ }
+ LOG.info("Adding new tapi topic: {}", topic);
+ tapiPublisherMap.put(topic, new Publisher<>(topic, publisherServer, tapiConverter,
+ TapiNotificationSerializer.class));
+ if (this.nbiNotificationsListener != null) {
+ this.nbiNotificationsListener.setTapiPublishersMap(tapiPublisherMap);
+ }
+ }
+
+ public void deleteTapiTopic(String topic) {
+ if (!tapiPublisherMap.containsKey(topic)) {
+ LOG.info("Tapi topic: {} doesnt exist", topic);
+ return;
+ }
+ LOG.info("Deleting tapi topic: {}", topic);
+ tapiPublisherMap.remove(topic);
+ if (this.nbiNotificationsListener != null) {
+ this.nbiNotificationsListener.setTapiPublishersMap(tapiPublisherMap);
+ }
+ }
+
+ public Map<String, Publisher<NotificationTapiService>> getTapiTopicMap() {
+ return this.tapiPublisherMap;
+ }
+
+ public Map<String, Publisher<NotificationAlarmService>> getAlarmTopicMap() {
+ return this.alarmPublisherMap;
+ }
+
+ public Map<String, Publisher<NotificationProcessService>> getProcessTopicMap() {
+ return this.processPublisherMap;
+ }
+}
<reference id="rpcService" interface="org.opendaylight.mdsal.binding.api.RpcProviderService"/>
<reference id="notificationService" interface="org.opendaylight.mdsal.binding.api.NotificationService"/>
<reference id="bindingDOMCodecServices" interface="org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices" />
+ <reference id="networkTransactionImpl"
+ interface="org.opendaylight.transportpce.common.network.NetworkTransactionService" />
<bean id="provider"
class="org.opendaylight.transportpce.nbinotifications.impl.NbiNotificationsProvider"
init-method="init" destroy-method="close">
<argument ref="rpcService" />
<argument ref="notificationService" />
<argument ref="bindingDOMCodecServices" />
+ <argument ref="networkTransactionImpl" />
</bean>
</blueprint>
import org.junit.Test;
import org.opendaylight.transportpce.nbinotifications.utils.NotificationServiceDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessService;
public class SubscriberTest extends AbstractTest {
private static final String TOPIC = "topic";
import java.util.concurrent.ExecutionException;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mock;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
+import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.common.network.RequestProcessor;
+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.rev211210.ConnectionType;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsAlarmServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsAlarmServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsProcessServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.GetNotificationsProcessServiceOutput;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsAlarmServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.GetNotificationsProcessServiceOutput;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService;
import org.opendaylight.yangtools.yang.common.RpcResult;
public class NbiNotificationsImplTest extends AbstractTest {
private NbiNotificationsImpl nbiNotificationsImpl;
+ public static NetworkTransactionService networkTransactionService;
+
+ @Mock
+ private TopicManager topicManager;
@Before
public void setUp() {
+ networkTransactionService = new NetworkTransactionImpl(
+ new RequestProcessor(getDataStoreContextUtil().getDataBroker()));
JsonStringConverter<NotificationProcessService> converter = new JsonStringConverter<>(
getDataStoreContextUtil().getBindingDOMCodecServices());
JsonStringConverter<NotificationAlarmService> converterAlarm = new JsonStringConverter<>(
getDataStoreContextUtil().getBindingDOMCodecServices());
- nbiNotificationsImpl = new NbiNotificationsImpl(converter, converterAlarm,"localhost:8080");
+ JsonStringConverter<NotificationTapiService> converterTapi = new JsonStringConverter<>(
+ getDataStoreContextUtil().getBindingDOMCodecServices());
+
+ nbiNotificationsImpl = new NbiNotificationsImpl(converter, converterAlarm, converterTapi,
+ "localhost:8080", networkTransactionService, topicManager);
}
@Test
import org.mockito.MockitoAnnotations;
import org.opendaylight.mdsal.binding.api.NotificationService;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
+import org.opendaylight.transportpce.common.network.RequestProcessor;
import org.opendaylight.transportpce.nbinotifications.listener.NbiNotificationsListenerImpl;
import org.opendaylight.transportpce.test.AbstractTest;
public class NbiNotificationsProviderTest extends AbstractTest {
+ public static NetworkTransactionService networkTransactionService;
@Mock
RpcProviderService rpcProviderRegistry;
@Test
public void initTest() {
+ networkTransactionService = new NetworkTransactionImpl(
+ new RequestProcessor(getDataStoreContextUtil().getDataBroker()));
NbiNotificationsProvider provider = new NbiNotificationsProvider(
Arrays.asList("topic1", "topic2"), Arrays.asList("topic1", "topic2"), "localhost:8080",
"localhost:8080", rpcProviderRegistry, notificationService,
- getDataStoreContextUtil().getBindingDOMCodecServices());
+ getDataStoreContextUtil().getBindingDOMCodecServices(), networkTransactionService);
provider.init();
- verify(rpcProviderRegistry, times(1))
+ verify(rpcProviderRegistry, times(2))
.registerRpcImplementation(any(), any(NbiNotificationsImpl.class));
verify(notificationService, times(1))
.registerNotificationListener(any(NbiNotificationsListenerImpl.class));
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ConnectionType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessServiceBuilder;
public class NbiNotificationsListenerImplTest extends AbstractTest {
@Mock
@Test
public void onPublishNotificationServiceTest() {
NbiNotificationsListenerImpl listener = new NbiNotificationsListenerImpl(Map.of("test", publisherService),
- Map.of("test", publisherAlarm));
+ Map.of("test", publisherAlarm), new HashMap<>());
PublishNotificationProcessService notification = new PublishNotificationProcessServiceBuilder()
.setPublisherName("test")
.setCommonId("commonId")
@Test
public void onPublishNotificationServiceWrongPublisherTest() {
NbiNotificationsListenerImpl listener = new NbiNotificationsListenerImpl(Map.of("test", publisherService),
- Map.of("test", publisherAlarm));
+ Map.of("test", publisherAlarm), new HashMap<>());
PublishNotificationProcessService notification = new PublishNotificationProcessServiceBuilder()
.setPublisherName("wrongPublisher")
.setCommonId("commonId")
@Test
public void onPublishNotificationAlarmServiceTest() {
NbiNotificationsListenerImpl listener = new NbiNotificationsListenerImpl(Map.of("test", publisherService),
- Map.of("test", publisherAlarm));
+ Map.of("test", publisherAlarm), new HashMap<>());
PublishNotificationAlarmService notification = new PublishNotificationAlarmServiceBuilder()
.setPublisherName("test")
.setConnectionType(ConnectionType.Service)
@Test
public void onPublishNotificationAlarmServiceWrongPublisherTest() {
NbiNotificationsListenerImpl listener = new NbiNotificationsListenerImpl(Map.of("test", publisherService),
- Map.of("test", publisherAlarm));
+ Map.of("test", publisherAlarm), new HashMap<>());
PublishNotificationAlarmService notification = new PublishNotificationAlarmServiceBuilder()
.setPublisherName("wrongPublisher")
.setConnectionType(ConnectionType.Service)
import org.opendaylight.transportpce.nbinotifications.serialization.NotificationAlarmServiceSerializer;
import org.opendaylight.transportpce.nbinotifications.serialization.NotificationServiceSerializer;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.junit.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmService;
public class NotificationAlarmServiceDeserializerTest extends AbstractTest {
import org.junit.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.junit.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessService;
public class NotificationServiceDeserializerTest extends AbstractTest {
import org.junit.Test;
import org.opendaylight.transportpce.common.converter.JsonStringConverter;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.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.rev210813.NotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.NotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.alarm.service.output.NotificationsAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.alarm.service.output.NotificationsAlarmServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.process.service.output.NotificationsProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.get.notifications.process.service.output.NotificationsProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceZEndBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint8;
{
"nbi-notifications:notification-process-service": {
- "common-id": "commond-id",
- "message": "message",
- "operational-state": "inService",
+ "connection-type": "service",
"service-z-end": {
- "node-id": "XPONDER-1-2",
- "service-rate": 1,
- "clli": "clli",
- "is-split-lambda": false,
- "service-format": "OC",
"tx-direction": [
{
"index": 0,
+ "lgx": {
+ "lgx-port-rack": "lgx port rack",
+ "lgx-device-name": "lgx device name",
+ "lgx-port-shelf": "lgx port shelf",
+ "lgx-port-name": "lgx port name"
+ },
"port": {
- "port-name": "port name",
- "port-slot": "port slot",
+ "port-type": "port type",
"port-sub-slot": "port subslot",
+ "port-name": "port name",
+ "port-rack": "port rack",
"port-device-name": "device name",
- "port-shelf": "port shelf",
- "port-type": "port type",
- "port-rack": "port rack"
- },
- "lgx": {
- "lgx-port-shelf": "lgx port shelf",
- "lgx-port-rack": "lgx port rack",
- "lgx-port-name": "lgx port name",
- "lgx-device-name": "lgx device name"
+ "port-slot": "port slot",
+ "port-shelf": "port shelf"
}
}
],
+ "node-id": "XPONDER-1-2",
+ "service-format": "OC",
+ "service-rate": 1,
"rx-direction": [
{
"index": 0,
+ "lgx": {
+ "lgx-port-rack": "lgx port rack",
+ "lgx-device-name": "lgx device name",
+ "lgx-port-shelf": "lgx port shelf",
+ "lgx-port-name": "lgx port name"
+ },
"port": {
- "port-name": "port name",
- "port-slot": "port slot",
+ "port-type": "port type",
"port-sub-slot": "port subslot",
+ "port-name": "port name",
+ "port-rack": "port rack",
"port-device-name": "device name",
- "port-shelf": "port shelf",
- "port-type": "port type",
- "port-rack": "port rack"
- },
- "lgx": {
- "lgx-port-shelf": "lgx port shelf",
- "lgx-port-rack": "lgx port rack",
- "lgx-port-name": "lgx port name",
- "lgx-device-name": "lgx device name"
+ "port-slot": "port slot",
+ "port-shelf": "port shelf"
}
}
- ]
+ ],
+ "is-split-lambda": false,
+ "clli": "clli"
},
- "service-name": "service1",
- "connection-type": "service",
+ "message": "message",
"service-a-end": {
- "node-id": "XPONDER-1-2",
- "service-rate": 1,
- "clli": "clli",
- "is-split-lambda": false,
- "service-format": "OC",
"tx-direction": [
{
"index": 0,
+ "lgx": {
+ "lgx-port-rack": "lgx port rack",
+ "lgx-device-name": "lgx device name",
+ "lgx-port-shelf": "lgx port shelf",
+ "lgx-port-name": "lgx port name"
+ },
"port": {
- "port-name": "port name",
- "port-slot": "port slot",
+ "port-type": "port type",
"port-sub-slot": "port subslot",
+ "port-name": "port name",
+ "port-rack": "port rack",
"port-device-name": "device name",
- "port-shelf": "port shelf",
- "port-type": "port type",
- "port-rack": "port rack"
- },
- "lgx": {
- "lgx-port-shelf": "lgx port shelf",
- "lgx-port-rack": "lgx port rack",
- "lgx-port-name": "lgx port name",
- "lgx-device-name": "lgx device name"
+ "port-slot": "port slot",
+ "port-shelf": "port shelf"
}
}
],
+ "node-id": "XPONDER-1-2",
+ "service-format": "OC",
+ "service-rate": 1,
"rx-direction": [
{
"index": 0,
+ "lgx": {
+ "lgx-port-rack": "lgx port rack",
+ "lgx-device-name": "lgx device name",
+ "lgx-port-shelf": "lgx port shelf",
+ "lgx-port-name": "lgx port name"
+ },
"port": {
- "port-name": "port name",
- "port-slot": "port slot",
+ "port-type": "port type",
"port-sub-slot": "port subslot",
+ "port-name": "port name",
+ "port-rack": "port rack",
"port-device-name": "device name",
- "port-shelf": "port shelf",
- "port-type": "port type",
- "port-rack": "port rack"
- },
- "lgx": {
- "lgx-port-shelf": "lgx port shelf",
- "lgx-port-rack": "lgx port rack",
- "lgx-port-name": "lgx port name",
- "lgx-device-name": "lgx device name"
+ "port-slot": "port slot",
+ "port-shelf": "port shelf"
}
}
- ]
+ ],
+ "is-split-lambda": false,
+ "clli": "clli"
},
- "response-failed": ""
+ "operational-state": "inService",
+ "common-id": "commond-id",
+ "response-failed": "",
+ "service-name": "service1"
}
-}
+}
\ No newline at end of file
{
"nbi-notifications:notification-alarm-service": {
+ "connection-type": "service",
"message": "The service is now inService",
- "operational-state": "inService",
"service-name": "service1",
- "connection-type": "service"
+ "operational-state": "inService"
}
}
\ No newline at end of file
import org.opendaylight.transportpce.networkmodel.listeners.ServiceHandlerListener;
import org.opendaylight.transportpce.networkmodel.service.FrequenciesService;
import org.opendaylight.transportpce.networkmodel.util.TpceNetwork;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.TransportpceNetworkutilsService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.Network;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.TransportpceServicehandlerListener;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.DeleteLinkInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.DeleteLinkOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.DeleteLinkOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRdmXpdrLinksInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRdmXpdrLinksOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRdmXpdrLinksOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitXpdrRdmLinksInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitXpdrRdmLinksOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitXpdrRdmLinksOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.DeleteLinkInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.DeleteLinkOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.DeleteLinkOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRdmXpdrLinksInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRdmXpdrLinksOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRdmXpdrLinksOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitXpdrRdmLinksInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitXpdrRdmLinksOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitXpdrRdmLinksOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.TransportpceNetworkutilsService;
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.Network;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.transportpce.networkmodel.util.LinkIdUtil;
import org.opendaylight.transportpce.networkmodel.util.TopologyUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
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.rev170818.InitRoadmNodesInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.Network;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.cp.to.degree.CpToDegree;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.transportpce.networkmodel.util.LinkIdUtil;
import org.opendaylight.transportpce.networkmodel.util.TopologyUtils;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.links.input.grouping.LinksInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.links.input.grouping.LinksInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1Builder;
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.networkmodel.service;
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.rev220316.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.http.transportpce.topology.rev220123.OtnLinkType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkmodel.rev201116.topology.update.result.TopologyChanges;
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.rev220316.OpenroadmNodeVersion;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.nodes.NodeInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTpBuilder;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType;
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;
package org.opendaylight.transportpce.networkmodel.util;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.InitRoadmNodesInput;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
import org.opendaylight.transportpce.common.NetworkUtils;
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.rev220316.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.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.switching.pool.types.rev191129.SwitchingPoolTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev211210.xpdr.otn.tp.attributes.OdtuTpnPool;
import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev211210.xpdr.otn.tp.attributes.OdtuTpnPoolBuilder;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType;
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.NodeId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
for (Link link : suppOtuLinks) {
if (link.augmentation(Link1.class) == null
|| link.augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1.class) == null) {
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630
+ .Link1.class) == null) {
LOG.error(OTN_PARAMS_ERROR, link.getLinkId().getValue());
return new TopologyShard(null, null, null);
}
OtnLinkType otnLinkType = link.augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1.class).getOtnLinkType();
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.Link1.class)
+ .getOtnLinkType();
if (!OTNLINKTYPE_OTU_BW_MAP.containsKey(otnLinkType)) {
//TODO shouldn't other link type listed in OTNLINKTYPE_BW_MAP be handled too ?
LOG.warn("Unexpected otn-link-type {} for link {}", otnLinkType, link.getLinkId());
List<Link> links = new ArrayList<>();
String nodeATopo = formatNodeName(nodeA, tpA);
String nodeZTopo = formatNodeName(nodeZ, tpZ);
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1 tpceLink1
- = new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1Builder()
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.Link1 tpceLink1
+ = new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.Link1Builder()
.setOtnLinkType(linkType).build();
Link1Builder otnLink1Bldr = new Link1Builder()
.setUsedBandwidth(Uint32.valueOf(0));
new TpId(mapping.getLogicalConnectionPoint()),
tpType,
otnTp1Bldr.build(),
- new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1Builder(),
mapping);
}
}
private static void setclientNwTpAttr(Map<TerminationPointKey, TerminationPoint> tpMap, OtnTopoNode node, TpId tpId,
- OpenroadmTpType tpType, TerminationPoint1 otnTp1,
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1Builder tpceTp1Bldr,
- Mapping mapping) {
-
+ OpenroadmTpType tpType, TerminationPoint1 otnTp1, Mapping mapping) {
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder cnTP1BLdr
+ = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .TerminationPoint1Builder();
switch (tpType) {
case XPONDERNETWORK:
if (node.getXpdrNetConnectionMap().get(tpId.getValue()) != null) {
- tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrNetConnectionMap().get(tpId.getValue()));
+ cnTP1BLdr.setAssociatedConnectionMapTp(Set.of(
+ new TpId(node.getXpdrNetConnectionMap().get(tpId.getValue()))));
}
SupportingTerminationPoint stp = new SupportingTerminationPointBuilder()
.setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
.setTpRef(tpId)
.build();
TerminationPoint ietfTpNw =
- buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, Map.of(stp.key(), stp), mapping);
+ buildIetfTp(cnTP1BLdr, otnTp1, tpType, tpId, Map.of(stp.key(), stp), mapping);
tpMap.put(ietfTpNw.key(),ietfTpNw);
break;
case XPONDERCLIENT:
if (node.getXpdrCliConnectionMap().get(tpId.getValue()) != null) {
- tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrCliConnectionMap().get(tpId.getValue()));
+ cnTP1BLdr.setAssociatedConnectionMapTp(Set.of(
+ new TpId(node.getXpdrCliConnectionMap().get(tpId.getValue()))));
}
- TerminationPoint ietfTpCl = buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, null, mapping);
+ TerminationPoint ietfTpCl = buildIetfTp(cnTP1BLdr, otnTp1, tpType, tpId, null, mapping);
tpMap.put(ietfTpCl.key(),ietfTpCl);
break;
default:
}
private static TerminationPoint buildIetfTp(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1Builder tpceTp1Bldr,
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder cnTP1BLdr,
TerminationPoint1 otnTp1, OpenroadmTpType tpType, TpId tpId,
Map<SupportingTerminationPointKey, SupportingTerminationPoint> supportTpMap, Mapping mapping) {
TerminationPointBuilder ietfTpBldr = new TerminationPointBuilder();
- if (tpceTp1Bldr.getAssociatedConnectionMapPort() != null) {
- ietfTpBldr.addAugmentation(tpceTp1Bldr.build());
- }
if (supportTpMap != null) {
ietfTpBldr.setSupportingTerminationPoint(supportTpMap);
}
.setTpId(tpId)
.withKey(new TerminationPointKey(tpId))
.addAugmentation(otnTp1)
- .addAugmentation(
- new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder()
- .setTpType(tpType)
+ .addAugmentation(cnTP1BLdr.setTpType(tpType)
.setAdministrativeState(TopologyUtils.setNetworkAdminState(mapping.getPortAdminState()))
.setOperationalState(TopologyUtils.setNetworkOperState(mapping.getPortOperState()))
.build())
- .build();
+ .build();
}
private static String formatNodeName(String nodeName, String tpName) {
package org.opendaylight.transportpce.networkmodel.util;
+import static org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes.Tpdr;
+
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1Builder;
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.common.types.rev181019.XpdrNodeTypes;
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.rev211210.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.Node1Builder;
private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmTopology.class);
+ private static Map<String, OpenroadmTpType> PORTQUAL_ORD_TYPE_MAP = Map.of(
+ "xpdr-network", OpenroadmTpType.XPONDERNETWORK,
+ "switch-network", OpenroadmTpType.XPONDERNETWORK,
+ "xpdr-client", OpenroadmTpType.XPONDERCLIENT
+ );
+ private static Map<String, List<OpenroadmTpType>> PORTDIR_ORD_TYPE_MAP = Map.of(
+ "bidirectional", List.of(OpenroadmTpType.DEGREETXRXTTP, OpenroadmTpType.SRGTXRXPP),
+ "tx", List.of(OpenroadmTpType.DEGREETXTTP, OpenroadmTpType.SRGTXPP),
+ "rx", List.of(OpenroadmTpType.DEGREERXTTP, OpenroadmTpType.SRGRXPP)
+ );
+
private OpenRoadmTopology() {
}
}
public static TopologyShard createTopologyShard(Nodes mappingNode, boolean firstMount) {
- int numOfDegrees;
- int numOfSrgs;
- List<Node> nodes = new ArrayList<>();
- List<Link> links = new ArrayList<>();
+ switch (mappingNode.getNodeInfo().getNodeType()) {
+ case Rdm :
+ return createRdmTopologyShard(mappingNode, firstMount);
+ case Xpdr :
+ return createXpdrTopologyShard(mappingNode);
+ default :
+ LOG.error("Device node Type not managed yet");
+ return null;
+ }
+ }
- // Check if node is ROADM
- if (NodeTypes.Rdm.getIntValue() == mappingNode.getNodeInfo().getNodeType().getIntValue()) {
- LOG.info("creating rdm node in openroadmtopology for node {}",
- mappingNode.getNodeId());
- // transform flat mapping list to per degree and per srg mapping lists
- Map<String, List<Mapping>> mapDeg = new HashMap<>();
- Map<String, List<Mapping>> mapSrg = new HashMap<>();
- List<Mapping> mappingList = new ArrayList<>(mappingNode.nonnullMapping().values());
- mappingList.sort(Comparator.comparing(Mapping::getLogicalConnectionPoint));
- List<String> nodeShardList = new ArrayList<>();
- for (Mapping mapping : mappingList) {
- String str = mapping.getLogicalConnectionPoint().split("-")[0];
- if (!nodeShardList.contains(str)) {
- nodeShardList.add(str);
- }
- }
- for (String str : nodeShardList) {
- List<Mapping> interList =
- mappingList.stream()
- .filter(x -> x.getLogicalConnectionPoint().split("-")[0].equals(str))
- .collect(Collectors.toList());
- if (str.contains("DEG")) {
- mapDeg.put(str, interList);
- } else if (str.contains("SRG")) {
- mapSrg.put(str, interList);
- } else {
- LOG.error("unknow element");
- }
- }
- // create degree nodes
- for (Map.Entry<String, List<Mapping>> entry : mapDeg.entrySet()) {
- NodeBuilder ietfNode =
- createDegree(entry.getKey(), entry.getValue(), mappingNode.getNodeId(),
- mappingNode.getNodeInfo().getNodeClli(), firstMount);
- nodes.add(ietfNode.build());
+ public static TopologyShard createRdmTopologyShard(Nodes mappingNode, boolean firstMount) {
+ List<Node> nodes = new ArrayList<>();
+ LOG.info("creating rdm node in openroadmtopology for node {}",
+ mappingNode.getNodeId());
+ // transform flat mapping list to per degree and per srg mapping lists
+ Map<String, List<Mapping>> mapDeg = new HashMap<>();
+ Map<String, List<Mapping>> mapSrg = new HashMap<>();
+ List<Mapping> mappingList = new ArrayList<>(mappingNode.nonnullMapping().values());
+ mappingList.sort(Comparator.comparing(Mapping::getLogicalConnectionPoint));
+ List<String> nodeShardList = new ArrayList<>();
+ for (Mapping mapping : mappingList) {
+ String str = mapping.getLogicalConnectionPoint().split("-")[0];
+ if (!nodeShardList.contains(str)) {
+ nodeShardList.add(str);
}
- // create srg nodes
- for (Map.Entry<String, List<Mapping>> entry : mapSrg.entrySet()) {
- NodeBuilder ietfNode =
- createSrg(entry.getKey(), entry.getValue(), mappingNode.getNodeId(),
- mappingNode.getNodeInfo().getNodeClli(), firstMount);
- nodes.add(ietfNode.build());
+ }
+ for (String str : nodeShardList) {
+ List<Mapping> interList =
+ mappingList.stream()
+ .filter(x -> x.getLogicalConnectionPoint().split("-")[0].equals(str))
+ .collect(Collectors.toList());
+ if (str.contains("DEG")) {
+ mapDeg.put(str, interList);
+ } else if (str.contains("SRG")) {
+ mapSrg.put(str, interList);
+ } else {
+ LOG.error("unknow element");
}
+ }
+ // create degree nodes
+ for (Map.Entry<String, List<Mapping>> entry : mapDeg.entrySet()) {
+ nodes.add(
+ createDegree(entry.getKey(), entry.getValue(), mappingNode.getNodeId(),
+ mappingNode.getNodeInfo().getNodeClli(), firstMount)
+ .build());
+ }
+ // create srg nodes
+ for (Map.Entry<String, List<Mapping>> entry : mapSrg.entrySet()) {
+ nodes.add(
+ createSrg(entry.getKey(), entry.getValue(), mappingNode.getNodeId(),
+ mappingNode.getNodeInfo().getNodeClli(), firstMount)
+ .build());
+ }
+ LOG.info("adding links numOfDegrees={} numOfSrgs={}", mapDeg.size(), mapSrg.size());
+ List<Link> links = createNewLinks(nodes);
+ LOG.info("created nodes/links: {}/{}", nodes.size(), links.size());
+ return new TopologyShard(nodes, links);
+ }
- numOfDegrees = mapDeg.size();
- numOfSrgs = mapSrg.size();
-
- LOG.info("adding links numOfDegrees={} numOfSrgs={}", numOfDegrees, numOfSrgs);
- links.addAll(createNewLinks(nodes));
- LOG.info("created nodes/links: {}/{}", nodes.size(), links.size());
- return new TopologyShard(nodes, links);
- } else if (NodeTypes.Xpdr.getIntValue() == mappingNode.getNodeInfo().getNodeType().getIntValue()) {
- // Check if node is Xpdr is a Transponder
- List<Mapping> networkMappings =
- mappingNode.nonnullMapping().values()
- .stream().filter(k -> k.getLogicalConnectionPoint().contains("NETWORK"))
- .collect(Collectors.toList());
- List<Integer> tpdrList = new ArrayList<>();
- for (Mapping mapping : networkMappings) {
- List<Mapping> extractedMappings = null;
- Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- if (!tpdrList.contains(xpdrNb)) {
- tpdrList.add(xpdrNb);
- extractedMappings = mappingNode.nonnullMapping().values().stream()
- .filter(lcp -> lcp.getLogicalConnectionPoint().contains("XPDR" + xpdrNb))
- .collect(Collectors.toList());
- NodeBuilder ietfNode;
- if (mapping.getXponderType() == null
- || XpdrNodeTypes.Tpdr.getIntValue() == mapping.getXponderType().getIntValue()) {
- LOG.info("creating xpdr node {} of type Tpdr in openroadm-topology",
- mappingNode.getNodeId() + "-XPDR" + xpdrNb);
- ietfNode = createXpdr(mappingNode.getNodeId(), mappingNode.getNodeInfo().getNodeClli(), xpdrNb,
- extractedMappings, false);
- nodes.add(ietfNode.build());
- } else if (XpdrNodeTypes.Mpdr.getIntValue() == mapping.getXponderType().getIntValue()
- || XpdrNodeTypes.Switch.getIntValue() == mapping.getXponderType().getIntValue()) {
- LOG.info("creating xpdr node {} of type {} in openroadm-topology",
- mappingNode.getNodeId() + "-XPDR" + xpdrNb, mapping.getXponderType().getName());
- ietfNode = createXpdr(mappingNode.getNodeId(), mappingNode.getNodeInfo().getNodeClli(), xpdrNb,
- extractedMappings, true);
- nodes.add(ietfNode.build());
- }
+ public static TopologyShard createXpdrTopologyShard(Nodes mappingNode) {
+ List<Node> nodes = new ArrayList<>();
+ List<Mapping> networkMappings =
+ mappingNode.nonnullMapping().values()
+ .stream().filter(k -> k.getLogicalConnectionPoint().contains("NETWORK"))
+ .collect(Collectors.toList());
+ List<Integer> tpdrList = new ArrayList<>();
+ for (Mapping mapping : networkMappings) {
+ Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
+ if (!tpdrList.contains(xpdrNb)) {
+ tpdrList.add(xpdrNb);
+ List<Mapping> extractedMappings = mappingNode.nonnullMapping().values()
+ .stream().filter(lcp -> lcp.getLogicalConnectionPoint().contains("XPDR" + xpdrNb))
+ .collect(Collectors.toList());
+ Boolean isOtn;
+ String xpdrType;
+ switch (mapping.getXponderType() == null ? Tpdr : mapping.getXponderType()) {
+ case Tpdr :
+ isOtn = false;
+ xpdrType = "Tpdr";
+ break;
+ case Mpdr :
+ case Switch :
+ isOtn = true;
+ xpdrType = mapping.getXponderType().getName();
+ break;
+ default :
+ LOG.warn("cannot create xpdr node {} in openroadm-topology: type {} not supported",
+ mappingNode.getNodeId() + "-XPDR" + xpdrNb, mapping.getXponderType().getName());
+ continue;
}
- }
- if (nodes.isEmpty()) {
- return null;
- } else {
- return new TopologyShard(nodes, links);
+ LOG.info("creating xpdr node {} of type {} in openroadm-topology",
+ mappingNode.getNodeId() + "-XPDR" + xpdrNb, xpdrType);
+ nodes.add(createXpdr(
+ mappingNode.getNodeId(),
+ mappingNode.getNodeInfo().getNodeClli(),
+ xpdrNb,
+ extractedMappings,
+ isOtn)
+ .build());
}
}
- LOG.error("Device node Type not managed yet");
- return null;
+ return nodes.isEmpty() ? null : new TopologyShard(nodes, new ArrayList<Link>());
}
private static NodeBuilder createXpdr(String nodeId, String clli, Integer xpdrNb, List<Mapping> mappings,
boolean isOtn) {
- // Create openroadm-network-topo augmentation to set node type to Xponder
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1 ocnNode1 =
- new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder()
- .setNodeType(OpenroadmNodeType.XPONDER)
- .setAdministrativeState(AdminStates.InService)
- .setOperationalState(State.InService)
- .build();
// Create ietf node setting supporting-node data
- NodeBuilder ietfNodeBldr = createTopoLayerNode(nodeId, clli);
- // set node-id
String nodeIdtopo = new StringBuilder().append(nodeId).append("-XPDR").append(xpdrNb).toString();
- ietfNodeBldr.setNodeId(new NodeId(nodeIdtopo))
+ NodeBuilder ietfNodeBldr = createTopoLayerNode(nodeId, clli)
+ .setNodeId(new NodeId(nodeIdtopo))
.withKey((new NodeKey(new NodeId(nodeIdtopo))))
- .addAugmentation(ocnNode1);
-
+ .addAugmentation(
+ // Create openroadm-network-topo augmentation to set node type to Xponder
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder()
+ .setNodeType(OpenroadmNodeType.XPONDER)
+ .setAdministrativeState(AdminStates.InService)
+ .setOperationalState(State.InService)
+ .build());
// Create tp-map
Map<TerminationPointKey, TerminationPoint> tpMap = new HashMap<>();
- TerminationPointBuilder ietfTpBldr;
for (Mapping m : mappings) {
- if (!isOtn) {
- ietfTpBldr = createTpBldr(m.getLogicalConnectionPoint());
- // Add openroadm-network-topology tp augmentations
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder
- ocnTp1Bldr = new org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev211210.TerminationPoint1Builder()
- .setAdministrativeState(TopologyUtils.setNetworkAdminState(m.getPortAdminState()))
- .setOperationalState(TopologyUtils.setNetworkOperState(m.getPortOperState()));
- if (m.getPortQual().equals("xpdr-network")) {
- ocnTp1Bldr.setTpType(OpenroadmTpType.XPONDERNETWORK);
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1 tpceTp1 =
- new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123
- .TerminationPoint1Builder()
- .setAssociatedConnectionMapPort(m.getConnectionMapLcp()).build();
- ietfTpBldr
- .addAugmentation(ocnTp1Bldr.build())
- .addAugmentation(tpceTp1);
- TerminationPoint ietfTp = ietfTpBldr.build();
- tpMap.put(ietfTp.key(),ietfTp);
- } else if (m.getPortQual().equals("xpdr-client")) {
- ocnTp1Bldr.setTpType(OpenroadmTpType.XPONDERCLIENT);
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1 tpceTp1 =
- new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123
- .TerminationPoint1Builder()
- .setAssociatedConnectionMapPort(m.getConnectionMapLcp())
- .build();
- ietfTpBldr
- .addAugmentation(ocnTp1Bldr.build())
- .addAugmentation(tpceTp1);
- TerminationPoint ietfTp = ietfTpBldr.build();
- tpMap.put(ietfTp.key(),ietfTp);
- }
- } else {
- if (m.getPortQual().equals("xpdr-network") || m.getPortQual().equals("switch-network")) {
- ietfTpBldr = createTpBldr(m.getLogicalConnectionPoint());
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder
- ocnTp1Bldr = new org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev211210.TerminationPoint1Builder()
- .setTpType(OpenroadmTpType.XPONDERNETWORK)
- .setAdministrativeState(TopologyUtils.setNetworkAdminState(m.getPortAdminState()))
- .setOperationalState(TopologyUtils.setNetworkOperState(m.getPortOperState()));
- ietfTpBldr
- .addAugmentation(ocnTp1Bldr.build());
- TerminationPoint ietfTp = ietfTpBldr.build();
- tpMap.put(ietfTp.key(),ietfTp);
- }
+ if (!PORTQUAL_ORD_TYPE_MAP.containsKey(m.getPortQual())) {
+ continue;
+ }
+ if (isOtn && m.getPortQual().equals("xpdr-client")) {
+ continue;
}
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder
+ ocnTp1Bldr = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .TerminationPoint1Builder()
+ .setTpType(PORTQUAL_ORD_TYPE_MAP.get(m.getPortQual()))
+ .setAdministrativeState(TopologyUtils.setNetworkAdminState(m.getPortAdminState()))
+ .setOperationalState(TopologyUtils.setNetworkOperState(m.getPortOperState()));
+ if (!isOtn && m.getConnectionMapLcp() != null) {
+ ocnTp1Bldr.setAssociatedConnectionMapTp(Set.of(new TpId(m.getConnectionMapLcp())));
+ }
+ TerminationPointBuilder ietfTpBldr = createTpBldr(m.getLogicalConnectionPoint())
+ .addAugmentation(
+ // Add openroadm-network-topology tp augmentations
+ ocnTp1Bldr.build());
+ TerminationPoint ietfTp = ietfTpBldr.build();
+ tpMap.put(ietfTp.key(),ietfTp);
}
// Create ietf node augmentation to support ietf tp-list
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder
- ietfNode1 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .Node1Builder()
- .setTerminationPoint(tpMap);
- ietfNodeBldr.addAugmentation(ietfNode1.build());
- return ietfNodeBldr;
+ return ietfNodeBldr.addAugmentation(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder()
+ .setTerminationPoint(tpMap)
+ .build());
}
private static NodeBuilder createDegree(String degNb, List<Mapping> degListMap, String nodeId, String clli,
boolean firstMount) {
// Create tp-list
Map<TerminationPointKey,TerminationPoint> tpMap = new HashMap<>();
- TerminationPointBuilder ietfTpBldr;
for (Mapping m : degListMap) {
- ietfTpBldr = createTpBldr(m.getLogicalConnectionPoint());
// Add openroadm-common-network tp type augmentations
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder
- ocnTp1Bldr = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1Builder()
- .setAdministrativeState(TopologyUtils.setNetworkAdminState(m.getPortAdminState()))
- .setOperationalState(TopologyUtils.setNetworkOperState(m.getPortOperState()));
-
// Added states to degree port. TODO: add to mapping relation between abstracted and physical node states
- switch (m.getPortDirection()) {
- case "bidirectional":
- ocnTp1Bldr.setTpType(OpenroadmTpType.DEGREETXRXTTP);
- break;
- case "tx":
- ocnTp1Bldr.setTpType(OpenroadmTpType.DEGREETXTTP);
- break;
- case "rx":
- ocnTp1Bldr.setTpType(OpenroadmTpType.DEGREERXTTP);
- break;
- default:
- LOG.error("impossible to set tp-type to {}", m.getLogicalConnectionPoint());
+ if (!PORTDIR_ORD_TYPE_MAP.containsKey(m.getPortDirection())) {
+ LOG.error("impossible to set tp-type to {}", m.getLogicalConnectionPoint());
}
- ietfTpBldr.addAugmentation(ocnTp1Bldr.build());
- TerminationPoint ietfTp = ietfTpBldr.build();
+ TerminationPoint ietfTp = createTpBldr(m.getLogicalConnectionPoint())
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .TerminationPoint1Builder()
+ .setTpType(PORTDIR_ORD_TYPE_MAP.get(m.getPortDirection()).get(0))
+ .setAdministrativeState(TopologyUtils.setNetworkAdminState(m.getPortAdminState()))
+ .setOperationalState(TopologyUtils.setNetworkOperState(m.getPortOperState()))
+ .build())
+ .build();
tpMap.put(ietfTp.key(),ietfTp);
}
// Add CTP to tp-list + added states. TODO: same comment as before with the relation between states
- ietfTpBldr = createTpBldr(degNb + "-CTP-TXRX");
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1 ocnTp1 =
- new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder()
- .setTpType(OpenroadmTpType.DEGREETXRXCTP)
- .setAdministrativeState(AdminStates.InService)
- .setOperationalState(State.InService)
- .build();
- ietfTpBldr.addAugmentation(ocnTp1);
- TerminationPoint ietfTp = ietfTpBldr.build();
+ TerminationPoint ietfTp = createTpBldr(degNb + "-CTP-TXRX")
+ .addAugmentation(new org.opendaylight.yang.gen.v1.http
+ .org.openroadm.common.network.rev211210.TerminationPoint1Builder()
+ .setTpType(OpenroadmTpType.DEGREETXRXCTP)
+ .setAdministrativeState(AdminStates.InService)
+ .setOperationalState(State.InService)
+ .build())
+ .build();
tpMap.put(ietfTp.key(),ietfTp);
// set degree-attributes
DegreeAttributesBuilder degAttBldr = new DegreeAttributesBuilder()
degAttBldr.setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available());
}
DegreeAttributes degAtt = degAttBldr.build();
- // Create ietf node augmentation to support ietf tp-list
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder
- ietfNode1 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .Node1Builder().setTerminationPoint(tpMap);
// set node-id
String nodeIdtopo = new StringBuilder().append(nodeId).append("-").append(degNb).toString();
- Node1 ontNode1 = new Node1Builder().setDegreeAttributes(degAtt).build();
- // Create openroadm-common-network augmentation to set node type to DEGREE
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1 ocnNode1 =
- new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder()
- .setNodeType(OpenroadmNodeType.DEGREE)
- .setAdministrativeState(AdminStates.InService)
- .setOperationalState(State.InService)
- .build();
// Create ietf node setting supporting-node data
return createTopoLayerNode(nodeId, clli)
.setNodeId(new NodeId(nodeIdtopo))
.withKey((new NodeKey(new NodeId(nodeIdtopo))))
- .addAugmentation(ontNode1)
- .addAugmentation(ocnNode1)
- .addAugmentation(ietfNode1.build());
+ .addAugmentation(new Node1Builder().setDegreeAttributes(degAtt).build())
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .Node1Builder()
+ .setNodeType(OpenroadmNodeType.DEGREE)
+ .setAdministrativeState(AdminStates.InService)
+ .setOperationalState(State.InService)
+ .build())
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .Node1Builder()
+ .setTerminationPoint(tpMap)
+ .build());
}
private static NodeBuilder createSrg(String srgNb, List<Mapping> srgListMap, String nodeId, String clli,
boolean firstMount) {
// Create tp-list
Map<TerminationPointKey,TerminationPoint> tpMap = new HashMap<>();
- TerminationPointBuilder ietfTpBldr;
for (Mapping m : srgListMap) {
- ietfTpBldr = createTpBldr(m.getLogicalConnectionPoint());
- // Add openroadm-common-network tp type augmentations
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1Builder ocnTp1Bldr = new org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev211210.TerminationPoint1Builder()
- .setAdministrativeState(TopologyUtils.setNetworkAdminState(m.getPortAdminState()))
- .setOperationalState(TopologyUtils.setNetworkOperState(m.getPortOperState()));
// Added states to srg port. TODO: add to mapping relation between abstracted and physical node states
- switch (m.getPortDirection()) {
- case "bidirectional":
- ocnTp1Bldr.setTpType(OpenroadmTpType.SRGTXRXPP);
- break;
- case "tx":
- ocnTp1Bldr.setTpType(OpenroadmTpType.SRGTXPP);
- break;
- case "rx":
- ocnTp1Bldr.setTpType(OpenroadmTpType.SRGRXPP);
- break;
- default:
- LOG.error("impossible to set tp-type to {}", m.getLogicalConnectionPoint());
+ if (!PORTDIR_ORD_TYPE_MAP.containsKey(m.getPortDirection())) {
+ LOG.error("impossible to set tp-type to {}", m.getLogicalConnectionPoint());
}
- ietfTpBldr.addAugmentation(ocnTp1Bldr.build());
- TerminationPoint ietfTp = ietfTpBldr.build();
+ TerminationPoint ietfTp = createTpBldr(m.getLogicalConnectionPoint())
+ .addAugmentation(
+ // Add openroadm-common-network tp type augmentations
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .TerminationPoint1Builder()
+ .setTpType(PORTDIR_ORD_TYPE_MAP.get(m.getPortDirection()).get(1))
+ .setAdministrativeState(TopologyUtils.setNetworkAdminState(m.getPortAdminState()))
+ .setOperationalState(TopologyUtils.setNetworkOperState(m.getPortOperState()))
+ .build())
+ .build();
tpMap.put(ietfTp.key(),ietfTp);
}
// Add CP to tp-list + added states. TODO: same comment as before with the relation between states
- ietfTpBldr = createTpBldr(srgNb + "-CP-TXRX");
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1 ocnTp1 = new org.opendaylight.yang.gen.v1
- .http.org.openroadm.common.network.rev211210.TerminationPoint1Builder()
+ TerminationPoint ietfTp = createTpBldr(srgNb + "-CP-TXRX")
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .TerminationPoint1Builder()
.setTpType(OpenroadmTpType.SRGTXRXCP)
.setAdministrativeState(AdminStates.InService)
.setOperationalState(State.InService)
- .build();
- ietfTpBldr.addAugmentation(ocnTp1);
- TerminationPoint ietfTp = ietfTpBldr.build();
+ .build())
+ .build();
tpMap.put(ietfTp.key(),ietfTp);
- // Create openroadm-common-network augmentation to set node type to SRG
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1 ocnNode1 =
- new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder()
- .setNodeType(OpenroadmNodeType.SRG)
- .setAdministrativeState(AdminStates.InService)
- .setOperationalState(State.InService)
- .build();
// set srg-attributes
SrgAttributesBuilder srgAttrBldr = new SrgAttributesBuilder();
if (firstMount) {
srgAttrBldr.setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available());
}
SrgAttributes srgAttr = srgAttrBldr.build();
- Node1 ontNode1 = new Node1Builder().setSrgAttributes(srgAttr).build();
// Create ietf node augmentation to support ietf tp-list
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder
- ietfNode1 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
- .Node1Builder().setTerminationPoint(tpMap);
// Create ietf node setting supporting-node data
String nodeIdtopo = new StringBuilder().append(nodeId).append("-").append(srgNb).toString();
return createTopoLayerNode(nodeId, clli)
- .setNodeId(new NodeId(nodeIdtopo))
- .withKey((new NodeKey(new NodeId(nodeIdtopo))))
- .addAugmentation(ontNode1)
- .addAugmentation(ocnNode1)
- .addAugmentation(ietfNode1.build());
+ .setNodeId(new NodeId(nodeIdtopo))
+ .withKey((new NodeKey(new NodeId(nodeIdtopo))))
+ .addAugmentation(new Node1Builder().setSrgAttributes(srgAttr).build())
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .Node1Builder()
+ .setNodeType(OpenroadmNodeType.SRG)
+ .setAdministrativeState(AdminStates.InService)
+ .setOperationalState(State.InService)
+ .build())
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .Node1Builder()
+ .setTerminationPoint(tpMap)
+ .build());
}
private static NodeBuilder createTopoLayerNode(String nodeId, String clli) {
// Sets the value of Network-ref and Node-ref as a part of the supporting node
// attribute
- SupportingNodeBuilder support1bldr = new SupportingNodeBuilder()
+ SupportingNode support1 = new SupportingNodeBuilder()
.withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID), new NodeId(nodeId)))
.setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
- .setNodeRef(new NodeId(nodeId));
- SupportingNodeBuilder support2bldr = new SupportingNodeBuilder()
+ .setNodeRef(new NodeId(nodeId))
+ .build();
+ SupportingNode support2 = new SupportingNodeBuilder()
.withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.CLLI_NETWORK_ID), new NodeId(clli)))
.setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
- .setNodeRef(new NodeId(clli));
+ .setNodeRef(new NodeId(clli))
+ .build();
Map<SupportingNodeKey, SupportingNode> supportlist = new HashMap<>();
- SupportingNode support1 = support1bldr.build();
- supportlist.put(support1.key(),support1);
- SupportingNode support2 = support2bldr.build();
- supportlist.put(support2.key(),support2);
+ supportlist.put(support1.key(), support1);
+ supportlist.put(support2.key(), support2);
return new NodeBuilder().setSupportingNode(supportlist);
}
}
private static LinkBuilder createLink(String srcNode, String destNode, String srcTp, String destTp) {
- //create source link
- SourceBuilder ietfSrcLinkBldr = new SourceBuilder()
- .setSourceNode(new NodeId(srcNode))
- .setSourceTp(new TpId(srcTp));
- //create destination link
- DestinationBuilder ietfDestLinkBldr = new DestinationBuilder()
- .setDestNode(new NodeId(destNode))
- .setDestTp(new TpId(destTp));
LinkId linkId = LinkIdUtil.buildLinkId(srcNode, srcTp, destNode, destTp);
return new LinkBuilder()
- .setSource(ietfSrcLinkBldr.build())
- .setDestination(ietfDestLinkBldr.build())
+ .setSource(
+ new SourceBuilder()
+ .setSourceNode(new NodeId(srcNode))
+ .setSourceTp(new TpId(srcTp))
+ .build())
+ .setDestination(
+ new DestinationBuilder()
+ .setDestNode(new NodeId(destNode))
+ .setDestTp(new TpId(destTp))
+ .build())
.setLinkId(linkId)
.withKey(new LinkKey(linkId));
}
.filter(tp -> tp.getTpId().getValue().contains("CP") || tp.getTpId().getValue().contains("CTP"))
.findFirst().get().getTpId().getValue();
Link1Builder ocnAzLinkBldr = new Link1Builder();
+ Link1Builder ocnZaLinkBldr = new Link1Builder();
int srcNodeType = nodes.get(i).augmentation(org.opendaylight.yang.gen.v1.http
.org.openroadm.common.network.rev211210.Node1.class).getNodeType().getIntValue();
int destNodeType = nodes.get(j).augmentation(org.opendaylight.yang.gen.v1.http
.org.openroadm.common.network.rev211210.Node1.class).getNodeType().getIntValue();
+
if (srcNodeType == 11 && destNodeType == 11) {
ocnAzLinkBldr.setLinkType(OpenroadmLinkType.EXPRESSLINK);
+ ocnZaLinkBldr.setLinkType(OpenroadmLinkType.EXPRESSLINK);
} else if (srcNodeType == 11 && destNodeType == 12) {
ocnAzLinkBldr.setLinkType(OpenroadmLinkType.DROPLINK);
+ ocnZaLinkBldr.setLinkType(OpenroadmLinkType.ADDLINK);
} else if (srcNodeType == 12 && destNodeType == 11) {
ocnAzLinkBldr.setLinkType(OpenroadmLinkType.ADDLINK);
- } else {
- continue;
- }
- // Z to A direction
- Link1Builder ocnZaLinkBldr = new Link1Builder();
- if (srcNodeType == 11 && destNodeType == 11) {
- ocnZaLinkBldr.setLinkType(OpenroadmLinkType.EXPRESSLINK);
- } else if (destNodeType == 11 && srcNodeType == 12) {
ocnZaLinkBldr.setLinkType(OpenroadmLinkType.DROPLINK);
- } else if (destNodeType == 12 && srcNodeType == 11) {
- ocnZaLinkBldr.setLinkType(OpenroadmLinkType.ADDLINK);
} else {
continue;
}
+
// Add state to link. Based on the operational state of the TPs at the edge of the link.
// Similar to getting srcTp and destTp
State srcTpState = nodes.get(i)
.getTerminationPoint().values().stream()
.filter(tp -> tp.getTpId().getValue().contains("CP") || tp.getTpId().getValue().contains("CTP"))
.findFirst().get()
- .augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev211210.TerminationPoint1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .TerminationPoint1.class)
.getOperationalState();
State destTpState = nodes.get(j)
.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
.getTerminationPoint().values().stream()
.filter(tp -> tp.getTpId().getValue().contains("CP") || tp.getTpId().getValue().contains("CTP"))
.findFirst().get()
- .augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.common.network.rev211210.TerminationPoint1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ .TerminationPoint1.class)
.getOperationalState();
if (State.InService.equals(srcTpState) && State.InService.equals(destTpState)) {
ocnAzLinkBldr.setAdministrativeState(AdminStates.InService)
.child(Link.class, new LinkKey(linkId));
java.util.Optional<Link> link =
networkTransactionService.read(LogicalDatastoreType.CONFIGURATION,linkIID.build()).get();
- if (link.isPresent()) {
- LinkBuilder linkBuilder = new LinkBuilder(link.get());
- org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.Link1Builder link1Builder =
- new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.Link1Builder(
- linkBuilder
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210
- .Link1.class));
- linkBuilder.removeAugmentation(Link1.class)
- .addAugmentation(link1Builder.build());
- networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, linkIID.build(),
- linkBuilder.build());
- networkTransactionService.commit().get(1, TimeUnit.SECONDS);
- return true;
- } else {
+ if (link.isEmpty()) {
LOG.error("No link found for given LinkId: {}", linkId);
return false;
}
+ LinkBuilder linkBuilder = new LinkBuilder(link.get());
+ networkTransactionService.merge(
+ LogicalDatastoreType.CONFIGURATION,
+ linkIID.build(),
+ linkBuilder
+ .removeAugmentation(Link1.class)
+ .addAugmentation(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210
+ .Link1Builder(linkBuilder
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210
+ .Link1.class))
+ .build())
+ .build());
+ networkTransactionService.commit().get(1, TimeUnit.SECONDS);
+ return true;
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("Error deleting link {}", linkId.getValue(), e);
return 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,
+ .networks.network.Node.class,
new NodeKey(new NodeId(nodeId)))
.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
.Node1.class)
- .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks
- .network.node.TerminationPoint.class,
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
+ .networks.network.node.TerminationPoint.class,
new TerminationPointKey(new TpId(tpId)))
.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
.TerminationPoint1.class);
import org.opendaylight.transportpce.networkmodel.listeners.PortMappingListener;
import org.opendaylight.transportpce.networkmodel.service.FrequenciesService;
import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.TransportpceNetworkutilsService;
@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class NetworkModelProviderTest extends AbstractTest {
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
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.rev220316.Network;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.NodesBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.OduSwitchingPools;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.If10GEODU2e;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.IfOCH;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.IfOCHOTU4ODU4;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
assertEquals("XPDR1-CLIENT1", tps.get(0).getTpId().getValue());
assertEquals(
"XPDR1-NETWORK1",
- tps.get(0).augmentation(TerminationPoint1.class).getAssociatedConnectionMapPort());
+ tps.get(0)
+ .augmentation(TerminationPoint1.class)
+ .getAssociatedConnectionMapTp()
+ .iterator()
+ .next()
+ .getValue());
assertEquals(
"only If100GE interface capabitily expected",
1,
assertEquals(
"first TP must be of type client",
OpenroadmTpType.XPONDERCLIENT,
- tps.get(0).augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1.class)
- .getTpType());
+ tps.get(0).augmentation(TerminationPoint1.class).getTpType());
//tests network tp
assertEquals("XPDR1-NETWORK1", tps.get(2).getTpId().getValue());
assertEquals(
"XPDR1-CLIENT1",
- tps.get(2).augmentation(TerminationPoint1.class).getAssociatedConnectionMapPort());
+ tps.get(2).augmentation(TerminationPoint1.class)
+ .getAssociatedConnectionMapTp()
+ .iterator()
+ .next()
+ .getValue());
assertEquals(
"only IfOCH interface capabitily expected",
1,
assertEquals(
"third TP must be of type network",
OpenroadmTpType.XPONDERNETWORK,
- tps.get(2).augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1.class)
- .getTpType());
+ tps.get(2).augmentation(TerminationPoint1.class).getTpType());
}
@Test
"otn link type should be OTU4",
OtnLinkType.OTU4,
sortedLinks.get(0).augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1.class)
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.Link1.class)
.getOtnLinkType());
}
"otn link type should be ODTU4",
OtnLinkType.ODTU4,
sortedLinks.get(0)
- .augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630
+ .Link1.class)
.getOtnLinkType());
assertEquals("list of TPs should contain 2 updated TPs", 2, topoShard.getTps().size());
assertEquals(
"TP should be of type client",
OpenroadmTpType.XPONDERCLIENT,
- tpList.get(2)
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1.class)
- .getTpType());
+ tpList.get(2).augmentation(TerminationPoint1.class).getTpType());
assertEquals(
"TP should be of type network",
OpenroadmTpType.XPONDERNETWORK,
- tpList.get(4)
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1.class)
- .getTpType());
+ tpList.get(4).augmentation(TerminationPoint1.class).getTpType());
} else if (xpdrNb.equals(Uint16.valueOf(2))) {
assertEquals("should contain 8 TPs", 8, tpList.size());
assertEquals("XPDR2-CLIENT1", tpList.get(0).getTpId().getValue());
}
assertEquals(
"TP should be of type client", OpenroadmTpType.XPONDERCLIENT,
- tpList.get(2)
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1.class)
- .getTpType());
+ tpList.get(2).augmentation(TerminationPoint1.class).getTpType());
assertEquals(
"TP should be of type network", OpenroadmTpType.XPONDERNETWORK,
- tpList.get(6)
- .augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
- .TerminationPoint1.class)
- .getTpType());
+ tpList.get(6).augmentation(TerminationPoint1.class).getTpType());
}
}
}
assertEquals(4, tps.size());
assertEquals("XPDR1-CLIENT1", tps.get(0).getTpId().getValue());
assertEquals(OpenroadmTpType.XPONDERCLIENT, tps.get(0).augmentation(TerminationPoint1.class).getTpType());
- assertEquals("XPDR1-NETWORK1", tps.get(0).augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1.class)
- .getAssociatedConnectionMapPort());
+ assertEquals("XPDR1-NETWORK1", tps.get(0).augmentation(TerminationPoint1.class)
+ .getAssociatedConnectionMapTp()
+ .iterator()
+ .next()
+ .getValue());
assertEquals("XPDR1-NETWORK1", tps.get(2).getTpId().getValue());
assertEquals(OpenroadmTpType.XPONDERNETWORK, tps.get(2).augmentation(TerminationPoint1.class).getTpType());
assertEquals("XPDR1-CLIENT1", tps.get(2).augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1.class)
- .getAssociatedConnectionMapPort());
+ TerminationPoint1.class)
+ .getAssociatedConnectionMapTp()
+ .iterator()
+ .next()
+ .getValue());
}
private void checkOtnXpdrNode(Node node) {
import java.util.Map;
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.rev220316.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.MappingKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.SupportedIfCapability;
import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev211210.xpdr.otn.tp.attributes.OdtuTpnPool;
import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev211210.xpdr.otn.tp.attributes.OdtuTpnPoolBuilder;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType;
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.NodeId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
.setUsedBandwidth(Uint32.valueOf(100000 - availBW.intValue()))
.build())
.addAugmentation(
- new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1Builder()
+ new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630
+ .Link1Builder()
.setOtnLinkType(type)
.build())
.build();
.setUsedBandwidth(Uint32.valueOf(100000 - availBW.intValue()))
.build())
.addAugmentation(
- new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1Builder()
+ new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630
+ .Link1Builder()
.setOtnLinkType(type)
.build())
.build();
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK2</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
</termination-point>
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK1</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<xpdr-network-attributes
xmlns="http://org/openroadm/network/topology">
<tail-equipment-id>ROADM-C1-SRG1--SRG1-PP1-TXRX
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK2</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
</termination-point>
<termination-point
xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK1</tp-id>
- <associated-connection-map-port
- xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<xpdr-network-attributes
xmlns="http://org/openroadm/network/topology">
<tail-equipment-id>ROADM-A1-SRG1--SRG1-PP1-TXRX
+++ /dev/null
-module transportpce-topology {
- yang-version 1.1;
- namespace "http://transportpce/topology";
- prefix "transportpce-topology";
-
- import ietf-network {
- prefix nd;
- revision-date 2018-02-26;
- }
- import ietf-network-topology {
- prefix nwt;
- revision-date 2018-02-26;
- }
- import org-openroadm-common-network {
- prefix cnet;
- }
-
- organization
- "TransportPCE team";
- contact
- "TransportPCE team";
-
- revision 2022-01-23 {
- description "Update otn-link-type enum for intermediate rates (B100G)";
- }
- revision 2021-05-11 {
- description "Update otn-link-type enum for higher rates";
- }
- revision 2020-10-19 {
- description "Update to 7.1.0 Openroadm network and common models";
- }
- revision 2020-01-29 {
- description "Add transportpce augmentation to manage otn-link-type in otn-topology";
- }
- revision 2020-01-23 {
- description "Add transportpce augmentation for otn-topology";
- }
- revision 2019-06-25 {
- description "Initial revision";
- }
-
- typedef otn-link-type {
- type enumeration {
- enum "OTU4" {
- value 0;
- }
- enum "ODU4" {
- value 1;
- }
- enum "ODTU4" {
- value 2;
- }
- enum "ODU2e" {
- value 3;
- }
- enum "ODU0" {
- value 4;
- }
- enum "OTUC4" {
- value 5;
- }
- enum "ODUC4" {
- value 6;
- }
- enum "OTUC3" {
- value 7;
- }
- enum "ODUC3" {
- value 8;
- }
- enum "OTUC2" {
- value 9;
- }
- enum "ODUC2" {
- value 10;
- }
- }
- }
-
- augment "/nd:networks/nd:network/nd:node/nwt:termination-point" {
- when "../../nd:network-types/cnet:openroadm-common-network/openroadm-topology or ../../nd:network-types/cnet:openroadm-common-network/otn-topology";
- description
- "Defines associated logical-connection-point for XPDR port.";
- leaf associated-connection-map-port {
- when
- "../cnet:tp-type = 'XPONDER-CLIENT' or ../cnet:tp-type = 'XPONDER-NETWORK'";
- type string;
- description
- "The xpdr port connectable regarding the device connection-map";
- }
- }
-
- augment "/nd:networks/nd:network/nwt:link" {
- when "../nd:network-types/cnet:openroadm-common-network/otn-topology";
- description
- "Defines more accurate otn link types to differentiate otn links in otn-topology";
- leaf otn-link-type {
- when
- "../cnet:link-type = 'OTN-LINK'";
- type otn-link-type;
- description
- "type of otn link, to help link management inside transportpce";
- }
- }
-}
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1;
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.types.rev211210.OpenroadmLinkType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.link.concatenation.LinkConcatenation;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.link.concatenation.LinkConcatenationKey;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType;
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;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
}
OtnLinkType otnLinkType = link
- .augmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils
+ .rev220630.Link1.class)
.getOtnLinkType();
if (this.availableBandwidth == 0L) {
LOG.error("PceLink: No bandwidth available for OTN Link, link {} is ignored ", linkId);
continue;
}
// find Client of this network TP
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1 tpceTp1 =
- tp.augmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123
- .TerminationPoint1.class);
- if (tpceTp1 != null) {
- String client = tpceTp1.getAssociatedConnectionMapPort();
+ if (cntp1.getAssociatedConnectionMapTp() != null) {
+ String client = cntp1.getAssociatedConnectionMapTp().iterator().next().getValue();
if (client != null) {
this.clientPerNwTp.put(tp.getTpId().getValue(), client);
this.valid = true;
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
},
{
import org.opendaylight.transportpce.renderer.provisiondevice.tasks.RollbackProcessor;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.Action;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifierBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Notification;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.delete.input.ServiceDeleteReqInfo.TailRetention;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.delete.input.ServiceDeleteReqInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.yang.common.RpcResult;
import org.slf4j.Logger;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.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.rev210813.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceZEndBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.networkutils.rev220630.OtnLinkType;
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.TransportpceRendererListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link;
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.rev211210.service.list.Services;
-import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessServiceBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.notification.process.service.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationProcessServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.notification.process.service.ServiceZEndBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.delete.input.ServiceDeleteReqInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.delete.input.ServiceDeleteReqInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmServiceBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
+import java.util.Optional;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.opendaylight.mdsal.binding.api.DataObjectModification;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.transportpce.common.ResponseCodes;
import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl;
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
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.rev211210.ConnectionType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.Restorable;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommonBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.sdnc.request.header.SdncRequestHeaderBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceAEnd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceAEndBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceZEnd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.endpoint.TxDirectionKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.lgx.LgxBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.resiliency.ServiceResiliency;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.resiliency.ServiceResiliencyBuilder;
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.format.rev191129.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutputBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesBuilder;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmService;
-import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationAlarmServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishNotificationAlarmServiceBuilder;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint8;
-@RunWith(MockitoJUnitRunner.StrictStubs.class)
+@RunWith(MockitoJUnitRunner.class)
public class ServiceListenerTest {
@Mock
}
@Test
- public void testOnDataTreeChangedWhenAddService() {
+ public void testOnDataTreeChangedWhenServiceBecomesOutOfService() {
@SuppressWarnings("unchecked") final DataObjectModification<Services> service =
mock(DataObjectModification.class);
final Collection<DataTreeModification<Services>> changes = new HashSet<>();
changes.add(ch);
when(ch.getRootNode()).thenReturn(service);
- Services serviceDown = buildService(State.OutOfService, AdminStates.OutOfService);
+ Services serviceDown = buildService(State.OutOfService, AdminStates.InService);
when(service.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
when(service.getDataBefore()).thenReturn(buildService(State.InService, AdminStates.InService));
when(service.getDataAfter()).thenReturn(serviceDown);
verify(service, times(1)).getModificationType();
verify(service, times(3)).getDataBefore();
verify(service, times(1)).getDataAfter();
- PublishNotificationAlarmService publishNotificationAlarmService =
- buildNotificationAlarmService(serviceDown, "The service is now outOfService");
try {
verify(notificationPublishService, times(1))
- .putNotification(publishNotificationAlarmService);
+ .putNotification(buildNotificationAlarmService(serviceDown, "The service is now outOfService"));
} catch (InterruptedException e) {
fail("Failed publishing notification");
}
}
}
+ @Test
+ public void testOnDataTreeChangedWhenServiceDegradedShouldBeRerouted() {
+ @SuppressWarnings("unchecked") final DataObjectModification<Services> service =
+ mock(DataObjectModification.class);
+ final Collection<DataTreeModification<Services>> changes = new HashSet<>();
+ @SuppressWarnings("unchecked") final DataTreeModification<Services> ch = mock(DataTreeModification.class);
+ changes.add(ch);
+ when(ch.getRootNode()).thenReturn(service);
+
+ ServiceResiliency serviceResiliency = new ServiceResiliencyBuilder().setResiliency(Restorable.class).build();
+ Services serviceAfter = new ServicesBuilder(buildService(State.OutOfService, AdminStates.InService))
+ .setServiceResiliency(serviceResiliency)
+ .build();
+ when(service.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
+ when(service.getDataBefore()).thenReturn(
+ new ServicesBuilder(buildService(State.InService, AdminStates.InService))
+ .setServiceResiliency(serviceResiliency)
+ .build());
+ when(service.getDataAfter()).thenReturn(serviceAfter);
+ when(serviceDataStoreOperations.getService(anyString())).thenReturn(Optional.of(serviceAfter));
+ when(servicehandler.serviceDelete(any())).thenReturn(
+ RpcResultBuilder.success(
+ new ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(
+ new ConfigurationResponseCommonBuilder()
+ .setResponseCode(ResponseCodes.RESPONSE_OK)
+ .build())
+ .build())
+ .buildFuture());
+ when(servicehandler.serviceCreate(any())).thenReturn(
+ RpcResultBuilder.success(
+ new ServiceCreateOutputBuilder()
+ .setConfigurationResponseCommon(
+ new ConfigurationResponseCommonBuilder()
+ .setResponseCode(ResponseCodes.RESPONSE_OK)
+ .build())
+ .build())
+ .buildFuture());
+ ServiceListener listener = new ServiceListener(servicehandler, serviceDataStoreOperations,
+ notificationPublishService);
+ listener.onDataTreeChanged(changes);
+ verify(ch, times(1)).getRootNode();
+ verify(service, times(1)).getModificationType();
+ verify(service, times(3)).getDataBefore();
+ verify(service, times(1)).getDataAfter();
+ verify(servicehandler, times(1)).serviceDelete(any());
+
+ when(service.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE);
+ listener.onDataTreeChanged(changes);
+ verify(servicehandler, times(1)).serviceCreate(any());
+ }
+
+ @Test
+ public void testOnDataTreeChangedWhenServiceDegradedShouldNotBeRerouted() {
+ @SuppressWarnings("unchecked") final DataObjectModification<Services> service =
+ mock(DataObjectModification.class);
+ final Collection<DataTreeModification<Services>> changes = new HashSet<>();
+ @SuppressWarnings("unchecked") final DataTreeModification<Services> ch = mock(DataTreeModification.class);
+ changes.add(ch);
+ when(ch.getRootNode()).thenReturn(service);
+
+ Services serviceAfter = buildService(State.OutOfService, AdminStates.InService);
+ when(service.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
+ when(service.getDataBefore()).thenReturn(buildService(State.InService, AdminStates.InService));
+ when(service.getDataAfter()).thenReturn(serviceAfter);
+ ServiceListener listener = new ServiceListener(servicehandler, serviceDataStoreOperations,
+ notificationPublishService);
+ listener.onDataTreeChanged(changes);
+ verify(ch, times(1)).getRootNode();
+ verify(service, times(1)).getModificationType();
+ verify(service, times(3)).getDataBefore();
+ verify(service, times(1)).getDataAfter();
+ verify(servicehandler, times(0)).serviceDelete(any());
+
+ when(service.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE);
+ listener.onDataTreeChanged(changes);
+ verify(servicehandler, times(0)).serviceCreate(any());
+ }
+
private Services buildService(State state, AdminStates adminStates) {
ServiceAEnd serviceAEnd = getServiceAEndBuild().build();
ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
.setClli("clli")
- .setServiceFormat(ServiceFormat.OC)
+ .setServiceFormat(ServiceFormat.Ethernet)
.setServiceRate(Uint32.valueOf(1))
.setNodeId(new NodeIdType("XPONDER-3-2"))
.setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()), getTxDirection()))
.setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
.build();
ServicesBuilder builtInput = new ServicesBuilder()
+ .setSdncRequestHeader(new SdncRequestHeaderBuilder().build())
.setCommonId("commonId")
.setConnectionType(ConnectionType.Service)
.setCustomer("Customer")
private ServiceAEndBuilder getServiceAEndBuild() {
return new ServiceAEndBuilder()
.setClli("clli")
- .setServiceFormat(ServiceFormat.OC)
+ .setServiceFormat(ServiceFormat.Ethernet)
.setServiceRate(Uint32.valueOf(1))
.setNodeId(new NodeIdType("XPONDER-1-2"))
.setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()), getTxDirection()))
private TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl;
public TapiProvider(DataBroker dataBroker, RpcProviderService rpcProviderService,
- OrgOpenroadmServiceService serviceHandler, ServiceDataStoreOperations serviceDataStoreOperations,
+ OrgOpenroadmServiceService serviceHandler,ServiceDataStoreOperations serviceDataStoreOperations,
TapiListener tapiListener, NetworkTransactionService networkTransactionService,
TapiNetconfTopologyListener topologyListener, TapiPortMappingListener tapiPortMappingListener,
TransportpceTapinetworkutilsService tapiNetworkUtils, TapiPceListenerImpl pceListenerImpl,
TapiRendererListenerImpl rendererListenerImpl, TapiServiceHandlerListenerImpl serviceHandlerListenerImpl,
NotificationService notificationService, TapiOrLinkListener orLinkListener,
- TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl) {
+ TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl) {
this.dataBroker = dataBroker;
this.rpcProviderService = rpcProviderService;
this.serviceHandler = serviceHandler;
this.notificationService = notificationService;
this.orLinkListener = orLinkListener;
this.tapiNetworkModelListenerImpl = tapiNetworkModelListenerImpl;
+ //this.notificationPublishService = notificationPublishService;
}
/**
TapiConnectivityImpl tapi = new TapiConnectivityImpl(this.serviceHandler, tapiContext, connectivityUtils,
pceListenerImpl, rendererListenerImpl);
TapiTopologyImpl topo = new TapiTopologyImpl(this.dataBroker, tapiContext, topologyUtils, tapiLink);
+
rpcRegistration = rpcProviderService.registerRpcImplementation(TapiConnectivityService.class, tapi);
rpcProviderService.registerRpcImplementation(TapiTopologyService.class, topo);
rpcProviderService.registerRpcImplementation(TapiCommonService.class, topo);
package org.opendaylight.transportpce.tapi.listeners;
import java.nio.charset.StandardCharsets;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
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.rev211013.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.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.TapiNotificationListener;
+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;
private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(StandardCharsets.UTF_8)).toString());
private final List<LayerProtocolName> orderedServiceLayerList;
+ private final NotificationPublishService notificationPublishService;
-
- public TapiNetworkModelListenerImpl(NetworkTransactionService networkTransactionService) {
+ public TapiNetworkModelListenerImpl(NetworkTransactionService networkTransactionService,
+ NotificationPublishService notificationPublishService) {
this.networkTransactionService = networkTransactionService;
this.orderedServiceLayerList = List.of(LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.ODU,
LayerProtocolName.DSR, LayerProtocolName.ETH);
+ this.notificationPublishService = notificationPublishService;
}
@Override
.map(NameAndValueChange::getNewValue)
.collect(Collectors.toList()));
updateConnectivityServices();
- // todo create NotificationPublishSerivce (Tapi) object + send Notification
+ // todo set attributes
+ for (ConnectivityService connService : this.connectivityServiceChanges) {
+ sendNbiNotification(createNbiNotification(connService));
+ }
+ }
+ }
+
+ private PublishTapiNotificationService createNbiNotification(ConnectivityService connService) {
+ if (connService == null) {
+ LOG.error("ConnService is null");
+ return null;
+ }
+ Map<ChangedAttributesKey, ChangedAttributes> changedStates = new HashMap<>();
+ changedStates.put(new ChangedAttributesKey("administrativeState"),
+ new ChangedAttributesBuilder()
+ .setNewValue(connService.getAdministrativeState().getName())
+ .setOldValue(connService.getAdministrativeState().equals(AdministrativeState.UNLOCKED)
+ ? AdministrativeState.LOCKED.getName() : AdministrativeState.UNLOCKED.getName())
+ .setValueName("administrativeState").build());
+ changedStates.put(new ChangedAttributesKey("operationalState"),
+ new ChangedAttributesBuilder()
+ .setNewValue(connService.getOperationalState().getName())
+ .setOldValue(connService.getOperationalState().equals(OperationalState.ENABLED)
+ ? OperationalState.DISABLED.getName() : OperationalState.ENABLED.getName())
+ .setValueName("operationalState").build());
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+ OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+ DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+ Map<TargetObjectNameKey, TargetObjectName> targetObjectNames = new HashMap<>();
+ if (connService.getName() != null) {
+ for (Map.Entry<NameKey, Name> entry : connService.getName().entrySet()) {
+ targetObjectNames.put(new TargetObjectNameKey(entry.getKey().getValueName()),
+ new TargetObjectNameBuilder()
+ .setValueName(entry.getValue().getValueName())
+ .setValue(entry.getValue().getValue())
+ .build());
+ }
+ }
+
+ return new PublishTapiNotificationServiceBuilder()
+ .setUuid(new Uuid(UUID.randomUUID().toString()))
+ .setTopic(connService.getUuid().getValue())
+ .setTargetObjectIdentifier(connService.getUuid())
+ .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE)
+ .setChangedAttributes(changedStates)
+ .setEventTimeStamp(datetime)
+ .setTargetObjectName(targetObjectNames)
+ .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE)
+ .setLayerProtocolName(connService.getServiceLayer())
+ .build();
+ }
+
+ private void sendNbiNotification(PublishTapiNotificationService service) {
+ try {
+ this.notificationPublishService.putNotification(service);
+ } catch (InterruptedException e) {
+ LOG.warn("Cannot send notification to nbi", e);
+ Thread.currentThread().interrupt();
}
}
OperationalState operState = (OperationalState) states.get(connService.getUuid())[1];
InstanceIdentifier<ConnectivityService> connServIID = InstanceIdentifier
- .builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi
- .connectivity.rev181210.Context1.class)
+ .builder(Context.class).augmentation(org.opendaylight.yang.gen.v1
+ .urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class)
.child(ConnectivityContext.class)
.child(ConnectivityService.class, new ConnectivityServiceKey(connService.getUuid()))
.build();
package org.opendaylight.transportpce.tapi.listeners;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.NotificationPublishService;
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.common.network.RequestProcessor;
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.TransportpceRendererListener;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.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.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.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Uuid serviceUuid;
private RendererRpcResultSp serviceRpcResultSp;
private final NetworkTransactionService networkTransactionService;
+ private final NotificationPublishService notificationPublishService;
- public TapiRendererListenerImpl(DataBroker dataBroker) {
+ public TapiRendererListenerImpl(DataBroker dataBroker, NotificationPublishService notificationPublishService) {
this.dataBroker = dataBroker;
this.networkTransactionService = new NetworkTransactionImpl(new RequestProcessor(this.dataBroker));
+ this.notificationPublishService = notificationPublishService;
}
@Override
LOG.error("Couldnt retrieve service from datastore");
return;
}
- LOG.info("Connectivity service = {}", connectivityService.toString());
+ LOG.info("Connectivity service = {}", connectivityService);
// TODO --> this throws error because the renderer goes really fast. Is this normal??
ConnectivityService updtConnServ = new ConnectivityServiceBuilder(connectivityService)
.setAdministrativeState(AdministrativeState.UNLOCKED)
updateConnectionState(connection.getConnectionUuid());
}
updateConnectivityService(updtConnServ);
+ // TODO: need to send notification to kafka in case the topic exists!!
+ sendNbiNotification(createNbiNotification(updtConnServ));
}
/**
private void onFailedServiceImplementation(String serviceName) {
LOG.error("Renderer implementation failed !");
LOG.info("PCE cancel resource done OK !");
- Uuid suuid = new Uuid(UUID.nameUUIDFromBytes(serviceName.getBytes(Charset.forName("UTF-8")))
+ Uuid suuid = new Uuid(UUID.nameUUIDFromBytes(serviceName.getBytes(StandardCharsets.UTF_8))
.toString());
// get connections of connectivity service and remove them from tapi context and then remove
// service from context. The CEPs are maintained as they could be reused by another service
}
}
+ private void sendNbiNotification(PublishTapiNotificationService service) {
+ try {
+ this.notificationPublishService.putNotification(service);
+ } catch (InterruptedException e) {
+ LOG.warn("Cannot send notification to nbi", e);
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ private PublishTapiNotificationService createNbiNotification(ConnectivityService connService) {
+ if (connService == null) {
+ LOG.error("ConnService is null");
+ return null;
+ }
+ /*
+ Map<ChangedAttributesKey, ChangedAttributes> changedStates = changedAttributesMap.entrySet()
+ .stream()
+ .filter(e -> e.getKey().getValueName().equals("administrative")
+ || e.getKey().getValueName().equals("operational"))
+ .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
+
+ */
+ Map<ChangedAttributesKey, ChangedAttributes> changedStates = new HashMap<>();
+ changedStates.put(new ChangedAttributesKey("administrativeState"),
+ new ChangedAttributesBuilder()
+ .setNewValue(connService.getAdministrativeState().getName())
+ .setOldValue(AdministrativeState.LOCKED.getName())
+ .setValueName("administrativeState").build());
+ changedStates.put(new ChangedAttributesKey("operationalState"),
+ new ChangedAttributesBuilder()
+ .setNewValue(connService.getOperationalState().getName())
+ .setOldValue(OperationalState.DISABLED.getName())
+ .setValueName("operationalState").build());
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+ OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+ DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+ Map<TargetObjectNameKey, TargetObjectName> targetObjectNames = new HashMap<>();
+ if (connService.getName() != null) {
+ for (Map.Entry<NameKey, Name> entry : connService.getName().entrySet()) {
+ targetObjectNames.put(new TargetObjectNameKey(entry.getKey().getValueName()),
+ new TargetObjectNameBuilder()
+ .setValueName(entry.getValue().getValueName())
+ .setValue(entry.getValue().getValue())
+ .build());
+ }
+ }
+
+ return new PublishTapiNotificationServiceBuilder()
+ .setUuid(new Uuid(UUID.randomUUID().toString()))
+ .setTopic(connService.getUuid().getValue())
+ .setTargetObjectIdentifier(connService.getUuid())
+ .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE)
+ .setChangedAttributes(changedStates)
+ .setEventTimeStamp(datetime)
+ .setTargetObjectName(targetObjectNames)
+ .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE)
+ .setLayerProtocolName(connService.getServiceLayer())
+ .build();
+ }
+
public void setServiceUuid(Uuid serviceUuid) {
this.serviceUuid = serviceUuid;
}
int count = 1;
for (TerminationPoint tp : this.oorNetworkPortList) {
TpId tpid1 = tp.getTpId();
- TpId tpid2 = new TpId(tp.augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1.class)
- .getAssociatedConnectionMapPort());
+ TpId tpid2 = tp.augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1.class)
+ .getAssociatedConnectionMapTp().iterator().next();
Set<TpId> tpList = new HashSet<>();
tpList.add(tpid1);
tpList.add(tpid2);
int count = 1;
for (TerminationPoint tp : this.oorNetworkPortList) {
TpId tpid1 = tp.getTpId();
- TpId tpid2 = new TpId(tp.augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1.class)
- .getAssociatedConnectionMapPort());
+ TpId tpid2 = tp.augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1.class)
+ .getAssociatedConnectionMapTp().iterator().next();
Set<TpId> tpList = new HashSet<>();
tpList.add(tpid1);
tpList.add(tpid2);
String networkLcp;
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERCLIENT)) {
networkLcp = tp.augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1.class)
- .getAssociatedConnectionMapPort();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1.class)
+ .getAssociatedConnectionMapTp().iterator().next().getValue();
} else {
networkLcp = tp.getTpId().getValue();
}
String networkLcp;
if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERCLIENT)) {
networkLcp = tp.augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1.class)
- .getAssociatedConnectionMapPort();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1.class)
+ .getAssociatedConnectionMapTp().iterator().next().getValue();
} else {
networkLcp = tp.getTpId().getValue();
}
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;
.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();
+
ContextBuilder contextBuilder = new ContextBuilder()
.setName(Map.of(contextName.key(), contextName))
.setUuid(
new Uuid(UUID.nameUUIDFromBytes(TAPI_CONTEXT.getBytes(Charset.forName("UTF-8"))).toString()))
.setServiceInterfacePoint(new HashMap<>())
.addAugmentation(connectivityContext)
- .addAugmentation(topologyContext);
+ .addAugmentation(topologyContext)
+ .addAugmentation(notificationContext);
// todo: add notification context
InstanceIdentifier<Context> contextIID = InstanceIdentifier.builder(Context.class).build();
<bean id="tapiRendererListener" class="org.opendaylight.transportpce.tapi.listeners.TapiRendererListenerImpl">
<argument ref="dataBroker" />
+ <argument ref="notificationPublishService" />
</bean>
<bean id="tapiServiceHandlerListener" class="org.opendaylight.transportpce.tapi.listeners.TapiServiceHandlerListenerImpl">
<bean id="tapiNetworkModelListenerImpl" class="org.opendaylight.transportpce.tapi.listeners.TapiNetworkModelListenerImpl">
<argument ref="networkTransactionImpl" />
+ <argument ref="notificationPublishService" />
</bean>
<bean id="tapiNetworkModelService" class="org.opendaylight.transportpce.tapi.topology.TapiNetworkModelServiceImpl">
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK2</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK1</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<xpdr-network-attributes xmlns="http://org/openroadm/network/topology">
<tail-equipment-id>ROADM-C1-SRG1--SRG1-PP1-TXRX</tail-equipment-id>
</xpdr-network-attributes>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK2</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK1</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
<node-ref>XPDR-C1-XPDR1</node-ref>
<tp-ref>XPDR1-NETWORK2</tp-ref>
</supporting-termination-point>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH</if-cap-type>
<node-ref>XPDR-C1-XPDR1</node-ref>
<tp-ref>XPDR1-NETWORK1</tp-ref>
</supporting-termination-point>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH</if-cap-type>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
<node-ref>XPDR-A1-XPDR1</node-ref>
<tp-ref>XPDR1-NETWORK2</tp-ref>
</supporting-termination-point>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH</if-cap-type>
<node-ref>XPDR-A1-XPDR1</node-ref>
<tp-ref>XPDR1-NETWORK1</tp-ref>
</supporting-termination-point>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
<supported-interface-capability>
<if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH</if-cap-type>
<dest-tp>XPDR1-NETWORK1</dest-tp>
<dest-node>SPDR-SA1-XPDR1</dest-node>
</destination>
- <otn-link-type xmlns="http://transportpce/topology">OTU4</otn-link-type>
+ <otn-link-type xmlns="http://org/opendaylight/transportpce/networkutils">OTU4</otn-link-type>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<link-id>OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1</link-id>
<dest-tp>XPDR1-NETWORK1</dest-tp>
<dest-node>SPDR-SC1-XPDR1</dest-node>
</destination>
- <otn-link-type xmlns="http://transportpce/topology">OTU4</otn-link-type>
+ <otn-link-type xmlns="http://org/opendaylight/transportpce/networkutils">OTU4</otn-link-type>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<link-id>ODTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1</link-id>
<dest-tp>XPDR1-NETWORK1</dest-tp>
<dest-node>SPDR-SA1-XPDR1</dest-node>
</destination>
- <otn-link-type xmlns="http://transportpce/topology">ODTU4</otn-link-type>
+ <otn-link-type xmlns="http://org/opendaylight/transportpce/networkutils">ODTU4</otn-link-type>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<link-id>ODTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1</link-id>
<dest-tp>XPDR1-NETWORK1</dest-tp>
<dest-node>SPDR-SC1-XPDR1</dest-node>
</destination>
- <otn-link-type xmlns="http://transportpce/topology">ODTU4</otn-link-type>
+ <otn-link-type xmlns="http://org/opendaylight/transportpce/networkutils">ODTU4</otn-link-type>
</link>
</network>
</networks>
case "$VERSION" in
"1.2.1") PLUGIN_VERSION=1.0.9
;;
- "2.2.1") PLUGIN_VERSION=2.0.9
+ "2.2.1") PLUGIN_VERSION=2.0.10
;;
- "7.1") PLUGIN_VERSION=7.1.6
+ "7.1") PLUGIN_VERSION=7.1.7
;;
*) echo "unsupported device version" >&2
continue
done
fi
if [ -z "$LAUNCHER" ]; then
- LAUNCHER="nosetests --with-xunit";
+ LAUNCHER="python3 -m pytest -q";
fi
for script in $scriptlist; do
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW1-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW2-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW3-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-3</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW3</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW3</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW4-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-4</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW4</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW4</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-RX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR-NW5-TX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">Client-5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">Client-5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>Client-5</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR-NW5</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR-NW5</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
"ietf-network-topology:termination-point": [
{
"tp-id": "XPDR-NW1-RX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-RX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-RX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-RX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW1-TX",
- "transportpce-topology:associated-connection-map-port": "Client-1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-1"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-RX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW2-TX",
- "transportpce-topology:associated-connection-map-port": "Client-2",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-2"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW5-TX",
- "transportpce-topology:associated-connection-map-port": "Client-5",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-5"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW3-TX",
- "transportpce-topology:associated-connection-map-port": "Client-3",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-3"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
},
{
"tp-id": "XPDR-NW4-TX",
- "transportpce-topology:associated-connection-map-port": "Client-4",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "Client-4"
+ ],
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
"administrative-state": "inService",
"operational-state": "inService"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
"org-openroadm-otn-network-topology:available-bandwidth": "0",
"org-openroadm-otn-network-topology:used-bandwidth": "400000",
"org-openroadm-common-network:link-type": "OTN-LINK",
- "transportpce-topology:otn-link-type": "OTUC4",
+ "transportpce-networkutils:otn-link-type": "OTUC4",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:opposite-link": "OTUC4-XPDR-C2-XPDR2-XPDR2-NETWORK1toXPDR-A2-XPDR2-XPDR2-NETWORK1"
"org-openroadm-common-network:link-type": "OTN-LINK",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
- "transportpce-topology:otn-link-type": "OTUC4",
+ "transportpce-networkutils:otn-link-type": "OTUC4",
"org-openroadm-common-network:opposite-link": "OTUC4-XPDR-A2-XPDR2-XPDR2-NETWORK1toXPDR-C2-XPDR2-XPDR2-NETWORK1"
},
{
"org-openroadm-otn-network-topology:available-bandwidth": "400000",
"org-openroadm-otn-network-topology:used-bandwidth": "0",
"org-openroadm-common-network:link-type": "OTN-LINK",
- "transportpce-topology:otn-link-type": "ODUC4",
+ "transportpce-networkutils:otn-link-type": "ODUC4",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:opposite-link": "ODUC4-XPDR-C2-XPDR2-XPDR2-NETWORK1toXPDR-A2-XPDR2-XPDR2-NETWORK1"
"org-openroadm-common-network:link-type": "OTN-LINK",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
- "transportpce-topology:otn-link-type": "ODUC4",
+ "transportpce-networkutils:otn-link-type": "ODUC4",
"org-openroadm-common-network:opposite-link": "ODUC4-XPDR-A2-XPDR2-XPDR2-NETWORK1toXPDR-C2-XPDR2-XPDR2-NETWORK1"
}
]
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT"
}
]
},
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1",
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ],
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK"
"org-openroadm-otn-network-topology:available-bandwidth": "400000",
"org-openroadm-otn-network-topology:used-bandwidth": "0",
"org-openroadm-common-network:link-type": "OTN-LINK",
- "transportpce-topology:otn-link-type": "OTUC4",
+ "transportpce-networkutils:otn-link-type": "OTUC4",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:opposite-link": "OTUC4-XPDR-C2-XPDR2-XPDR2-NETWORK1toXPDR-A2-XPDR2-XPDR2-NETWORK1"
"org-openroadm-common-network:link-type": "OTN-LINK",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
- "transportpce-topology:otn-link-type": "OTUC4",
+ "transportpce-networkutils:otn-link-type": "OTUC4",
"org-openroadm-common-network:opposite-link": "OTUC4-XPDR-A2-XPDR2-XPDR2-NETWORK1toXPDR-C2-XPDR2-XPDR2-NETWORK1"
}
]
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT2</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK2</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-CLIENT1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-NETWORK1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
<tp-id>XPDR1-NETWORK1</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+ <associated-connection-map-tp xmlns="http://org/openroadm/common/network">XPDR1-CLIENT1</associated-connection-map-tp>
<administrative-state xmlns="http://org/openroadm/common/network">inService</administrative-state>
<operational-state xmlns="http://org/openroadm/common/network">inService</operational-state>
</termination-point>
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT",
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1"
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ]
},
{
"tp-id": "XPDR1-NETWORK1",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1"
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ]
}
],
"supporting-node": [
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-CLIENT",
- "transportpce-topology:associated-connection-map-port": "XPDR1-NETWORK1"
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-NETWORK1"
+ ]
},
{
"tp-id": "XPDR1-NETWORK1",
"org-openroadm-common-network:operational-state": "inService",
"org-openroadm-common-network:administrative-state": "inService",
"org-openroadm-common-network:tp-type": "XPONDER-NETWORK",
- "transportpce-topology:associated-connection-map-port": "XPDR1-CLIENT1"
+ "org-openroadm-common-network:associated-connection-map-tp": [
+ "XPDR1-CLIENT1"
+ ]
}
],
"supporting-node": [
</measurement>
<measurement>
<granularity>24Hour</granularity>
- <pmParameterValue>-49.3</pmParameterValue>
+ <pmParameterValue>-21.3</pmParameterValue>
<pmParameterUnit>dBm</pmParameterUnit>
<validity>complete</validity>
</measurement>
</measurement>
<measurement>
<granularity>24Hour</granularity>
- <pmParameterValue>-49.3</pmParameterValue>
+ <pmParameterValue>-21.3</pmParameterValue>
<pmParameterUnit>dBm</pmParameterUnit>
<validity>complete</validity>
</measurement>
</current-pm-entry>
</current-pm-list>
+ <current-pm-description xmlns="http://honeynode-simulator/pm-handling">
+ <pm-generation-rules>
+ <triggering-interface xmlns:org-openroadm-interfaces="http://org/openroadm/interfaces">org-openroadm-interfaces:opticalTransport</triggering-interface>
+ <pm-name-prefix>opticalPowerOutput</pm-name-prefix>
+ <!--This PM is generated on ROADMs on creation of the first NMC (MediaChannel) interface nmc-ttp-DEGX-TTP-[TX/TXRX]-[frequency]-->
+ <!--Its value will be changed as additional NMC are created-->
+ <analog>true</analog>
+ <!--Default value is purely indicative, the value shall be set trough pm-interact RPC according to a value calculated from span loss and Power mask -->
+ <!--The value set through the RPC will be the value to keep as a reference out of any forced mode use to simulate a failure -->
+ <default-current-value>0</default-current-value>
+ <max-value>21.82</max-value>
+ <min-value>-9.0</min-value>
+ <!--Evolution range is a percentage of the min max range expressed in dB-->
+ <evolution-range>5</evolution-range>
+ </pm-generation-rules>
+ <pm-generation-rules>
+ <triggering-interface xmlns:org-openroadm-interfaces="http://org/openroadm/interfaces">org-openroadm-interfaces:opticalTransport</triggering-interface>
+ <pm-name-prefix>opticalPowerInput</pm-name-prefix>
+ <!--This PM is generated on ROADMs on creation of a NMC (MediaChannel) interface nmc-ttp-DEGX-TTP-[RX/TXRX]-[frequency]-->
+ <analog>true</analog>
+ <!--Default value is purely indicative, the value shall be set trough pm-interact RPC according to a value calculated from span loss and Power mask -->
+ <!--The value set through the RPC will be the value to keep as a reference out of any forced mode use to simulate a failure -->
+ <default-current-value>-17.0</default-current-value>
+ <max-value>-9.0</max-value>
+ <min-value>-25.0</min-value>
+ <!--Evolution range is a percentage of the min max range expressed in dB-->
+ <evolution-range>10</evolution-range>
+ </pm-generation-rules>
+ <pm-generation-rules>
+ <triggering-interface xmlns:org-openroadm-interfaces="http://org/openroadm/interfaces">org-openroadm-interfaces:openROADMOpticalMultiplex</triggering-interface>
+ <pm-name-prefix>opticalPowerOutput</pm-name-prefix>
+ <!--This PM is generated on ROADMs on creation of the first NMC (MediaChannel) interface nmc-ttp-DEGX-TTP-[TX/TXRX]-[frequency]-->
+ <!--Its value will be changed as additional NMC are created-->
+ <analog>true</analog>
+ <!--Default value is purely indicative, the value shall be set trough pm-interact RPC according to a value calculated from span loss and Power mask -->
+ <!--The value set through the RPC will be the value to keep as a reference out of any forced mode use to simulate a failure -->
+ <default-current-value>0</default-current-value>
+ <max-value>21.82</max-value>
+ <min-value>-9.0</min-value>
+ <!--Evolution range is a percentage of the min max range expressed in dB-->
+ <evolution-range>5</evolution-range>
+ </pm-generation-rules>
+ <pm-generation-rules>
+ <triggering-interface xmlns:org-openroadm-interfaces="http://org/openroadm/interfaces">org-openroadm-interfaces:openROADMOpticalMultiplex</triggering-interface>
+ <pm-name-prefix>opticalPowerInput</pm-name-prefix>
+ <!--This PM is generated on ROADMs on creation of a NMC (MediaChannel) interface nmc-ttp-DEGX-TTP-[RX/TXRX]-[frequency]-->
+ <analog>true</analog>
+ <!--Default value is purely indicative, the value shall be set trough pm-interact RPC according to a value calculated from span loss and Power mask -->
+ <!--The value set through the RPC will be the value to keep as a reference out of any forced mode use to simulate a failure -->
+ <default-current-value>-17.0</default-current-value>
+ <max-value>-9.0</max-value>
+ <min-value>-25.0</min-value>
+ <!--Evolution range is a percentage of the min max range expressed in dB-->
+ <evolution-range>10</evolution-range>
+ </pm-generation-rules>
+ </current-pm-description>
+
</data>
-nose # LGPL v2 or later
+pytest # MIT License
elif tpType == 'XPONDER-NETWORK':
network += 1
if tpId == 'XPDR1-NETWORK2':
- self.assertEqual(tp['transportpce-topology:associated-connection-map-port'], 'XPDR1-CLIENT3')
+ self.assertEqual(
+ tp['org-openroadm-common-network:associated-connection-map-tp'], ['XPDR1-CLIENT3'])
elif tpId == 'XPDR1-CLIENT3':
- self.assertEqual(tp['transportpce-topology:associated-connection-map-port'], 'XPDR1-NETWORK2')
+ self.assertEqual(
+ tp['org-openroadm-common-network:associated-connection-map-tp'], ['XPDR1-NETWORK2'])
self.assertTrue(client == 4)
self.assertTrue(network == 2)
listNode.remove(nodeId)
elif tpType == 'XPONDER-NETWORK':
network += 1
if tpId == 'XPDR1-NETWORK2':
- self.assertEqual(tp['transportpce-topology:associated-connection-map-port'], 'XPDR1-CLIENT2')
+ self.assertEqual(
+ tp['org-openroadm-common-network:associated-connection-map-tp'], ['XPDR1-CLIENT2'])
if tpId == 'XPDR1-CLIENT2':
- self.assertEqual(tp['transportpce-topology:associated-connection-map-port'], 'XPDR1-NETWORK2')
+ self.assertEqual(
+ tp['org-openroadm-common-network:associated-connection-map-tp'], ['XPDR1-NETWORK2'])
self.assertEqual(client, 2)
self.assertEqual(network, 2)
listNode.remove(nodeId)
for link in response['network'][0]['ietf-network-topology:link']:
self.assertIn(link['link-id'], listLinkId)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'OTU4')
+ link['transportpce-networkutils:otn-link-type'], 'OTU4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertEqual(
self.assertEqual(
link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'ODTU4')
+ link['transportpce-networkutils:otn-link-type'], 'ODTU4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertIn(link['org-openroadm-common-network:opposite-link'],
for link in res['network'][0]['ietf-network-topology:link']:
self.assertIn(link['link-id'], listLinkId)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'OTU4')
+ link['transportpce-networkutils:otn-link-type'], 'OTU4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertEqual(
for link in res['network'][0]['ietf-network-topology:link']:
self.assertIn(link['link-id'], listLinkId)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'OTU4')
+ link['transportpce-networkutils:otn-link-type'], 'OTU4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertEqual(
for link in res['network'][0]['ietf-network-topology:link']:
self.assertIn(link['link-id'], listLinkId)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'OTU4')
+ link['transportpce-networkutils:otn-link-type'], 'OTU4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertEqual(
for link in res['network'][0]['ietf-network-topology:link']:
self.assertIn(link['link-id'], listLinkId)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'OTU4')
+ link['transportpce-networkutils:otn-link-type'], 'OTU4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertEqual(
self.assertEqual(
link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'ODTU4')
+ link['transportpce-networkutils:otn-link-type'], 'ODTU4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertIn(link['org-openroadm-common-network:opposite-link'],
URL_CONFIG_ORDM_NET = "{}/config/ietf-network:networks/network/openroadm-network/"
URL_PORTMAPPING = "{}/config/transportpce-portmapping:network/nodes/"
URL_OPER_SERV_LIST = "{}/operational/org-openroadm-service:service-list/"
+URL_OPER_SERV_PATH_LIST = "{}/operational/transportpce-service-path:service-path-list/"
URL_GET_NBINOTIFICATIONS_PROCESS_SERV = "{}/operations/nbi-notifications:get-notifications-process-service/"
URL_GET_NBINOTIFICATIONS_ALARM_SERV = "{}/operations/nbi-notifications:get-notifications-alarm-service/"
URL_SERV_CREATE = "{}/operations/org-openroadm-service:service-create"
URL_OTN_SERVICE_PATH = "{}/operations/transportpce-device-renderer:otn-service-path"
URL_TAPI_CREATE_CONNECTIVITY = "{}/operations/tapi-connectivity:create-connectivity-service"
URL_TAPI_DELETE_CONNECTIVITY = "{}/operations/tapi-connectivity:delete-connectivity-service"
+URL_TAPI_GET_CONNECTIVITY = "{}/operations/tapi-connectivity:get-connectivity-service-details"
URL_CREATE_OTS_OMS = "{}/operations/transportpce-device-renderer:create-ots-oms"
URL_PATH_COMPUTATION_REQUEST = "{}/operations/transportpce-pce:path-computation-request"
URL_FULL_PORTMAPPING = "{}/config/transportpce-portmapping:network"
URL_TAPI_TOPOLOGY_DETAILS = "{}/operations/tapi-topology:get-topology-details"
URL_TAPI_NODE_DETAILS = "{}/operations/tapi-topology:get-node-details"
+URL_TAPI_NEP_DETAILS = "{}/operations/tapi-topology:get-node-edge-point-details"
URL_TAPI_SIP_LIST = "{}/operations/tapi-common:get-service-interface-point-list"
URL_TAPI_SERVICE_LIST = "{}/operations/tapi-connectivity:get-connectivity-service-list"
+URL_TAPI_NOTIFICATION_SUBS_SERVICE = "{}/operations/tapi-notification:create-notification-subscription-service"
+URL_TAPI_GET_NOTIFICATION_LIST = "{}/operations/tapi-notification:get-notification-list"
TYPE_APPLICATION_JSON = {'Content-Type': 'application/json', 'Accept': 'application/json'}
TYPE_APPLICATION_XML = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}
def get_service_list_request(suffix: str):
- url = URL_OPER_SERV_LIST + suffix
- return get_request(url)
+ return get_request(URL_OPER_SERV_LIST + suffix)
+
+
+def get_service_path_list_request(suffix: str):
+ return get_request(URL_OPER_SERV_PATH_LIST + suffix)
def service_create_request(attr):
return post_request(URL_TAPI_CREATE_CONNECTIVITY, topologyidorname)
+def tapi_get_connectivity_request(serviceidorname):
+ attr = {
+ "input": {
+ "service-id-or-name": serviceidorname}}
+ return post_request(URL_TAPI_GET_CONNECTIVITY, attr)
+
+
def tapi_delete_connectivity_request(serviceidorname):
attr = {
"input": {
return post_request(URL_TAPI_NODE_DETAILS, attr)
+def tapi_get_node_edge_point_details_request(topologyidorname, nodeidorname, nepidorname):
+ attr = {
+ "input": {
+ "topology-id-or-name": topologyidorname,
+ "node-id-or-name": nodeidorname,
+ "ep-id-or-name": nepidorname}}
+ return post_request(URL_TAPI_NEP_DETAILS, attr)
+
+
def tapi_get_sip_details_request():
return post_request(URL_TAPI_SIP_LIST, "")
return post_request(URL_TAPI_SERVICE_LIST, "")
+def tapi_create_notification_subscription_service_request(attr):
+ return post_request(URL_TAPI_NOTIFICATION_SUBS_SERVICE, attr)
+
+
+def tapi_get_notifications_list_request(attr):
+ return post_request(URL_TAPI_GET_NOTIFICATION_LIST, attr)
+
+
def shutdown_process(process):
if process is not None:
for child in psutil.Process(process.pid).children():
for link in res['network'][0]['ietf-network-topology:link']:
self.assertIn(link['link-id'], listLinkId)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'OTUC4')
+ link['transportpce-networkutils:otn-link-type'], 'OTUC4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertEqual(
self.assertEqual(
link['org-openroadm-otn-network-topology:used-bandwidth'], 0)
self.assertEqual(
- link['transportpce-topology:otn-link-type'], 'ODUC4')
+ link['transportpce-networkutils:otn-link-type'], 'ODUC4')
self.assertEqual(
link['org-openroadm-common-network:link-type'], 'OTN-LINK')
self.assertIn(link['org-openroadm-common-network:opposite-link'],
--- /dev/null
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2022 Orange, Inc. and others. All rights reserved.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# pylint: disable=invalid-name
+# pylint: disable=no-member
+# pylint: disable=too-many-public-methods
+# pylint: disable=too-many-lines
+
+import json
+import unittest
+import time
+import requests
+# pylint: disable=wrong-import-order
+import sys
+
+sys.path.append('transportpce_tests/common/')
+# pylint: disable=wrong-import-position
+# pylint: disable=import-error
+import test_utils # nopep8
+
+
+class TransportPCEtesting(unittest.TestCase):
+ processes = None
+ WAITING = 20 # nominal value is 300
+ NODE_VERSION_221 = '2.2.1'
+ NODE_VERSION_71 = '7.1'
+
+ cr_serv_sample_data = {
+ "input": {
+ "sdnc-request-header": {
+ "request-id": "request-1",
+ "rpc-action": "service-create",
+ "request-system-id": "appname"
+ },
+ "service-name": "service1",
+ "common-id": "commonId",
+ "connection-type": "service",
+ "service-resiliency": {
+ "resiliency": "org-openroadm-common-service-types:restorable"
+ },
+ "service-a-end": {
+ "service-rate": "400",
+ "node-id": "XPDR-A2",
+ "service-format": "Ethernet",
+ "clli": "NodeA",
+ "tx-direction": [
+ {
+ "index": 0
+ }
+ ],
+ "rx-direction": [
+ {
+ "index": 0
+ }
+ ],
+ "optic-type": "gray"
+ },
+ "service-z-end": {
+ "service-rate": "400",
+ "node-id": "XPDR-C2",
+ "service-format": "Ethernet",
+ "clli": "NodeC",
+ "tx-direction": [
+ {
+ "index": 0
+ }
+ ],
+ "rx-direction": [
+ {
+ "index": 0
+ }
+ ],
+ "optic-type": "gray"
+ },
+ "due-date": "2018-06-15T00:00:01Z",
+ "operator-contact": "pw1234"
+ }
+ }
+
+ service_path_service_1_AtoZ = [
+ {
+ "id": "16",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-CP-TXRX",
+ "tp-node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "17",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "14",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-CTP-TXRX",
+ "tp-node-id": "ROADM-C1-DEG1"
+ }
+ },
+ {
+ "id": "15",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX"
+ }
+ },
+ {
+ "id": "18",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-PP1-TXRX",
+ "tp-node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "19",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-C1-SRG1-SRG1-PP1-TXRXtoXPDR-C2-XPDR1-XPDR1-NETWORK1"
+ }
+ },
+ {
+ "id": "1",
+ "resource": {
+ "state": "inService",
+ "node-id": "XPDR-A2-XPDR1"
+ }
+ },
+ {
+ "id": "2",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-NETWORK1",
+ "tp-node-id": "XPDR-A2-XPDR1"
+ }
+ },
+ {
+ "id": "0",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-CLIENT1",
+ "tp-node-id": "XPDR-A2-XPDR1"
+ }
+ },
+ {
+ "id": "5",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "6",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-CP-TXRX",
+ "tp-node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "3",
+ "resource": {
+ "state": "inService",
+ "link-id": "XPDR-A2-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX"
+ }
+ },
+ {
+ "id": "4",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-PP1-TXRX",
+ "tp-node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "9",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-A1-DEG2"
+ }
+ },
+ {
+ "id": "7",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX"
+ }
+ },
+ {
+ "id": "8",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-CTP-TXRX",
+ "tp-node-id": "ROADM-A1-DEG2"
+ }
+ },
+ {
+ "id": "20",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-NETWORK1",
+ "tp-node-id": "XPDR-C2-XPDR1"
+ }
+ },
+ {
+ "id": "12",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-TTP-TXRX",
+ "tp-node-id": "ROADM-C1-DEG1"
+ }
+ },
+ {
+ "id": "13",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-C1-DEG1"
+ }
+ },
+ {
+ "id": "10",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-TTP-TXRX",
+ "tp-node-id": "ROADM-A1-DEG2"
+ }
+ },
+ {
+ "id": "21",
+ "resource": {
+ "state": "inService",
+ "node-id": "XPDR-C2-XPDR1"
+ }
+ },
+ {
+ "id": "11",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX"
+ }
+ },
+ {
+ "id": "22",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-CLIENT1",
+ "tp-node-id": "XPDR-C2-XPDR1"
+ }
+ }
+ ]
+
+ service_path_service_1_rerouted_AtoZ = [
+ {
+ "id": "27",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-C1-SRG1-SRG1-PP1-TXRXtoXPDR-C2-XPDR1-XPDR1-NETWORK1"
+ }
+ },
+ {
+ "id": "28",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-NETWORK1",
+ "tp-node-id": "XPDR-C2-XPDR1"
+ }
+ },
+ {
+ "id": "25",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "26",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-PP1-TXRX",
+ "tp-node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "29",
+ "resource": {
+ "state": "inService",
+ "node-id": "XPDR-C2-XPDR1"
+ }
+ },
+ {
+ "id": "30",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-CLIENT1",
+ "tp-node-id": "XPDR-C2-XPDR1"
+ }
+ },
+ {
+ "id": "12",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-TTP-TXRX",
+ "tp-node-id": "ROADM-B1-DEG1"
+ }
+ },
+ {
+ "id": "13",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-B1-DEG1"
+ }
+ },
+ {
+ "id": "10",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-TTP-TXRX",
+ "tp-node-id": "ROADM-A1-DEG1"
+ }
+ },
+ {
+ "id": "11",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX"
+ }
+ },
+ {
+ "id": "16",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-CTP-TXRX",
+ "tp-node-id": "ROADM-B1-DEG2"
+ }
+ },
+ {
+ "id": "17",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-B1-DEG2"
+ }
+ },
+ {
+ "id": "14",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-CTP-TXRX",
+ "tp-node-id": "ROADM-B1-DEG1"
+ }
+ },
+ {
+ "id": "15",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-B1-DEG1-DEG1-CTP-TXRXtoROADM-B1-DEG2-DEG2-CTP-TXRX"
+ }
+ },
+ {
+ "id": "18",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-TTP-TXRX",
+ "tp-node-id": "ROADM-B1-DEG2"
+ }
+ },
+ {
+ "id": "19",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX"
+ }
+ },
+ {
+ "id": "1",
+ "resource": {
+ "state": "inService",
+ "node-id": "XPDR-A2-XPDR1"
+ }
+ },
+ {
+ "id": "2",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-NETWORK1",
+ "tp-node-id": "XPDR-A2-XPDR1"
+ }
+ },
+ {
+ "id": "0",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR1-CLIENT1",
+ "tp-node-id": "XPDR-A2-XPDR1"
+ }
+ },
+ {
+ "id": "5",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "6",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-CP-TXRX",
+ "tp-node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "3",
+ "resource": {
+ "state": "inService",
+ "link-id": "XPDR-A2-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX"
+ }
+ },
+ {
+ "id": "4",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-PP1-TXRX",
+ "tp-node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "9",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-A1-DEG1"
+ }
+ },
+ {
+ "id": "7",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX"
+ }
+ },
+ {
+ "id": "8",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-CTP-TXRX",
+ "tp-node-id": "ROADM-A1-DEG1"
+ }
+ },
+ {
+ "id": "20",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-TTP-TXRX",
+ "tp-node-id": "ROADM-C1-DEG2"
+ }
+ },
+ {
+ "id": "23",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX"
+ }
+ },
+ {
+ "id": "24",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-CP-TXRX",
+ "tp-node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "21",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-C1-DEG2"
+ }
+ },
+ {
+ "id": "22",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-CTP-TXRX",
+ "tp-node-id": "ROADM-C1-DEG2"
+ }
+ }
+ ]
+
+ service_path_service_2_AtoZ = [
+ {
+ "id": "16",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-CP-TXRX",
+ "tp-node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "17",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "14",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-CTP-TXRX",
+ "tp-node-id": "ROADM-C1-DEG1"
+ }
+ },
+ {
+ "id": "15",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX"
+ }
+ },
+ {
+ "id": "18",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-PP2-TXRX",
+ "tp-node-id": "ROADM-C1-SRG1"
+ }
+ },
+ {
+ "id": "19",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-C1-SRG1-SRG1-PP2-TXRXtoXPDR-C2-XPDR3-XPDR3-NETWORK1"
+ }
+ },
+ {
+ "id": "1",
+ "resource": {
+ "state": "inService",
+ "node-id": "XPDR-A2-XPDR3"
+ }
+ },
+ {
+ "id": "2",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR3-NETWORK1",
+ "tp-node-id": "XPDR-A2-XPDR3"
+ }
+ },
+ {
+ "id": "0",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR3-CLIENT1",
+ "tp-node-id": "XPDR-A2-XPDR3"
+ }
+ },
+ {
+ "id": "5",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "6",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-CP-TXRX",
+ "tp-node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "3",
+ "resource": {
+ "state": "inService",
+ "link-id": "XPDR-A2-XPDR3-XPDR3-NETWORK1toROADM-A1-SRG1-SRG1-PP2-TXRX"
+ }
+ },
+ {
+ "id": "4",
+ "resource": {
+ "state": "inService",
+ "tp-id": "SRG1-PP2-TXRX",
+ "tp-node-id": "ROADM-A1-SRG1"
+ }
+ },
+ {
+ "id": "9",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-A1-DEG2"
+ }
+ },
+ {
+ "id": "7",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX"
+ }
+ },
+ {
+ "id": "8",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-CTP-TXRX",
+ "tp-node-id": "ROADM-A1-DEG2"
+ }
+ },
+ {
+ "id": "20",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR3-NETWORK1",
+ "tp-node-id": "XPDR-C2-XPDR3"
+ }
+ },
+ {
+ "id": "12",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG1-TTP-TXRX",
+ "tp-node-id": "ROADM-C1-DEG1"
+ }
+ },
+ {
+ "id": "13",
+ "resource": {
+ "state": "inService",
+ "node-id": "ROADM-C1-DEG1"
+ }
+ },
+ {
+ "id": "10",
+ "resource": {
+ "state": "inService",
+ "tp-id": "DEG2-TTP-TXRX",
+ "tp-node-id": "ROADM-A1-DEG2"
+ }
+ },
+ {
+ "id": "21",
+ "resource": {
+ "state": "inService",
+ "node-id": "XPDR-C2-XPDR3"
+ }
+ },
+ {
+ "id": "11",
+ "resource": {
+ "state": "inService",
+ "link-id": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX"
+ }
+ },
+ {
+ "id": "22",
+ "resource": {
+ "state": "inService",
+ "tp-id": "XPDR3-CLIENT1",
+ "tp-node-id": "XPDR-C2-XPDR3"
+ }
+ }
+ ]
+
+ @classmethod
+ def setUpClass(cls):
+ cls.processes = test_utils.start_tpce()
+ cls.processes = test_utils.start_sims([('xpdra2', cls.NODE_VERSION_71),
+ ('roadma', cls.NODE_VERSION_221),
+ ('roadmb', cls.NODE_VERSION_221),
+ ('roadmc', cls.NODE_VERSION_221),
+ ('xpdrc2', cls.NODE_VERSION_71)])
+
+ @classmethod
+ def tearDownClass(cls):
+ # pylint: disable=not-an-iterable
+ for process in cls.processes:
+ test_utils.shutdown_process(process)
+ print("all processes killed")
+
+ def setUp(self):
+ time.sleep(2)
+
+ def test_01_connect_xpdra2(self):
+ response = test_utils.mount_device("XPDR-A2", ('xpdra2', self.NODE_VERSION_71))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_02_connect_xpdrc2(self):
+ response = test_utils.mount_device("XPDR-C2", ('xpdrc2', self.NODE_VERSION_71))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_03_connect_rdma(self):
+ response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_04_connect_rdmb(self):
+ response = test_utils.mount_device("ROADM-B1", ('roadmb', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_05_connect_rdmc(self):
+ response = test_utils.mount_device("ROADM-C1", ('roadmc', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code,
+ requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_06_connect_xprda2_1_N1_to_roadma_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-A2", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Xponder Roadm Link created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_07_connect_roadma_PP1_to_xpdra2_1_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-A2", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Roadm Xponder links created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_08_connect_xprdc2_1_N1_to_roadmc_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-C2", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Xponder Roadm Link created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_09_connect_roadmc_PP1_to_xpdrc2_1_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-C2", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Roadm Xponder links created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_10_connect_xprda2_3_N1_to_roadma_PP2(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-A2", "3", "1",
+ "ROADM-A1", "1", "SRG1-PP2-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Xponder Roadm Link created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_11_connect_roadma_PP2_to_xpdra2_3_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-A2", "3", "1",
+ "ROADM-A1", "1", "SRG1-PP2-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Roadm Xponder links created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_12_connect_xprdc2_3_N1_to_roadmc_PP2(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-C2", "3", "1",
+ "ROADM-C1", "1", "SRG1-PP2-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Xponder Roadm Link created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_13_connect_roadmc_PP2_to_xpdrc2_3_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-C2", "3", "1",
+ "ROADM-C1", "1", "SRG1-PP2-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Roadm Xponder links created successfully',
+ response.json()["output"]["result"])
+ time.sleep(2)
+
+ def test_14_add_omsAttributes_roadma_roadmc(self):
+ # Config ROADMA-ROADMC oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_15_add_omsAttributes_roadmc_roadma(self):
+ # Config ROADMC-ROADMA oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_16_add_omsAttributes_roadma_roadmb(self):
+ # Config ROADMA-ROADMB oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_17_add_omsAttributes_roadmb_roadma(self):
+ # Config ROADMB-ROADMA oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_18_add_omsAttributes_roadmb_roadmc(self):
+ # Config ROADMB-ROADMC oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_19_add_omsAttributes_roadmc_roadmb(self):
+ # Config ROADMC-ROADMB oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_20_create_OTS_ROADMA_DEG1(self):
+ response = test_utils.create_ots_oms_request("ROADM-A1", "DEG1-TTP-TXRX")
+ time.sleep(5)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADM-A1',
+ response.json()["output"]["result"])
+
+ def test_21_create_OTS_ROADMC_DEG2(self):
+ response = test_utils.create_ots_oms_request("ROADM-C1", "DEG2-TTP-TXRX")
+ time.sleep(5)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADM-C1',
+ response.json()["output"]["result"])
+
+ def test_22_create_OTS_ROADMB_DEG1(self):
+ response = test_utils.create_ots_oms_request("ROADM-B1", "DEG1-TTP-TXRX")
+ time.sleep(5)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADM-B1',
+ response.json()["output"]["result"])
+
+ def test_23_create_OTS_ROADMB_DEG2(self):
+ response = test_utils.create_ots_oms_request("ROADM-B1", "DEG2-TTP-TXRX")
+ time.sleep(5)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADM-B1',
+ response.json()["output"]["result"])
+
+ def test_24_calculate_span_loss_base_all(self):
+ data = {
+ "input": {
+ "src-type": "all"
+ }
+ }
+ response = test_utils.post_request("{}/operations/transportpce-olm:calculate-spanloss-base", data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Success',
+ res["output"]["result"])
+ self.assertIn({
+ "spanloss": "25.7",
+ "link-id": "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "23.6",
+ "link-id": "ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "23.6",
+ "link-id": "ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "17.6",
+ "link-id": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "25.7",
+ "link-id": "ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX"
+ }, res["output"]["spans"])
+ self.assertIn({
+ "spanloss": "17.6",
+ "link-id": "ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX"
+ }, res["output"]["spans"])
+
+ # test service-create for Eth service from xpdr to xpdr with service-resiliency
+ def test_25_create_eth_service1_with_service_resiliency_restorable(self):
+ self.cr_serv_sample_data["input"]["service-name"] = "service1"
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('PCE calculation in progress',
+ response.json()['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_26_get_eth_service1(self):
+ response = test_utils.get_service_list_request("services/service1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['operational-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service1')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'service')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ self.assertEqual(
+ res['services'][0]['service-resiliency']['resiliency'], 'org-openroadm-common-service-types:restorable')
+ time.sleep(2)
+
+ def test_27_get_service_path_service_1(self):
+ response = test_utils.get_service_path_list_request("service-paths/service1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertCountEqual(self.service_path_service_1_AtoZ,
+ response.json()['service-paths'][0]['path-description']['aToZ-direction']['aToZ'])
+
+ # test service-create for Eth service from xpdr to xpdr without service-resiliency
+ def test_28_create_eth_service2_without_service_resiliency(self):
+ self.cr_serv_sample_data["input"]["service-name"] = "service2"
+ del self.cr_serv_sample_data["input"]["service-resiliency"]
+ response = test_utils.service_create_request(self.cr_serv_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('PCE calculation in progress',
+ response.json()['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_29_get_eth_service2(self):
+ response = test_utils.get_service_list_request("services/service2")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['operational-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service2')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'service')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ self.assertNotIn('service-resiliency', res['services'][0])
+ time.sleep(2)
+
+ def test_30_get_service_path_service_2(self):
+ response = test_utils.get_service_path_list_request("service-paths/service2")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertCountEqual(self.service_path_service_2_AtoZ,
+ response.json()['service-paths'][0]['path-description']['aToZ-direction']['aToZ'])
+
+ # Degrade ROADM-A1-ROADM-C1 link
+ def test_31_set_pm_ROADMA_OTS_DEG2_TTP_TXRX_OpticalPowerInput(self):
+ url = "{}/operations/pm-handling:pm-interact"
+ body = {
+ "input": {
+ "rpc-action": "set",
+ "pm-to-be-set-or-created": {
+ "current-pm-entry": [
+ {
+ "pm-resource-instance": "/org-openroadm-device:org-openroadm-device/org-openroadm-device"
+ ":interface[org-openroadm-device:name='OTS-DEG2-TTP-TXRX']",
+ "pm-resource-type": "interface",
+ "pm-resource-type-extension": "",
+ "current-pm": [
+ {
+ "type": "opticalPowerInput",
+ "extension": "",
+ "location": "nearEnd",
+ "direction": "rx",
+ "measurement": [
+ {
+ "granularity": "15min",
+ "pmParameterValue": -30,
+ "pmParameterUnit": "dBm",
+ "validity": "complete"
+ },
+ {
+ "granularity": "24Hour",
+ "pmParameterValue": -21.3,
+ "pmParameterUnit": "dBm",
+ "validity": "complete"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ response = requests.request("POST", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertEqual(response.json()['output']['status-message'], "The PMs has been successfully set !")
+ time.sleep(self.WAITING * 2)
+
+ def test_32_get_eth_service1(self):
+ self.test_26_get_eth_service1()
+
+ def test_33_get_service_path_service_1(self):
+ response = test_utils.get_service_path_list_request("service-paths/service1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ print(response.json())
+ self.assertCountEqual(self.service_path_service_1_rerouted_AtoZ,
+ response.json()['service-paths'][0]['path-description']['aToZ-direction']['aToZ'])
+
+ def test_34_get_eth_service2(self):
+ response = test_utils.get_service_list_request("services/service2")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['operational-state'], 'outOfService')
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], 'service2')
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'service')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ self.assertNotIn('service-resiliency', res['services'][0])
+ time.sleep(2)
+
+ def test_35_get_service_path_service_2(self):
+ response = test_utils.get_service_path_list_request("service-paths/service2")
+ index = self.service_path_service_2_AtoZ.index(
+ {
+ 'id': '10',
+ 'resource': {
+ 'state': 'inService',
+ 'tp-id': 'DEG2-TTP-TXRX',
+ 'tp-node-id': 'ROADM-A1-DEG2'
+ }
+ }
+ )
+ service_path_expected = self.service_path_service_2_AtoZ[:index] + [{
+ 'id': '10',
+ 'resource': {
+ 'state': 'outOfService',
+ 'tp-id': 'DEG2-TTP-TXRX',
+ 'tp-node-id': 'ROADM-A1-DEG2'
+ }
+ }] + self.service_path_service_2_AtoZ[index + 1:]
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertCountEqual(service_path_expected,
+ response.json()['service-paths'][0]['path-description']['aToZ-direction']['aToZ'])
+
+ # Restore ROADM-A1-ROADM-C1 link
+ def test_36_clear_pm_ROADMA_OTS_DEG2_TTP_TXRX_OpticalPowerInput(self):
+ url = "{}/operations/pm-handling:pm-interact"
+ body = {
+ "input": {
+ "rpc-action": "clear",
+ "pm-to-get-clear-or-delete": {
+ "current-pm-entry": [
+ {
+ "pm-resource-instance": "/org-openroadm-device:org-openroadm-device/org-openroadm-device"
+ ":interface[org-openroadm-device:name='OTS-DEG2-TTP-TXRX']",
+ "pm-resource-type": "interface",
+ "pm-resource-type-extension": "",
+ "current-pm": [
+ {
+ "type": "opticalPowerInput",
+ "extension": "",
+ "location": "nearEnd",
+ "direction": "rx"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ response = requests.request("POST", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertEqual(response.json()['output']['status-message'], "The PMs has been successfully released !")
+ time.sleep(2)
+
+ def test_37_get_eth_service1(self):
+ self.test_26_get_eth_service1()
+
+ def test_38_get_service_path_service_1(self):
+ self.test_33_get_service_path_service_1()
+
+ def test_39_get_eth_service2(self):
+ self.test_29_get_eth_service2()
+
+ def test_40_get_service_path_service_2(self):
+ self.test_30_get_service_path_service_2()
+
+ def test_41_delete_eth_service2(self):
+ response = test_utils.service_delete_request("service2")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Renderer service delete in progress',
+ response.json()['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_42_delete_eth_service1(self):
+ response = test_utils.service_delete_request("service1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertIn('Renderer service delete in progress',
+ response.json()['output']['configuration-response-common']['response-message'])
+ time.sleep(self.WAITING)
+
+ def test_43_disconnect_xponders_from_roadm(self):
+ url = "{}/config/ietf-network:networks/network/openroadm-topology/ietf-network-topology:link/"
+ response = test_utils.get_ordm_topo_request("")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ links = response.json()['network'][0]['ietf-network-topology:link']
+ for link in links:
+ if link["org-openroadm-common-network:link-type"] in ('XPONDER-OUTPUT', 'XPONDER-INPUT'):
+ self.assertEqual(test_utils.delete_request(url + link["link-id"]).status_code, requests.codes.ok)
+
+ def test_44_disconnect_xpdra2(self):
+ response = test_utils.unmount_device("XPDR-A2")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_45_disconnect_xpdrc2(self):
+ response = test_utils.unmount_device("XPDR-C2")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_46_disconnect_roadmA(self):
+ response = test_utils.unmount_device("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_47_disconnect_roadmB(self):
+ response = test_utils.unmount_device("ROADM-B1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+ def test_48_disconnect_roadmC(self):
+ response = test_utils.unmount_device("ROADM-C1")
+ self.assertEqual(response.status_code, requests.codes.ok,
+ test_utils.CODE_SHOULD_BE_200)
+
+
+if __name__ == "__main__":
+ unittest.main(verbosity=2)
--- /dev/null
+#!/usr/bin/env python
+##############################################################################
+# Copyright (c) 2021 Orange, Inc. and others. All rights reserved.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# pylint: disable=no-member
+# pylint: disable=too-many-public-methods
+import os
+import json
+import unittest
+import time
+import requests
+# pylint: disable=wrong-import-order
+import sys
+sys.path.append('transportpce_tests/common/')
+# pylint: disable=wrong-import-position
+# pylint: disable=import-error
+import test_utils # nopep8
+
+# pylint: disable=too-few-public-methods
+
+
+class UuidServices:
+ def __init__(self):
+ # pylint: disable=invalid-name
+ self.pm = None
+ self.odu = None
+ self.dsr = None
+ self.eth = None
+
+
+class TransportPCEFulltesting(unittest.TestCase):
+
+ cr_serv_sample_data = {
+ "input": {
+ "end-point": [
+ {
+ "layer-protocol-name": "DSR",
+ "service-interface-point": {
+ "service-interface-point-uuid": "b1f4bd3b-7fa9-367b-a8ab-6e80293238df"
+ },
+ "administrative-state": "UNLOCKED",
+ "operational-state": "ENABLED",
+ "direction": "BIDIRECTIONAL",
+ "role": "SYMMETRIC",
+ "protection-role": "WORK",
+ "local-id": "XPDR-C1-XPDR1",
+ "name": [
+ {
+ "value-name": "OpenROADM node id",
+ "value": "XPDR-C1-XPDR1"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "DSR",
+ "service-interface-point": {
+ "service-interface-point-uuid": "b5964ce9-274c-3f68-b4d1-83c0b61bc74e"
+ },
+ "administrative-state": "UNLOCKED",
+ "operational-state": "ENABLED",
+ "direction": "BIDIRECTIONAL",
+ "role": "SYMMETRIC",
+ "protection-role": "WORK",
+ "local-id": "XPDR-A1-XPDR1",
+ "name": [
+ {
+ "value-name": "OpenROADM node id",
+ "value": "XPDR-A1-XPDR1"
+ }
+ ]
+ }
+ ],
+ "connectivity-constraint": {
+ "service-layer": "ETH",
+ "service-type": "POINT_TO_POINT_CONNECTIVITY",
+ "service-level": "Some service-level",
+ "requested-capacity": {
+ "total-size": {
+ "value": "100",
+ "unit": "GB"
+ }
+ }
+ },
+ "state": "Some state"
+ }
+ }
+
+ processes = []
+ uuid_services = UuidServices()
+ WAITING = 25 # nominal value is 300
+ NODE_VERSION_221 = '2.2.1'
+
+ @classmethod
+ def setUpClass(cls):
+ # pylint: disable=unsubscriptable-object
+ cls.init_failed = False
+ os.environ['JAVA_MIN_MEM'] = '1024M'
+ os.environ['JAVA_MAX_MEM'] = '4096M'
+ cls.processes = test_utils.start_tpce()
+ # TAPI feature is not installed by default in Karaf
+ if "USE_LIGHTY" not in os.environ or os.environ['USE_LIGHTY'] != 'True':
+ print("installing tapi feature...")
+ result = test_utils.install_karaf_feature("odl-transportpce-tapi")
+ if result.returncode != 0:
+ cls.init_failed = True
+ print("Restarting OpenDaylight...")
+ test_utils.shutdown_process(cls.processes[0])
+ cls.processes[0] = test_utils.start_karaf()
+ test_utils.process_list[0] = cls.processes[0]
+ cls.init_failed = not test_utils.wait_until_log_contains(
+ test_utils.KARAF_LOG, test_utils.KARAF_OK_START_MSG, time_to_wait=60)
+ if cls.init_failed:
+ print("tapi installation feature failed...")
+ test_utils.shutdown_process(cls.processes[0])
+ sys.exit(2)
+ cls.processes = test_utils.start_tpce()
+ cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_221),
+ ('roadma', cls.NODE_VERSION_221),
+ ('roadmc', cls.NODE_VERSION_221),
+ ('xpdrc', cls.NODE_VERSION_221)])
+
+ @classmethod
+ def tearDownClass(cls):
+ # pylint: disable=not-an-iterable
+ for process in cls.processes:
+ test_utils.shutdown_process(process)
+ print("all processes killed")
+ time.sleep(10)
+
+ def setUp(self): # instruction executed before each test method
+ # pylint: disable=consider-using-f-string
+ print("execution of {}".format(self.id().split(".")[-1]))
+
+ def test_01_connect_xpdrA(self):
+ response = test_utils.mount_device("XPDR-A1", ('xpdra', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_02_connect_xpdrC(self):
+ response = test_utils.mount_device("XPDR-C1", ('xpdrc', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_03_connect_rdmA(self):
+ response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_04_connect_rdmC(self):
+ response = test_utils.mount_device("ROADM-C1", ('roadmc', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_05_connect_xprdA_N1_to_roadmA_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-A1", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_06_connect_roadmA_PP1_to_xpdrA_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-A1", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_07_connect_xprdC_N1_to_roadmC_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-C1", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_08_connect_roadmC_PP1_to_xpdrC_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-C1", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_09_add_omsAttributes_ROADMA_ROADMC(self):
+ # Config ROADMA-ROADMC oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_10_add_omsAttributes_ROADMC_ROADMA(self):
+ # Config ROADMC-ROADMA oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+# test service-create for Eth service from xpdr to xpdr
+ def test_11_create_connectivity_service_Ethernet(self):
+ response = test_utils.tapi_create_connectivity_request(self.cr_serv_sample_data)
+ time.sleep(self.WAITING)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.uuid_services.eth = res['output']['service']['uuid']
+ # pylint: disable=consider-using-f-string
+
+ input_dict_1 = {'administrative-state': 'LOCKED',
+ 'lifecycle-state': 'PLANNED',
+ 'operational-state': 'DISABLED',
+ 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ 'service-layer': 'ETH',
+ 'connectivity-direction': 'BIDIRECTIONAL'
+ }
+ input_dict_2 = {'value-name': 'OpenROADM node id',
+ 'value': 'XPDR-C1-XPDR1'}
+ input_dict_3 = {'value-name': 'OpenROADM node id',
+ 'value': 'XPDR-A1-XPDR1'}
+
+ self.assertDictEqual(dict(input_dict_1, **res['output']['service']),
+ res['output']['service'])
+ self.assertDictEqual(dict(input_dict_2, **res['output']['service']['end-point'][0]['name'][0]),
+ res['output']['service']['end-point'][0]['name'][0])
+ self.assertDictEqual(dict(input_dict_3, **res['output']['service']['end-point'][1]['name'][0]),
+ res['output']['service']['end-point'][1]['name'][0])
+ # If the gate fails is because of the waiting time not being enough
+ time.sleep(self.WAITING)
+
+ def test_12_get_service_Ethernet(self):
+ response = test_utils.get_service_list_request("services/" + str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], self.uuid_services.eth)
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'service')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_13_get_connectivity_service_Ethernet(self):
+ response = test_utils.tapi_get_connectivity_request(str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['output']['service']['operational-state'], 'ENABLED')
+ self.assertEqual(
+ res['output']['service']['name'][0]['value'], self.uuid_services.eth)
+ self.assertEqual(
+ res['output']['service']['administrative-state'], 'UNLOCKED')
+ self.assertEqual(
+ res['output']['service']['lifecycle-state'], 'INSTALLED')
+ time.sleep(2)
+
+ def test_14_change_status_line_port_xpdrc(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/1%2F0%2F1-PLUG-NET/ports/1"
+ body = {"ports": [{
+ "port-name": "1",
+ "port-type": "CFP2",
+ "administrative-state": "outOfService",
+ "port-qual": "xpdr-network"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8144/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_15_check_update_portmapping(self):
+ response = test_utils.portmapping_request("XPDR-C1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ mapping_list = res['nodes'][0]['mapping']
+ for mapping in mapping_list:
+ if mapping['logical-connection-point'] == 'XPDR1-NETWORK1':
+ self.assertEqual(mapping['port-oper-state'], 'OutOfService',
+ "Operational State should be 'OutOfService'")
+ self.assertEqual(mapping['port-admin-state'], 'OutOfService',
+ "Administrative State should be 'OutOfService'")
+ else:
+ self.assertEqual(mapping['port-oper-state'], 'InService',
+ "Operational State should be 'InService'")
+ self.assertEqual(mapping['port-admin-state'], 'InService',
+ "Administrative State should be 'InService'")
+ time.sleep(1)
+
+ def test_16_check_update_openroadm_topo(self):
+ url = test_utils.URL_CONFIG_ORDM_TOPO
+ response = test_utils.get_request(url)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ node_list = res['network'][0]['node']
+ nb_updated_tp = 0
+ for node in node_list:
+ self.assertEqual(node['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(node['org-openroadm-common-network:administrative-state'], 'inService')
+ tp_list = node['ietf-network-topology:termination-point']
+ for tp in tp_list:
+ if node['node-id'] == 'XPDR-C1-XPDR1' and tp['tp-id'] == 'XPDR1-NETWORK1':
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'outOfService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'outOfService')
+ nb_updated_tp += 1
+ else:
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'inService')
+ self.assertEqual(nb_updated_tp, 1, "Only one termination-point should have been modified")
+
+ link_list = res['network'][0]['ietf-network-topology:link']
+ updated_links = ['XPDR-C1-XPDR1-XPDR1-NETWORK1toROADM-C1-SRG1-SRG1-PP1-TXRX',
+ 'ROADM-C1-SRG1-SRG1-PP1-TXRXtoXPDR-C1-XPDR1-XPDR1-NETWORK1']
+ nb_updated_link = 0
+ for link in link_list:
+ if link['link-id'] in updated_links:
+ self.assertEqual(link['org-openroadm-common-network:operational-state'], 'outOfService')
+ self.assertEqual(link['org-openroadm-common-network:administrative-state'], 'outOfService')
+ nb_updated_link += 1
+ else:
+ 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)
+
+ def test_17_check_update_tapi_neps(self):
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "XPDR-C1-XPDR1+OTSi")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['output']['node']['owned-node-edge-point']
+ nb_updated_neps = 0
+ 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'")
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "XPDR-C1-XPDR1+DSR")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['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")
+ time.sleep(1)
+
+ def test_18_check_update_tapi_links(self):
+ response = test_utils.tapi_get_topology_details_request("T0 - Full Multi-layer topology")
+ time.sleep(2)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ link_list = res['output']['topology']['link']
+ nb_updated_link = 0
+ for link in link_list:
+ if all(x in link['name'][0]['value'] for x in ['XPDR-C1-XPDR1', 'XPDR1-NETWORK1']):
+ self.assertEqual(link['operational-state'], 'DISABLED')
+ self.assertEqual(link['administrative-state'], 'LOCKED')
+ nb_updated_link += 1
+ 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")
+ time.sleep(1)
+
+ def test_19_check_update_service_Ethernet(self):
+ response = test_utils.get_service_list_request(
+ "services/" + str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(res['services'][0]['operational-state'], 'outOfService')
+ self.assertEqual(res['services'][0]['administrative-state'], 'inService')
+ time.sleep(1)
+
+ def test_20_check_update_connectivity_service_Ethernet(self):
+ response = test_utils.tapi_get_connectivity_request(str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['output']['service']['operational-state'], 'DISABLED')
+ self.assertEqual(
+ res['output']['service']['administrative-state'], 'LOCKED')
+ time.sleep(1)
+
+ def test_21_restore_status_line_port_xpdrc(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/1%2F0%2F1-PLUG-NET/ports/1"
+ body = {"ports": [{
+ "port-name": "1",
+ "port-type": "CFP2",
+ "administrative-state": "inService",
+ "port-qual": "xpdr-network"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8144/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_22_check_update_portmapping_ok(self):
+ response = test_utils.portmapping_request("XPDR-C1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ mapping_list = res['nodes'][0]['mapping']
+ for mapping in mapping_list:
+ self.assertEqual(mapping['port-oper-state'], 'InService',
+ "Operational State should be 'InService'")
+ self.assertEqual(mapping['port-admin-state'], 'InService',
+ "Administrative State should be 'InService'")
+ time.sleep(1)
+
+ def test_23_check_update_openroadm_topo_ok(self):
+ url = test_utils.URL_CONFIG_ORDM_TOPO
+ response = test_utils.get_request(url)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ node_list = res['network'][0]['node']
+ for node in node_list:
+ self.assertEqual(node['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(node['org-openroadm-common-network:administrative-state'], 'inService')
+ tp_list = node['ietf-network-topology:termination-point']
+ for tp in tp_list:
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'inService')
+
+ link_list = res['network'][0]['ietf-network-topology:link']
+ for link in link_list:
+ self.assertEqual(link['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(link['org-openroadm-common-network:administrative-state'], 'inService')
+ time.sleep(1)
+
+ def test_24_check_update_tapi_neps_ok(self):
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "XPDR-C1-XPDR1+OTSi")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['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'")
+
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "XPDR-C1-XPDR1+DSR")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['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):
+ response = test_utils.tapi_get_topology_details_request(
+ "T0 - Full Multi-layer topology")
+ time.sleep(2)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ link_list = res['output']['topology']['link']
+ for link in link_list:
+ self.assertEqual(link['operational-state'], 'ENABLED')
+ self.assertEqual(link['administrative-state'], 'UNLOCKED')
+
+ time.sleep(1)
+
+ def test_26_check_update_service1_ok(self):
+ self.test_12_get_service_Ethernet()
+
+ def test_27_check_update_connectivity_service_Ethernet_ok(self):
+ self.test_13_get_connectivity_service_Ethernet()
+
+ def test_28_change_status_port_roadma_srg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/3%2F0/ports/C1"
+ body = {"ports": [{
+ "port-name": "C1",
+ "logical-connection-point": "SRG1-PP1",
+ "port-type": "client",
+ "circuit-id": "SRG1",
+ "administrative-state": "outOfService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_29_check_update_portmapping(self):
+ response = test_utils.portmapping_request("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ mapping_list = res['nodes'][0]['mapping']
+ for mapping in mapping_list:
+ if mapping['logical-connection-point'] == 'SRG1-PP1-TXRX':
+ self.assertEqual(mapping['port-oper-state'], 'OutOfService',
+ "Operational State should be 'OutOfService'")
+ self.assertEqual(mapping['port-admin-state'], 'OutOfService',
+ "Administrative State should be 'OutOfService'")
+ else:
+ self.assertEqual(mapping['port-oper-state'], 'InService',
+ "Operational State should be 'InService'")
+ self.assertEqual(mapping['port-admin-state'], 'InService',
+ "Administrative State should be 'InService'")
+ time.sleep(1)
+
+ def test_30_check_update_openroadm_topo(self):
+ url = test_utils.URL_CONFIG_ORDM_TOPO
+ response = test_utils.get_request(url)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ node_list = res['network'][0]['node']
+ nb_updated_tp = 0
+ for node in node_list:
+ self.assertEqual(node['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(node['org-openroadm-common-network:administrative-state'], 'inService')
+ tp_list = node['ietf-network-topology:termination-point']
+ for tp in tp_list:
+ if node['node-id'] == 'ROADM-A1-SRG1' and tp['tp-id'] == 'SRG1-PP1-TXRX':
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'outOfService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'outOfService')
+ nb_updated_tp += 1
+ else:
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'inService')
+ self.assertEqual(nb_updated_tp, 1, "Only one termination-point should have been modified")
+
+ link_list = res['network'][0]['ietf-network-topology:link']
+ updated_links = ['XPDR-A1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX',
+ 'ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1']
+ nb_updated_link = 0
+ for link in link_list:
+ if link['link-id'] in updated_links:
+ self.assertEqual(link['org-openroadm-common-network:operational-state'], 'outOfService')
+ self.assertEqual(link['org-openroadm-common-network:administrative-state'], 'outOfService')
+ nb_updated_link += 1
+ else:
+ 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)
+
+ def test_31_check_update_tapi_neps(self):
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "ROADM-A1+PHOTONIC_MEDIA")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['output']['node']['owned-node-edge-point']
+ nb_updated_neps = 0
+ for nep in nep_list:
+ if 'SRG1-PP1-TXRX' 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, "Only three roadm neps should have been modified")
+ time.sleep(1)
+
+ def test_32_check_update_tapi_links(self):
+ response = test_utils.tapi_get_topology_details_request(
+ "T0 - Full Multi-layer topology")
+ time.sleep(2)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ link_list = res['output']['topology']['link']
+ nb_updated_link = 0
+ for link in link_list:
+ if all(x in link['name'][0]['value'] for x in ['ROADM-A1', 'SRG1-PP1-TXRX']):
+ self.assertEqual(link['operational-state'], 'DISABLED')
+ self.assertEqual(link['administrative-state'], 'LOCKED')
+ nb_updated_link += 1
+ else:
+ self.assertEqual(link['operational-state'], 'ENABLED')
+ self.assertEqual(link['administrative-state'], 'UNLOCKED')
+ self.assertEqual(nb_updated_link, 1,
+ "Only one xponder-output/input link should have been modified")
+ time.sleep(1)
+
+ def test_33_check_update_service_Ethernet(self):
+ self.test_19_check_update_service_Ethernet()
+
+ def test_34_check_update_connectivity_service_Ethernet(self):
+ self.test_20_check_update_connectivity_service_Ethernet()
+
+ def test_35_restore_status_port_roadma_srg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/3%2F0/ports/C1"
+ body = {"ports": [{
+ "port-name": "C1",
+ "logical-connection-point": "SRG1-PP1",
+ "port-type": "client",
+ "circuit-id": "SRG1",
+ "administrative-state": "inService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_36_check_update_portmapping_ok(self):
+ response = test_utils.portmapping_request("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ mapping_list = res['nodes'][0]['mapping']
+ for mapping in mapping_list:
+ self.assertEqual(mapping['port-oper-state'], 'InService',
+ "Operational State should be 'InService'")
+ self.assertEqual(mapping['port-admin-state'], 'InService',
+ "Administrative State should be 'InService'")
+ time.sleep(1)
+
+ def test_37_check_update_openroadm_topo_ok(self):
+ self.test_23_check_update_openroadm_topo_ok()
+
+ def test_38_check_update_tapi_neps_ok(self):
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "ROADM-A1+PHOTONIC_MEDIA")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['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_39_check_update_tapi_links_ok(self):
+ self.test_25_check_update_tapi_links_ok()
+
+ def test_40_check_update_service1_ok(self):
+ self.test_12_get_service_Ethernet()
+
+ def test_41_check_update_connectivity_service_Ethernet_ok(self):
+ self.test_13_get_connectivity_service_Ethernet()
+
+ def test_42_change_status_line_port_roadma_deg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/2%2F0/ports/L1"
+ body = {"ports": [{
+ "port-name": "L1",
+ "logical-connection-point": "DEG2-TTP-TXRX",
+ "port-type": "LINE",
+ "circuit-id": "1",
+ "administrative-state": "outOfService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_43_check_update_portmapping(self):
+ response = test_utils.portmapping_request("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ mapping_list = res['nodes'][0]['mapping']
+ for mapping in mapping_list:
+ if mapping['logical-connection-point'] == 'DEG2-TTP-TXRX':
+ self.assertEqual(mapping['port-oper-state'], 'OutOfService',
+ "Operational State should be 'OutOfService'")
+ self.assertEqual(mapping['port-admin-state'], 'OutOfService',
+ "Administrative State should be 'OutOfService'")
+ else:
+ self.assertEqual(mapping['port-oper-state'], 'InService',
+ "Operational State should be 'InService'")
+ self.assertEqual(mapping['port-admin-state'], 'InService',
+ "Administrative State should be 'InService'")
+ time.sleep(1)
+
+ def test_44_check_update_openroadm_topo(self):
+ url = test_utils.URL_CONFIG_ORDM_TOPO
+ response = test_utils.get_request(url)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ node_list = res['network'][0]['node']
+ nb_updated_tp = 0
+ for node in node_list:
+ self.assertEqual(node['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(node['org-openroadm-common-network:administrative-state'], 'inService')
+ tp_list = node['ietf-network-topology:termination-point']
+ for tp in tp_list:
+ if node['node-id'] == 'ROADM-A1-DEG2' and tp['tp-id'] == 'DEG2-TTP-TXRX':
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'outOfService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'outOfService')
+ nb_updated_tp += 1
+ else:
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'inService')
+ self.assertEqual(nb_updated_tp, 1, "Only one termination-point should have been modified")
+
+ link_list = res['network'][0]['ietf-network-topology:link']
+ updated_links = ['ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX',
+ 'ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX']
+ nb_updated_link = 0
+ for link in link_list:
+ if link['link-id'] in updated_links:
+ self.assertEqual(link['org-openroadm-common-network:operational-state'], 'outOfService')
+ self.assertEqual(link['org-openroadm-common-network:administrative-state'], 'outOfService')
+ nb_updated_link += 1
+ else:
+ 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)
+
+ def test_45_check_update_tapi_neps(self):
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "ROADM-A1+PHOTONIC_MEDIA")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['output']['node']['owned-node-edge-point']
+ nb_updated_neps = 0
+ for nep in nep_list:
+ if 'DEG2-TTP-TXRX' 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, "Only three roadm neps should have been modified")
+ time.sleep(1)
+
+ def test_46_check_update_tapi_links(self):
+ response = test_utils.tapi_get_topology_details_request(
+ "T0 - Full Multi-layer topology")
+ time.sleep(2)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ link_list = res['output']['topology']['link']
+ nb_updated_link = 0
+ for link in link_list:
+ if all(x in link['name'][0]['value'] for x in ['ROADM-A1', 'DEG2-TTP-TXRX']):
+ self.assertEqual(link['operational-state'], 'DISABLED')
+ self.assertEqual(link['administrative-state'], 'LOCKED')
+ nb_updated_link += 1
+ else:
+ self.assertEqual(link['operational-state'], 'ENABLED')
+ self.assertEqual(link['administrative-state'], 'UNLOCKED')
+ self.assertEqual(nb_updated_link, 1,
+ "Only one rdm-rdm link should have been modified")
+ time.sleep(1)
+
+ def test_47_check_update_service_Ethernet(self):
+ self.test_19_check_update_service_Ethernet()
+
+ def test_48_check_update_connectivity_service_Ethernet(self):
+ self.test_20_check_update_connectivity_service_Ethernet()
+
+ def test_49_restore_status_line_port_roadma_deg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/2%2F0/ports/L1"
+ body = {"ports": [{
+ "port-name": "L1",
+ "logical-connection-point": "DEG2-TTP-TXRX",
+ "port-type": "LINE",
+ "circuit-id": "1",
+ "administrative-state": "inService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_50_check_update_portmapping_ok(self):
+ self.test_36_check_update_portmapping_ok()
+
+ def test_51_check_update_openroadm_topo_ok(self):
+ self.test_23_check_update_openroadm_topo_ok()
+
+ def test_52_check_update_tapi_neps_ok(self):
+ self.test_38_check_update_tapi_neps_ok()
+
+ def test_53_check_update_tapi_links_ok(self):
+ self.test_25_check_update_tapi_links_ok()
+
+ def test_54_check_update_service1_ok(self):
+ self.test_12_get_service_Ethernet()
+
+ def test_55_check_update_connectivity_service_Ethernet_ok(self):
+ self.test_13_get_connectivity_service_Ethernet()
+
+ def test_56_change_status_port_roadma_srg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/3%2F0/ports/C2"
+ body = {"ports": [{
+ "port-name": "C2",
+ "logical-connection-point": "SRG1-PP2",
+ "port-type": "client",
+ "circuit-id": "SRG1",
+ "administrative-state": "outOfService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_57_check_update_portmapping(self):
+ response = test_utils.portmapping_request("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ mapping_list = res['nodes'][0]['mapping']
+ for mapping in mapping_list:
+ if mapping['logical-connection-point'] == 'SRG1-PP2-TXRX':
+ self.assertEqual(mapping['port-oper-state'], 'OutOfService',
+ "Operational State should be 'OutOfService'")
+ self.assertEqual(mapping['port-admin-state'], 'OutOfService',
+ "Administrative State should be 'OutOfService'")
+ else:
+ self.assertEqual(mapping['port-oper-state'], 'InService',
+ "Operational State should be 'InService'")
+ self.assertEqual(mapping['port-admin-state'], 'InService',
+ "Administrative State should be 'InService'")
+ time.sleep(1)
+
+ def test_58_check_update_openroadm_topo(self):
+ url = test_utils.URL_CONFIG_ORDM_TOPO
+ response = test_utils.get_request(url)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ node_list = res['network'][0]['node']
+ nb_updated_tp = 0
+ for node in node_list:
+ self.assertEqual(node['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(node['org-openroadm-common-network:administrative-state'], 'inService')
+ tp_list = node['ietf-network-topology:termination-point']
+ for tp in tp_list:
+ if node['node-id'] == 'ROADM-A1-SRG1' and tp['tp-id'] == 'SRG1-PP2-TXRX':
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'outOfService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'outOfService')
+ nb_updated_tp += 1
+ else:
+ self.assertEqual(tp['org-openroadm-common-network:operational-state'], 'inService')
+ self.assertEqual(tp['org-openroadm-common-network:administrative-state'], 'inService')
+ self.assertEqual(nb_updated_tp, 1, "Only one termination-point should have been modified")
+
+ link_list = res['network'][0]['ietf-network-topology:link']
+ nb_updated_link = 0
+ for link in link_list:
+ 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, 0, "No link should have been modified")
+ time.sleep(1)
+
+ def test_59_check_update_tapi_neps(self):
+ response = test_utils.tapi_get_node_details_request("T0 - Full Multi-layer topology", "ROADM-A1+PHOTONIC_MEDIA")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ nep_list = res['output']['node']['owned-node-edge-point']
+ nb_updated_neps = 0
+ for nep in nep_list:
+ if 'SRG1-PP2-TXRX' 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, "Only three roadm neps should have been modified")
+ time.sleep(1)
+
+ def test_60_check_update_tapi_links(self):
+ response = test_utils.tapi_get_topology_details_request(
+ "T0 - Full Multi-layer topology")
+ time.sleep(2)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ link_list = res['output']['topology']['link']
+ nb_updated_link = 0
+ for link in link_list:
+ if all(x in link['name'][0]['value'] for x in ['ROADM-A1', 'SRG1-PP2-TXRX']):
+ self.assertEqual(link['operational-state'], 'DISABLED')
+ self.assertEqual(link['administrative-state'], 'LOCKED')
+ nb_updated_link += 1
+ else:
+ self.assertEqual(link['operational-state'], 'ENABLED')
+ self.assertEqual(link['administrative-state'], 'UNLOCKED')
+ self.assertEqual(nb_updated_link, 0,
+ "No link should have been modified")
+ time.sleep(1)
+
+ def test_61_check_update_service1_ok(self):
+ self.test_12_get_service_Ethernet()
+
+ def test_62_check_update_connectivity_service_Ethernet_ok(self):
+ self.test_13_get_connectivity_service_Ethernet()
+
+ def test_63_delete_connectivity_service_Ethernet(self):
+ response = test_utils.tapi_delete_connectivity_request(str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.no_content)
+ time.sleep(self.WAITING)
+
+ def test_64_disconnect_xponders_from_roadm(self):
+ url = "{}/config/ietf-network:networks/network/openroadm-topology/ietf-network-topology:link/"
+ response = test_utils.get_ordm_topo_request("")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ links = res['network'][0]['ietf-network-topology:link']
+ for link in links:
+ if link["org-openroadm-common-network:link-type"] in ('XPONDER-OUTPUT', 'XPONDER-INPUT'):
+ link_name = link["link-id"]
+ response = test_utils.delete_request(url+link_name)
+ self.assertEqual(response.status_code, requests.codes.ok)
+
+ def test_65_disconnect_XPDRA(self):
+ response = test_utils.unmount_device("XPDR-A1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+ def test_66_disconnect_XPDRC(self):
+ response = test_utils.unmount_device("XPDR-C1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+ def test_67_disconnect_ROADMA(self):
+ response = test_utils.unmount_device("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+ def test_68_disconnect_ROADMC(self):
+ response = test_utils.unmount_device("ROADM-C1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+
+if __name__ == "__main__":
+ unittest.main(verbosity=2)
--- /dev/null
+#!/usr/bin/env python
+##############################################################################
+# Copyright (c) 2020 Orange, Inc. and others. All rights reserved.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# pylint: disable=no-member
+# pylint: disable=too-many-public-methods
+
+import os
+import json
+# pylint: disable=wrong-import-order
+import sys
+import unittest
+import time
+import requests
+sys.path.append('transportpce_tests/common/')
+# pylint: disable=wrong-import-position
+# pylint: disable=import-error
+import test_utils # nopep8
+
+
+# pylint: disable=too-few-public-methods
+class UuidServices:
+ def __init__(self):
+ # pylint: disable=invalid-name
+ self.pm = None
+ self.odu = None
+ self.dsr = None
+ self.eth = None
+
+
+# pylint: disable=too-few-public-methods
+class UuidSubscriptions:
+ def __init__(self):
+ # pylint: disable=invalid-name
+ self.pm = None
+ self.odu = None
+ self.dsr = None
+ self.eth = None
+
+
+class TransportNbiNotificationstesting(unittest.TestCase):
+ cr_serv_sample_data = {
+ "input": {
+ "end-point": [
+ {
+ "layer-protocol-name": "DSR",
+ "service-interface-point": {
+ "service-interface-point-uuid": "b1f4bd3b-7fa9-367b-a8ab-6e80293238df"
+ },
+ "administrative-state": "UNLOCKED",
+ "operational-state": "ENABLED",
+ "direction": "BIDIRECTIONAL",
+ "role": "SYMMETRIC",
+ "protection-role": "WORK",
+ "local-id": "XPDR-C1-XPDR1",
+ "name": [
+ {
+ "value-name": "OpenROADM node id",
+ "value": "XPDR-C1-XPDR1"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "DSR",
+ "service-interface-point": {
+ "service-interface-point-uuid": "b5964ce9-274c-3f68-b4d1-83c0b61bc74e"
+ },
+ "administrative-state": "UNLOCKED",
+ "operational-state": "ENABLED",
+ "direction": "BIDIRECTIONAL",
+ "role": "SYMMETRIC",
+ "protection-role": "WORK",
+ "local-id": "XPDR-A1-XPDR1",
+ "name": [
+ {
+ "value-name": "OpenROADM node id",
+ "value": "XPDR-A1-XPDR1"
+ }
+ ]
+ }
+ ],
+ "connectivity-constraint": {
+ "service-layer": "ETH",
+ "service-type": "POINT_TO_POINT_CONNECTIVITY",
+ "service-level": "Some service-level",
+ "requested-capacity": {
+ "total-size": {
+ "value": "100",
+ "unit": "GB"
+ }
+ }
+ },
+ "state": "Some state"
+ }
+ }
+
+ cr_notif_subs_sample_data = {
+ "input": {
+ "subscription-filter": {
+ "requested-notification-types": [
+ "ALARM_EVENT"
+ ],
+ "requested-object-types": [
+ "CONNECTIVITY_SERVICE"
+ ],
+ "requested-layer-protocols": [
+ "ETH"
+ ],
+ "requested-object-identifier": [
+ "76d8f07b-ead5-4132-8eb8-cf3fdef7e079"
+ ],
+ "include-content": True,
+ "local-id": "localId",
+ "name": [
+ {
+ "value-name": "Subscription name",
+ "value": "test subscription"
+ }
+ ]
+ },
+ "subscription-state": "ACTIVE"
+ }
+ }
+
+ cr_get_notif_list_sample_data = {
+ "input": {
+ "subscription-id-or-name": "c07e7fd1-0377-4fbf-8928-36c17b0d0d68",
+ "time-period": "time-period"
+ }
+ }
+
+ processes = []
+ uuid_services = UuidServices()
+ uuid_subscriptions = UuidSubscriptions()
+ WAITING = 25 # nominal value is 300
+ NODE_VERSION_221 = '2.2.1'
+
+ @classmethod
+ def setUpClass(cls):
+ # pylint: disable=unsubscriptable-object
+ # TODO: for lighty manage the activation of NBI notification feature
+ cls.init_failed_nbi = False
+ cls.init_failed_tapi = False
+ os.environ['JAVA_MIN_MEM'] = '1024M'
+ os.environ['JAVA_MAX_MEM'] = '4096M'
+ cls.processes = test_utils.start_tpce()
+ # NBI notification feature is not installed by default in Karaf
+ if "USE_LIGHTY" not in os.environ or os.environ['USE_LIGHTY'] != 'True':
+ print("installing NBI notification feature...")
+ result = test_utils.install_karaf_feature("odl-transportpce-nbinotifications")
+ if result.returncode != 0:
+ cls.init_failed_nbi = True
+ print("installing tapi feature...")
+ result = test_utils.install_karaf_feature("odl-transportpce-tapi")
+ if result.returncode != 0:
+ cls.init_failed_tapi = True
+ print("Restarting OpenDaylight...")
+ test_utils.shutdown_process(cls.processes[0])
+ cls.processes[0] = test_utils.start_karaf()
+ test_utils.process_list[0] = cls.processes[0]
+ cls.init_failed = not test_utils.wait_until_log_contains(
+ test_utils.KARAF_LOG, test_utils.KARAF_OK_START_MSG, time_to_wait=60)
+ if cls.init_failed_nbi:
+ print("NBI notification installation feature failed...")
+ test_utils.shutdown_process(cls.processes[0])
+ sys.exit(2)
+ if cls.init_failed_tapi:
+ print("tapi installation feature failed...")
+ test_utils.shutdown_process(cls.processes[0])
+ sys.exit(2)
+ cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION_221),
+ ('roadma', cls.NODE_VERSION_221),
+ ('roadmc', cls.NODE_VERSION_221),
+ ('xpdrc', cls.NODE_VERSION_221)])
+
+ @classmethod
+ def tearDownClass(cls):
+ # pylint: disable=not-an-iterable
+ for process in cls.processes:
+ test_utils.shutdown_process(process)
+ print("all processes killed")
+
+ def setUp(self): # instruction executed before each test method
+ # pylint: disable=consider-using-f-string
+ print("execution of {}".format(self.id().split(".")[-1]))
+
+ def test_01_connect_xpdrA(self):
+ response = test_utils.mount_device("XPDR-A1", ('xpdra', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_02_connect_xpdrC(self):
+ response = test_utils.mount_device("XPDR-C1", ('xpdrc', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_03_connect_rdmA(self):
+ response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_04_connect_rdmC(self):
+ response = test_utils.mount_device("ROADM-C1", ('roadmc', self.NODE_VERSION_221))
+ self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
+
+ def test_05_connect_xprdA_N1_to_roadmA_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-A1", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_06_connect_roadmA_PP1_to_xpdrA_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-A1", "1", "1",
+ "ROADM-A1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_07_connect_xprdC_N1_to_roadmC_PP1(self):
+ response = test_utils.connect_xpdr_to_rdm_request("XPDR-C1", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_08_connect_roadmC_PP1_to_xpdrC_N1(self):
+ response = test_utils.connect_rdm_to_xpdr_request("XPDR-C1", "1", "1",
+ "ROADM-C1", "1", "SRG1-PP1-TXRX")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
+ time.sleep(2)
+
+ def test_09_add_omsAttributes_ROADMA_ROADMC(self):
+ # Config ROADMA-ROADMC oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ def test_10_add_omsAttributes_ROADMC_ROADMA(self):
+ # Config ROADMC-ROADMA oms-attributes
+ data = {"span": {
+ "auto-spanloss": "true",
+ "spanloss-base": 11.4,
+ "spanloss-current": 12,
+ "engineered-spanloss": 12.2,
+ "link-concatenation": [{
+ "SRLG-Id": 0,
+ "fiber-type": "smf",
+ "SRLG-length": 100000,
+ "pmd": 0.5}]}}
+ response = test_utils.add_oms_attr_request("ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data)
+ self.assertEqual(response.status_code, requests.codes.created)
+
+ # test service-create for Eth service from xpdr to xpdr
+ def test_11_create_connectivity_service_Ethernet(self):
+ response = test_utils.tapi_create_connectivity_request(self.cr_serv_sample_data)
+ time.sleep(self.WAITING)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.uuid_services.eth = res['output']['service']['uuid']
+ # pylint: disable=consider-using-f-string
+
+ input_dict_1 = {'administrative-state': 'LOCKED',
+ 'lifecycle-state': 'PLANNED',
+ 'operational-state': 'DISABLED',
+ 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ 'service-layer': 'ETH',
+ 'connectivity-direction': 'BIDIRECTIONAL'
+ }
+ input_dict_2 = {'value-name': 'OpenROADM node id',
+ 'value': 'XPDR-C1-XPDR1'}
+ input_dict_3 = {'value-name': 'OpenROADM node id',
+ 'value': 'XPDR-A1-XPDR1'}
+
+ self.assertDictEqual(dict(input_dict_1, **res['output']['service']),
+ res['output']['service'])
+ self.assertDictEqual(dict(input_dict_2, **res['output']['service']['end-point'][0]['name'][0]),
+ res['output']['service']['end-point'][0]['name'][0])
+ self.assertDictEqual(dict(input_dict_3, **res['output']['service']['end-point'][1]['name'][0]),
+ res['output']['service']['end-point'][1]['name'][0])
+ # If the gate fails is because of the waiting time not being enough
+ time.sleep(self.WAITING)
+
+ def test_12_get_service_Ethernet(self):
+ response = test_utils.get_service_list_request("services/" + str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['services'][0]['administrative-state'], 'inService')
+ self.assertEqual(
+ res['services'][0]['service-name'], self.uuid_services.eth)
+ self.assertEqual(
+ res['services'][0]['connection-type'], 'service')
+ self.assertEqual(
+ res['services'][0]['lifecycle-state'], 'planned')
+ time.sleep(2)
+
+ def test_13_get_connectivity_service_Ethernet(self):
+ response = test_utils.tapi_get_connectivity_request(str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['output']['service']['operational-state'], 'ENABLED')
+ self.assertEqual(
+ res['output']['service']['name'][0]['value'], self.uuid_services.eth)
+ self.assertEqual(
+ res['output']['service']['administrative-state'], 'UNLOCKED')
+ self.assertEqual(
+ res['output']['service']['lifecycle-state'], 'INSTALLED')
+ time.sleep(2)
+
+ def test_14_create_notifications_subscription_service(self):
+ self.cr_notif_subs_sample_data["input"]["subscription-filter"]["requested-object-identifier"][0] = str(
+ self.uuid_services.eth)
+ response = test_utils.tapi_create_notification_subscription_service_request(self.cr_notif_subs_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.uuid_subscriptions.eth = res['output']['subscription-service']['uuid']
+ self.assertEqual(res['output']['subscription-service']['subscription-filter']
+ ['requested-object-types'][0], 'CONNECTIVITY_SERVICE')
+ self.assertEqual(res['output']['subscription-service']['subscription-filter']
+ ['requested-notification-types'][0], 'ALARM_EVENT')
+ self.assertEqual(res['output']['subscription-service']['subscription-filter']
+ ['requested-object-identifier'][0], str(self.uuid_services.eth))
+ time.sleep(2)
+
+ def test_15_change_status_port_roadma_srg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/3%2F0/ports/C1"
+ body = {"ports": [{
+ "port-name": "C1",
+ "logical-connection-point": "SRG1-PP1",
+ "port-type": "client",
+ "circuit-id": "SRG1",
+ "administrative-state": "outOfService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ # If the gate fails is because of the waiting time not being enough
+ time.sleep(2)
+
+ def test_16_get_tapi_notifications_connectivity_service_Ethernet(self):
+ self.cr_get_notif_list_sample_data["input"]["subscription-id-or-name"] = str(self.uuid_subscriptions.eth)
+ response = test_utils.tapi_get_notifications_list_request(self.cr_get_notif_list_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(res['output']['notification'][0]['target-object-identifier'], str(self.uuid_services.eth))
+ self.assertEqual(res['output']['notification'][0]['target-object-type'], 'CONNECTIVITY_SERVICE')
+ self.assertEqual(res['output']['notification'][0]['changed-attributes'][0]['new-value'], 'LOCKED')
+ self.assertEqual(res['output']['notification'][0]['changed-attributes'][1]['new-value'], 'DISABLED')
+ time.sleep(2)
+
+ def test_17_restore_status_port_roadma_srg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/3%2F0/ports/C1"
+ body = {"ports": [{
+ "port-name": "C1",
+ "logical-connection-point": "SRG1-PP1",
+ "port-type": "client",
+ "circuit-id": "SRG1",
+ "administrative-state": "inService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
+ self.assertEqual(response.status_code, requests.codes.ok)
+ # If the gate fails is because of the waiting time not being enough
+ time.sleep(2)
+
+ def test_18_get_tapi_notifications_connectivity_service_Ethernet(self):
+ self.cr_get_notif_list_sample_data["input"]["subscription-id-or-name"] = str(self.uuid_subscriptions.eth)
+ response = test_utils.tapi_get_notifications_list_request(self.cr_get_notif_list_sample_data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(res['output']['notification'][1]['target-object-identifier'], str(self.uuid_services.eth))
+ self.assertEqual(res['output']['notification'][1]['target-object-type'], 'CONNECTIVITY_SERVICE')
+ self.assertEqual(res['output']['notification'][1]['changed-attributes'][0]['new-value'], 'UNLOCKED')
+ self.assertEqual(res['output']['notification'][1]['changed-attributes'][1]['new-value'], 'ENABLED')
+ time.sleep(2)
+
+ def test_19_delete_connectivity_service_Ethernet(self):
+ response = test_utils.tapi_delete_connectivity_request(str(self.uuid_services.eth))
+ self.assertEqual(response.status_code, requests.codes.no_content)
+ time.sleep(self.WAITING)
+
+ def test_20_disconnect_XPDRA(self):
+ response = test_utils.unmount_device("XPDR-A1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+ def test_21_disconnect_XPDRC(self):
+ response = test_utils.unmount_device("XPDR-C1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+ def test_22_disconnect_ROADMA(self):
+ response = test_utils.unmount_device("ROADM-A1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+ def test_23_disconnect_ROADMC(self):
+ response = test_utils.unmount_device("ROADM-C1")
+ self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
+
+
+if __name__ == "__main__":
+ unittest.main(verbosity=2)
setenv =
OLM_TIMER1=3000
OLM_TIMER2=2000
+ INSTALL_TAPI=True
INSTALL_NBINOTIFICATIONS=True
commands =