From 2f5d0456526325091bdef21785cd9db32e6bab0c Mon Sep 17 00:00:00 2001 From: orenais Date: Thu, 3 Aug 2023 09:28:21 +0200 Subject: [PATCH] Migration to TAPI 2.4 Step1 - Migration of transportpce-tapi to TAPI2.4, including code and tests - Integrate change of nbi-notification performed in change 106484 to simplify merge - Compilation succeeds for tpce-tapi, but fails at tpce-nbinotifications for which migration is planned in Step2 JIRA: TRNSPRTPCE-735 Change-Id: I7a8580a5d77b80346186084b134a3d42e1c24332 Signed-off-by: orenais --- api/pom.xml | 2 +- .../yang/nbi-notifications@2023-07-26.yang | 33 +- .../yang/nbi-notifications@2023-07-28.yang | 328 ++++++++++ ...i@2018-09-28.yang => tapi@2023-07-28.yang} | 10 +- ...sportpce-tapinetworkutils@2023-07-28.yang} | 8 +- .../listener/NbiNotificationsHandler.java | 6 +- .../dmaap/client/resource/EventsApi.java | 3 +- ...blishNotificationProcessServiceModule.java | 6 +- ...hNotificationProcessServiceSerializer.java | 2 +- .../config/ServiceAEndSerializer.java | 2 +- .../config/ServiceZEndSerializer.java | 2 +- .../listener/NbiNotificationsHandlerTest.java | 9 +- nbinotifications/pom.xml | 2 +- .../impl/ServicehandlerImpl.java | 8 +- .../listeners/PceNotificationHandler.java | 8 +- .../RendererNotificationHandler.java | 15 +- .../listeners/ServiceListener.java | 4 +- .../listeners/ServiceListenerTest.java | 4 +- tapi/pom.xml | 2 +- .../tapi/R2RTapiLinkDiscovery.java | 8 +- .../tapi/TapiStringConstants.java | 2 + .../tapi/connectivity/ConnectivityUtils.java | 253 ++++---- .../connectivity/TapiConnectivityImpl.java | 222 ++++--- .../transportpce/tapi/impl/TapiProvider.java | 8 +- .../TapiNetworkModelNotificationHandler.java | 142 +++-- .../listeners/TapiPceNotificationHandler.java | 212 +++---- .../TapiRendererNotificationHandler.java | 80 +-- .../topology/ConvertORTopoToTapiFullTopo.java | 590 +++++++++++------- .../topology/ConvertORTopoToTapiTopo.java | 348 +++++++---- .../topology/TapiNetworkModelServiceImpl.java | 557 +++++++++++------ .../tapi/topology/TapiNetworkUtilsImpl.java | 47 +- .../tapi/topology/TapiOrLinkListener.java | 18 +- .../tapi/topology/TapiTopologyImpl.java | 339 ++++++---- .../tapi/topology/TopologyUtils.java | 83 ++- .../transportpce/tapi/utils/MappingUtils.java | 6 +- .../transportpce/tapi/utils/TapiContext.java | 157 ++--- .../tapi/utils/TapiInitialORMapping.java | 12 +- .../transportpce/tapi/utils/TapiLink.java | 10 +- .../transportpce/tapi/utils/TapiLinkImpl.java | 82 +-- .../transportpce/tapi/utils/TapiListener.java | 6 +- .../CreateConnectivityServiceValidation.java | 25 +- .../checks/ConnConstraintCheck.java | 4 +- .../tapi/validation/checks/EndPointCheck.java | 2 +- .../checks/ResilienceConstraintCheck.java | 2 +- .../checks/TopoConstraintCheck.java | 17 +- .../TapiConnectivityImplTest.java | 24 +- .../ConvertORTopoToFullTapiTopoTest.java | 231 ++++--- .../topology/ConvertORTopoToTapiTopoTest.java | 207 +++--- .../TapiTopologyImplExceptionTest.java | 14 +- .../tapi/topology/TapiTopologyImplTest.java | 118 ++-- .../tapi/utils/TapiConnectivityDataUtils.java | 112 ++-- .../tapi/utils/TapiTopologyDataUtils.java | 54 +- 52 files changed, 2749 insertions(+), 1697 deletions(-) create mode 100644 api/src/main/yang/nbi-notifications@2023-07-28.yang rename api/src/main/yang/{tapi@2018-09-28.yang => tapi@2023-07-28.yang} (90%) rename api/src/main/yang/{transportpce-tapinetworkutils@2021-04-08.yang => transportpce-tapinetworkutils@2023-07-28.yang} (94%) diff --git a/api/pom.xml b/api/pom.xml index f8c91ae93..0eda3b8cf 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -68,7 +68,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.transportpce.models - tapi-2.1.1 + tapi-2.4.0 org.opendaylight.yangtools diff --git a/api/src/main/yang/nbi-notifications@2023-07-26.yang b/api/src/main/yang/nbi-notifications@2023-07-26.yang index 666d3230a..8f5c6a2bd 100644 --- a/api/src/main/yang/nbi-notifications@2023-07-26.yang +++ b/api/src/main/yang/nbi-notifications@2023-07-26.yang @@ -1,5 +1,5 @@ module nbi-notifications { - yang-version 1; + yang-version 1.1; namespace "nbi-notifications"; prefix nbinotifications; @@ -17,11 +17,11 @@ module nbi-notifications { } import tapi-common { prefix tapi-common; - revision-date 2018-12-10; + revision-date 2022-11-21; } import tapi-notification { prefix tapi-notification; - revision-date 2018-12-10; + revision-date 2022-11-21; } organization @@ -32,6 +32,16 @@ module nbi-notifications { "YANG definitions for using REST API in NBI notifications module. Copyright (c) 2020 ORANGE and others. All rights reserved."; + revision "2023-07-28" { + description + "Migration towards TAPI 2.4"; + } + + revision 2023-07-26 { + description + "Adding service-rpc-result data details to the publish-notification-process-service"; + } + revision 2021-10-13 { description "Implement new models, RPC for TAPI service notification"; @@ -153,7 +163,7 @@ module nbi-notifications { description "none"; } leaf target-object-type { - type tapi-notification:object-type; + type tapi-common:object-type; description "none"; } leaf target-object-identifier { @@ -184,6 +194,11 @@ module nbi-notifications { type tapi-common:layer-protocol-name; description "none"; } + leaf layer-protocol-qualifier { + type tapi-common:layer-protocol-qualifier; + config false; + description "none"; + } list changed-attributes { key 'value-name'; uses tapi-notification:name-and-value-change; @@ -198,15 +213,7 @@ module nbi-notifications { type string; description "none"; } - container tca-info { - uses tapi-notification:tca-info; - description "none"; - } - container alarm-info { - uses tapi-notification:alarm-info; - description "none"; - } - uses tapi-common:resource-spec; + uses tapi-common:global-class; description "none"; } diff --git a/api/src/main/yang/nbi-notifications@2023-07-28.yang b/api/src/main/yang/nbi-notifications@2023-07-28.yang new file mode 100644 index 000000000..8f5c6a2bd --- /dev/null +++ b/api/src/main/yang/nbi-notifications@2023-07-28.yang @@ -0,0 +1,328 @@ +module nbi-notifications { + yang-version 1.1; + namespace "nbi-notifications"; + prefix nbinotifications; + + import org-openroadm-service { + prefix oor-service; + } + import org-openroadm-common-service-types { + prefix org-openroadm-common-service-types; + } + import org-openroadm-common-state-types { + prefix org-openroadm-common-state-types; + } + import org-openroadm-resource { + prefix org-openroadm-resource; + } + import tapi-common { + prefix tapi-common; + revision-date 2022-11-21; + } + import tapi-notification { + prefix tapi-notification; + revision-date 2022-11-21; + } + + organization + "transportPCE"; + contact + "transportPCE committers - ODL"; + description + "YANG definitions for using REST API in NBI notifications module. Copyright + (c) 2020 ORANGE and others. All rights reserved."; + + revision "2023-07-28" { + description + "Migration towards TAPI 2.4"; + } + + revision 2023-07-26 { + description + "Adding service-rpc-result data details to the publish-notification-process-service"; + } + + revision 2021-10-13 { + description + "Implement new models, RPC for TAPI service notification"; + } + + revision 2023-07-26 { + description + "Adding service-rpc-result data details to the publish-notification-process-service"; + } + + revision 2021-08-13 { + description + "Rename the groupings, containers and RPCs"; + } + + revision 2021-06-28 { + description + "Implement new models, RPC for service alarms"; + } + + revision 2020-11-30 { + description + "Initial revision of NBI notifications"; + } + + grouping notification-process-service { + leaf message { + type string; + mandatory true; + description + "Message for the specified service"; + } + leaf service-name { + type string; + mandatory true; + description + "Identifier for the service to be created in the ROADM network, e.g., CLFI, CLCI, etc. + This is reported against the service, but may not get reflected in the service in the network."; + } + leaf common-id { + type string; + description + "To be used by the ROADM controller to identify the routing constraints + received from planning application (PED)."; + } + leaf connection-type { + type org-openroadm-common-service-types:connection-type; + mandatory true; + } + container service-a-end { + uses org-openroadm-common-service-types:service-endpoint; + } + container service-z-end { + uses org-openroadm-common-service-types:service-endpoint; + } + leaf response-failed { + type string; + description + "Response of the error if the service request encountered an anomaly"; + } + leaf operational-state { + type org-openroadm-common-state-types:state; + config false; + description + "Operational State: Actual state of service"; + } + leaf is-temp-service { + type boolean; + default "false"; + description + "Used to indicate if the it is a temp-service or not"; + } + container aToZ { + when "../is-temp-service = 'true'" { + description + "a-to-z is only used for temp-service-cerate"; + } + uses org-openroadm-resource:common-och-otsi-attributes; + uses org-openroadm-resource:path-computation-outputs; + } + container zToA { + when "../is-temp-service = 'true'" { + description + "a-to-z is only used for temp-service-cerate"; + } + uses org-openroadm-resource:common-och-otsi-attributes; + uses org-openroadm-resource:path-computation-outputs; + } + } + grouping notification-alarm-service { + leaf message { + type string; + mandatory true; + description + "Message for the specified service"; + } + leaf service-name { + type string; + mandatory true; + description + "Identifier for the service to be created in the ROADM network, e.g., CLFI, CLCI, etc. + This is reported against the service, but may not get reflected in the service in the network."; + } + leaf connection-type { + type org-openroadm-common-service-types:connection-type; + mandatory true; + } + leaf operational-state { + type org-openroadm-common-state-types:state; + config false; + description + "Operational State: Actual state of service"; + } + } + + grouping notification-tapi-service { + leaf notification-type { + type tapi-notification:notification-type; + description "none"; + } + leaf target-object-type { + type tapi-common: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"; + } + leaf layer-protocol-qualifier { + type tapi-common:layer-protocol-qualifier; + config false; + description "none"; + } + list changed-attributes { + key 'value-name'; + uses tapi-notification:name-and-value-change; + description "none"; + } + list additional-info { + key 'value-name'; + uses tapi-common:name-and-value; + description "none"; + } + leaf additional-text { + type string; + description "none"; + } + uses tapi-common:global-class; + description "none"; + } + + container notification-process-service { + description + "Model used to send a notification from a service request"; + uses notification-process-service; + } + + container notification-alarm-service { + description + "Model used to send a notification from the service listener"; + 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 { + leaf connection-type { + type org-openroadm-common-service-types:connection-type; + mandatory true; + description + "Type connection of the service "; + } + leaf id-consumer { + type string; + mandatory true; + description + "Unique ID for the consumer"; + } + leaf group-id { + type string; + mandatory true; + description + "ID Group for the consumer"; + } + } + output { + list notifications-process-service { + uses notification-process-service; + } + } + } + + rpc get-notifications-alarm-service { + description "Get the notifications alarm service sent by ServiceListener through filtering connection type"; + input { + leaf connection-type { + type org-openroadm-common-service-types:connection-type; + mandatory true; + description + "Type connection of the service"; + } + leaf id-consumer { + type string; + mandatory true; + description + "Unique ID for the consumer"; + } + leaf group-id { + type string; + mandatory true; + description + "ID Group for the consumer"; + } + } + output { + list notifications-alarm-service { + uses notification-alarm-service; + } + } + } + + notification publish-notification-process-service { + description "Publish the notifications service through a publisher"; + leaf publisher-name { + type string; + mandatory true; + description + "Name of the publisher"; + } + uses notification-process-service; + } + + notification publish-notification-alarm-service { + description "Publish the notifications service alarm through a publisher"; + leaf publisher-name { + type string; + mandatory true; + description + "Name of the publisher"; + } + 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; + } +} diff --git a/api/src/main/yang/tapi@2018-09-28.yang b/api/src/main/yang/tapi@2023-07-28.yang similarity index 90% rename from api/src/main/yang/tapi@2018-09-28.yang rename to api/src/main/yang/tapi@2023-07-28.yang index 831bc70a3..6255ca59e 100644 --- a/api/src/main/yang/tapi@2018-09-28.yang +++ b/api/src/main/yang/tapi@2023-07-28.yang @@ -1,15 +1,15 @@ module tapi { - yang-version 1; + yang-version 1.1; namespace "urn:opendaylight:params:xml:ns:yang:tapi"; prefix tapi; import tapi-topology { prefix tapi-topology; - revision-date 2018-12-10; + revision-date 2022-11-21; } import tapi-common { prefix tapi-common; - revision-date 2018-12-10; + revision-date 2022-11-21; } import org-openroadm-common-service-types { prefix org-openroadm-common-service-types; @@ -25,6 +25,10 @@ module tapi { Thouenon ( gilles.thouenon@orange.com ) Christophe Betoule ( christophe.betoule@orange.com )"; + revision "2023-07-28" { + description + "Second revision of TAPI model for migration towards TAPI 2.4"; + } revision 2018-09-28 { description "Initial revision of TAPI model for internal use"; diff --git a/api/src/main/yang/transportpce-tapinetworkutils@2021-04-08.yang b/api/src/main/yang/transportpce-tapinetworkutils@2023-07-28.yang similarity index 94% rename from api/src/main/yang/transportpce-tapinetworkutils@2021-04-08.yang rename to api/src/main/yang/transportpce-tapinetworkutils@2023-07-28.yang index 60481c7f9..8374d9072 100644 --- a/api/src/main/yang/transportpce-tapinetworkutils@2021-04-08.yang +++ b/api/src/main/yang/transportpce-tapinetworkutils@2023-07-28.yang @@ -1,11 +1,11 @@ module transportpce-tapinetworkutils { - yang-version 1; + yang-version 1.1; namespace "http://org/opendaylight/transportpce/tapinetworkutils"; prefix "org-opendaylight-transportpce-tapinetworkutils"; import tapi-common { prefix tapi-common; - revision-date 2018-12-10; + revision-date 2022-11-21; } organization @@ -38,6 +38,10 @@ module transportpce-tapinetworkutils { ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE"; + revision "2023-07-28" { + description + "Second revision of tapi networkutils model for migration towards TAPI 2.4"; + } revision "2021-04-08" { description "Initial revision of tapi networkutils model. Used as the transportpce-networkutils model to diff --git a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandler.java b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandler.java index 861f9ca2d..07812c168 100644 --- a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandler.java +++ b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandler.java @@ -19,9 +19,9 @@ import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener; import org.opendaylight.transportpce.dmaap.client.resource.EventsApi; import org.opendaylight.transportpce.dmaap.client.resource.config.JsonConfigurator; import org.opendaylight.transportpce.dmaap.client.resource.model.CreatedEvent; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/EventsApi.java b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/EventsApi.java index 03454f1f6..7ee650612 100644 --- a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/EventsApi.java +++ b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/EventsApi.java @@ -14,7 +14,8 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.opendaylight.transportpce.dmaap.client.resource.model.CreatedEvent; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; + +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; @Path("/events") public interface EventsApi { diff --git a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceModule.java b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceModule.java index 1f3223559..c16b39521 100644 --- a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceModule.java +++ b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceModule.java @@ -13,9 +13,9 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev2 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirection; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.lgx.Lgx; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.port.Port; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEnd; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEnd; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEnd; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEnd; //This class is a temporary workaround while waiting jackson //support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852 diff --git a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceSerializer.java b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceSerializer.java index d7bda27c8..b48db2607 100644 --- a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceSerializer.java +++ b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/PublishNotificationProcessServiceSerializer.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; import java.io.IOException; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; // This class is a temporary workaround while waiting jackson // support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852 diff --git a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceAEndSerializer.java b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceAEndSerializer.java index 9f0e2d13b..edb2583b7 100644 --- a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceAEndSerializer.java +++ b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceAEndSerializer.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; import java.io.IOException; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEnd; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEnd; // This class is a temporary workaround while waiting jackson // support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852 diff --git a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceZEndSerializer.java b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceZEndSerializer.java index 20dd9052b..bcefe8677 100644 --- a/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceZEndSerializer.java +++ b/dmaap-client/src/main/java/org/opendaylight/transportpce/dmaap/client/resource/config/ServiceZEndSerializer.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; import java.io.IOException; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEnd; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEnd; // This class is a temporary workaround while waiting jackson // support in yang tools https://git.opendaylight.org/gerrit/c/yangtools/+/94852 diff --git a/dmaap-client/src/test/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandlerTest.java b/dmaap-client/src/test/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandlerTest.java index e06a597ab..7dfb5f2e6 100644 --- a/dmaap-client/src/test/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandlerTest.java +++ b/dmaap-client/src/test/java/org/opendaylight/transportpce/dmaap/client/listener/NbiNotificationsHandlerTest.java @@ -29,10 +29,11 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev2 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirectionKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev191129.ServiceFormat; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NbiNotificationsListener; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint8; import org.slf4j.LoggerFactory; diff --git a/nbinotifications/pom.xml b/nbinotifications/pom.xml index cbe9f3fd4..ba45461e0 100644 --- a/nbinotifications/pom.xml +++ b/nbinotifications/pom.xml @@ -45,7 +45,7 @@ org.opendaylight.transportpce.models - tapi-2.1.1 + tapi-2.4.0 ${project.groupId} diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java index d4e4caa64..4931ec32a 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java @@ -162,10 +162,10 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdes import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZKey; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.Rpc; diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceNotificationHandler.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceNotificationHandler.java index 0eea329a1..cc66c0b6b 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceNotificationHandler.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceNotificationHandler.java @@ -27,10 +27,10 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.ResponseParametersBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererNotificationHandler.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererNotificationHandler.java index 2359412db..be3eef2a4 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererNotificationHandler.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/RendererNotificationHandler.java @@ -35,10 +35,10 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.rpc.result.PathComputationResultBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.rpc.result.path.computation.result.AToZBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.rpc.result.path.computation.result.ZToABuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationProcessServiceBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceAEndBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service.ServiceZEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationProcessServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceAEndBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service.ServiceZEndBuilder; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -200,7 +200,7 @@ public class RendererNotificationHandler implements RendererListener { .setResponseFailed("") .setMessage("Temp Service implemented") .setAToZ( - new org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service + new org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service .AToZBuilder() .setFrequency(serviceRpcResult.getPathComputationResult().getAToZ().getFrequency()) .setWidth(serviceRpcResult.getPathComputationResult().getAToZ().getWidth()) @@ -209,7 +209,7 @@ public class RendererNotificationHandler implements RendererListener { // TODO: add GNSR, OSNR, min/max output powers .build()) .setZToA( - new org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.notification.process.service + new org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.process.service .ZToABuilder() .setFrequency(serviceRpcResult.getPathComputationResult().getZToA().getFrequency()) .setWidth(serviceRpcResult.getPathComputationResult().getZToA().getWidth()) @@ -264,7 +264,8 @@ public class RendererNotificationHandler implements RendererListener { * @param notification RendererRpcResultSp * @param type ServiceNotificationTypes */ - private void sendServiceHandlerNotification(RendererRpcResultSp notification, ServiceNotificationTypes type) { + private void sendServiceHandlerNotification( + RendererRpcResultSp notification, ServiceNotificationTypes type) { try { ServiceRpcResultSh serviceHandlerNotification = new ServiceRpcResultShBuilder() .setAToZDirection(notification.getAToZDirection()) diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListener.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListener.java index fcb4bf183..bb769efdb 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListener.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListener.java @@ -44,8 +44,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfo; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfoBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmServiceBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; diff --git a/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListenerTest.java b/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListenerTest.java index 61e8dc978..b755dddd2 100755 --- a/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListenerTest.java +++ b/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/listeners/ServiceListenerTest.java @@ -57,8 +57,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.Service import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesBuilder; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishNotificationAlarmServiceBuilder; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishNotificationAlarmServiceBuilder; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint8; diff --git a/tapi/pom.xml b/tapi/pom.xml index 9ac223363..fcdaebb35 100644 --- a/tapi/pom.xml +++ b/tapi/pom.xml @@ -82,7 +82,7 @@ Author: Martial Coulibaly on behalf of Orange org.opendaylight.transportpce.models - tapi-2.1.1 + tapi-2.4.0 ${project.groupId} diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/R2RTapiLinkDiscovery.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/R2RTapiLinkDiscovery.java index 457866f4d..33ce9959c 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/R2RTapiLinkDiscovery.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/R2RTapiLinkDiscovery.java @@ -34,10 +34,10 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.conta import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.nbr.list.IfName; import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.Direction; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/TapiStringConstants.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/TapiStringConstants.java index 52e97af26..0696936a0 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/TapiStringConstants.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/TapiStringConstants.java @@ -24,6 +24,8 @@ public final class TapiStringConstants { public static final String E_OTSI = "eOTSi"; public static final String I_OTSI = "iOTSi"; public static final String PHTNC_MEDIA = "PHOTONIC_MEDIA"; + public static final String PHTNC_MEDIA_OTS = "PHOTONIC_MEDIA_OTS"; + public static final String PHTNC_MEDIA_OMS = "PHOTONIC_MEDIA_OMS"; public static final String MC = "MEDIA_CHANNEL"; public static final String OTSI_MC = "OTSi_MEDIA_CHANNEL"; public static final String RDM_INFRA = "ROADM-infra"; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java index f4f122057..d0f788041 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java @@ -7,6 +7,7 @@ */ package org.opendaylight.transportpce.tapi.connectivity; +import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; @@ -63,52 +64,53 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdes import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.BandwidthProfileBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ProtectionRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.CapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ProtectionRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.CapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint64; @@ -126,8 +128,8 @@ public final class ConnectivityUtils { private final TapiContext tapiContext; private Map sipMap; private final Map + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey, + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionFullMap; // this variable is for complete connection objects private final NetworkTransactionService networkTransactionService; private Connection topConnRdmRdm; @@ -302,6 +304,8 @@ public final class ConnectivityUtils { // Connection creation Map connMap = createConnectionsFromService(serviceAEnd, serviceZEnd, pathDescription); + ConnectivityConstraint conConstr = new ConnectivityConstraintBuilder() + .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).build(); // TODO: full connectivity service?? With constraints and the rest of fields... return new ConnectivityServiceBuilder() .setAdministrativeState(AdministrativeState.UNLOCKED) @@ -309,9 +313,9 @@ public final class ConnectivityUtils { .setLifecycleState(LifecycleState.INSTALLED) .setUuid(new Uuid(UUID.nameUUIDFromBytes(service.getServiceName().getBytes(StandardCharsets.UTF_8)) .toString())) - .setServiceLayer(mapServiceLayer(serviceAEnd.getServiceFormat(), endPoint1, endPoint2)) - .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) - .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL) + .setLayerProtocolName(mapServiceLayer(serviceAEnd.getServiceFormat(), endPoint1, endPoint2)) + .setConnectivityConstraint(conConstr) + .setDirection(ForwardingDirection.BIDIRECTIONAL) .setName(Map.of(name.key(), name)) .setConnection(connMap) .setEndPoint(endPointMap) @@ -343,7 +347,7 @@ public final class ConnectivityUtils { LOG.info("Node name = {}", nodeName); Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",nodeName, TapiStringConstants.DSR)) .getBytes(StandardCharsets.UTF_8)).toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node tapiNode + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node tapiNode = this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid); if (tapiNode != null) { return OpenroadmNodeType.forName(tapiNode.getName().get(new NameKey("Node Type")) @@ -529,7 +533,7 @@ public final class ConnectivityUtils { xcMap.put(conn.key(), conn); } Map connServMap = new HashMap<>(); - Map cepMapDsr = new HashMap<>(); // Create 1 cep per Xpdr in the CLIENT // 1 top connection DSR between the CLIENT xpdrs @@ -549,7 +553,7 @@ public final class ConnectivityUtils { .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); // DSR top connection between edge xpdr CLIENT DSR - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR, LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn); this.connectionFullMap.put(connectionDsr.key(), connectionDsr); @@ -565,9 +569,9 @@ public final class ConnectivityUtils { List xpdrNetworkTplist, List xpdrNodelist) { Map connServMap = new HashMap<>(); - Map cepMapDsr = new HashMap<>(); - Map cepMapOdu = new HashMap<>(); // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will // be added to the lower connection of a top connection @@ -594,7 +598,7 @@ public final class ConnectivityUtils { cepMapDsr.put(netCep1.key(), netCep1); cepMapOdu.put(netCep2.key(), netCep2); // Create x connection between I_ODU and E_ODU within xpdr - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork, TapiStringConstants.ODU, LayerProtocolName.ODU); this.connectionFullMap.put(connection.key(), connection); @@ -610,7 +614,7 @@ public final class ConnectivityUtils { String spcXpdr2 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connectionOdu = createTopConnection(spcXpdr1, spcXpdr2, cepMapOdu, TapiStringConstants.E_ODU, LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrOdu); this.connectionFullMap.put(connectionOdu.key(), connectionOdu); @@ -621,7 +625,7 @@ public final class ConnectivityUtils { LowerConnection lowerConn = new LowerConnectionBuilder().setConnectionUuid(connectionOdu.getUuid()).build(); xcMap.put(lowerConn.key(), lowerConn); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR, LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn); this.connectionFullMap.put(connectionDsr.key(), connectionDsr); @@ -636,7 +640,7 @@ public final class ConnectivityUtils { private Map createXpdrCepsAndConnectionsOdu(List xpdrNetworkTplist, List xpdrNodelist) { Map connServMap = new HashMap<>(); - Map cepMap = new HashMap<>(); // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will // be added to the lower connection of a top connection @@ -661,7 +665,7 @@ public final class ConnectivityUtils { .get(0))).findFirst().orElseThrow(); String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_ODU, LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrPhtn); this.connectionFullMap.put(connection.key(), connection); @@ -677,7 +681,7 @@ public final class ConnectivityUtils { private Map createXpdrCepsAndConnectionsPht(List xpdrNetworkTplist, List xpdrNodelist) { Map connServMap = new HashMap<>(); - Map cepMap = new HashMap<>(); // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will // be added to the lower connection of a top connection @@ -709,7 +713,7 @@ public final class ConnectivityUtils { cepMap.put(netCep3.key(), netCep3); // Create x connection between I_OTSi and E_OTSi within xpdr - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork, TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA); this.connectionFullMap.put(connection.key(), connection); @@ -723,7 +727,7 @@ public final class ConnectivityUtils { .get(0))).findFirst().orElseThrow(); String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI, LayerProtocolName.PHOTONICMEDIA, xcMap, this.topConnRdmRdm); this.connectionFullMap.put(connection.key(), connection); @@ -741,7 +745,7 @@ public final class ConnectivityUtils { List rdmNodelist, String edgeRoadm1, String edgeRoadm2) { // TODO: will need to check if things exist already or not - Map cepMap = new HashMap<>(); // create ceps and x connections within roadm Map xcLowerMap = new HashMap<>(); @@ -784,12 +788,12 @@ public final class ConnectivityUtils { LOG.info("Going to create cross connections for ROADM {}", roadm); // Create X connections between MC and OTSi_MC for full map org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 1 created = {}", connection1.toString()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 2 created = {}", connection2.toString()); @@ -834,12 +838,12 @@ public final class ConnectivityUtils { LOG.info("Going to create cross connections for ROADM {}", roadm); // Create X connections between MC and OTSi_MC for full map org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1 = createXCBetweenCeps(deg1Cep2, deg2Cep2, spcRdmDEG1, spcRdmDEG2, TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 1 created = {}", connection1.toString()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection2 = createXCBetweenCeps(deg1Cep3, deg2Cep3, spcRdmDEG1, spcRdmDEG2, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 2 created = {}", connection2.toString()); @@ -859,7 +863,7 @@ public final class ConnectivityUtils { String spcRdmAD2 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm2)).findFirst().orElseThrow(); // MC top connection between edge roadms LOG.info("Going to created top connection between MC"); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA, xcLowerMap, null); this.connectionFullMap.put(connection.key(), connection); @@ -875,7 +879,7 @@ public final class ConnectivityUtils { // OTSiMC top connection between edge roadms LOG.info("Going to created top connection between OTSiMC"); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1 = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA, topLowerMap, null); this.connectionFullMap.put(connection1.key(), connection1); @@ -888,25 +892,25 @@ public final class ConnectivityUtils { return connServMap; } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection createTopConnection(String tp1, String tp2, Map cepMap, String qual, LayerProtocolName topPortocol, Map xcMap, Connection additionalLowerConn) { // find cep for each AD MC of roadm 1 and 2 LOG.info("Top connection name = {}", String.join("+", "TOP", tp1, tp2, qual)); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep1 = + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep1 = cepMap.get(new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey( + .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey( new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp1.split("\\+")[0], qual, tp1.split("\\+")[1])).getBytes(StandardCharsets.UTF_8)) .toString()))); LOG.info("ADCEP1 = {}", adCep1); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep1 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep1 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(adCep1.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(adCep1.getClientNodeEdgePoint() @@ -915,17 +919,17 @@ public final class ConnectivityUtils { .values().stream().findFirst().orElseThrow().getNodeUuid()) .setConnectionEndPointUuid(adCep1.getUuid()) .build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep2 = + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep2 = cepMap.get(new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey( + .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey( new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp2.split("\\+")[0], qual, tp2.split("\\+")[1])).getBytes(StandardCharsets.UTF_8)) .toString()))); LOG.info("ADCEP2 = {}", adCep2); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep2 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep2 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(adCep2.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(adCep2.getClientNodeEdgePoint() @@ -935,7 +939,7 @@ public final class ConnectivityUtils { .setConnectionEndPointUuid(adCep1.getUuid()) .build(); Map ceps = new HashMap<>(); + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ceps = new HashMap<>(); ceps.put(cep1.key(), cep1); ceps.put(cep2.key(), cep2); Name connName = new NameBuilder() @@ -948,7 +952,7 @@ public final class ConnectivityUtils { new LowerConnectionBuilder().setConnectionUuid(additionalLowerConn.getConnectionUuid()).build()); } return new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder() .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "TOP", tp1, tp2, qual)) .getBytes(StandardCharsets.UTF_8)).toString())) .setName(Map.of(connName.key(), connName)) @@ -961,7 +965,7 @@ public final class ConnectivityUtils { .build(); } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection createXCBetweenCeps(ConnectionEndPoint cep1, ConnectionEndPoint cep2, String tp1, String tp2, String qual, LayerProtocolName xcProtocol) { LOG.info("Creation cross connection between: {} and {}", tp1, tp2); @@ -969,9 +973,9 @@ public final class ConnectivityUtils { LOG.info("CEP1 = {}", cep1.getClientNodeEdgePoint()); LOG.info("CEP2 = {}", cep2.getClientNodeEdgePoint()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ1 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ1 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(cep1.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(cep1.getClientNodeEdgePoint() @@ -981,9 +985,9 @@ public final class ConnectivityUtils { .setConnectionEndPointUuid(cep1.getUuid()) .build(); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ2 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ2 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(cep2.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(cep2.getClientNodeEdgePoint() @@ -993,7 +997,7 @@ public final class ConnectivityUtils { .setConnectionEndPointUuid(cep2.getUuid()) .build(); Map ceps = new HashMap<>(); + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ceps = new HashMap<>(); ceps.put(cepServ1.key(), cepServ1); ceps.put(cepServ2.key(), cepServ2); Name connName = new NameBuilder() @@ -1002,7 +1006,7 @@ public final class ConnectivityUtils { .build(); // TODO: lower connection, supported link....... return new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder() .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "XC", tp1, tp2, qual)) .getBytes(StandardCharsets.UTF_8)).toString())) .setName(Map.of(connName.key(), connName)) @@ -1040,7 +1044,7 @@ public final class ConnectivityUtils { .setClientNodeEdgePoint(Map.of(cnep.key(), cnep)) .setName(Map.of(cepName.key(), cepName)) .setConnectionPortRole(PortRole.SYMMETRIC) - .setConnectionPortDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setOperationalState(OperationalState.ENABLED) .setLifecycleState(LifecycleState.INSTALLED) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA); @@ -1073,7 +1077,7 @@ public final class ConnectivityUtils { .setClientNodeEdgePoint(Map.of(cnep.key(), cnep)) .setName(Map.of(cepName.key(), cepName)) .setConnectionPortRole(PortRole.SYMMETRIC) - .setConnectionPortDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setOperationalState(OperationalState.ENABLED) .setLifecycleState(LifecycleState.INSTALLED) .setLayerProtocolName(cepProtocol); @@ -1106,8 +1110,8 @@ public final class ConnectivityUtils { default: LOG.error("Service Format not supported"); } - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.Name name = - new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder() + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name name = + new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder() .setValueName("OpenROADM info") .setValue(String.join("-", serviceZEnd.getClli(), serviceZEnd.getTxDirection().values().stream().findFirst().orElseThrow().getPort() @@ -1120,16 +1124,16 @@ public final class ConnectivityUtils { .build()) .setName(Map.of(name.key(), name)) .setAdministrativeState(AdministrativeState.UNLOCKED) - .setDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setLifecycleState(LifecycleState.INSTALLED) .setOperationalState(OperationalState.ENABLED) .setLayerProtocolName(layerProtocols) .setCapacity(new CapacityBuilder() .setTotalSize(new TotalSizeBuilder() - .setValue(Uint64.valueOf(serviceZEnd.getServiceRate())) - .setUnit(CapacityUnit.GBPS) + .setValue(Decimal64.valueOf(BigDecimal.valueOf(serviceZEnd.getServiceRate().doubleValue()))) + .setUnit(CAPACITYUNITGBPS.VALUE) .build()) - .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile +// .setBandwidthProfile(new BandwidthProfileBuilder().build()) .build()) .setProtectionRole(ProtectionRole.WORK) .setRole(PortRole.SYMMETRIC) @@ -1164,8 +1168,8 @@ public final class ConnectivityUtils { default: LOG.error("Service Format not supported"); } - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.Name name = - new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder() + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name name = + new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder() .setValueName("OpenROADM info") .setValue(String.join("-", serviceAEnd.getClli(), serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow().getPort() @@ -1178,16 +1182,16 @@ public final class ConnectivityUtils { .build()) .setName(Map.of(name.key(), name)) .setAdministrativeState(AdministrativeState.UNLOCKED) - .setDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setLifecycleState(LifecycleState.INSTALLED) .setOperationalState(OperationalState.ENABLED) .setLayerProtocolName(layerProtocols) .setCapacity(new CapacityBuilder() .setTotalSize(new TotalSizeBuilder() - .setValue(Uint64.valueOf(serviceAEnd.getServiceRate())) - .setUnit(CapacityUnit.GBPS) + .setValue(Decimal64.valueOf(BigDecimal.valueOf(serviceAEnd.getServiceRate().doubleValue()))) + .setUnit(CAPACITYUNITGBPS.VALUE) .build()) - .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile +// .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile .build()) .setProtectionRole(ProtectionRole.WORK) .setRole(PortRole.SYMMETRIC) @@ -1372,8 +1376,8 @@ public final class ConnectivityUtils { } public Map + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey, + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> getConnectionFullMap() { return this.connectionFullMap; } @@ -1386,11 +1390,10 @@ public final class ConnectivityUtils { public ServiceCreateInput createORServiceInput(CreateConnectivityServiceInput input, Uuid serviceUuid) { // TODO: not taking into account all the constraints. Only using EndPoints and Connectivity Constraint. Map + .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint> endPointMap = input.getEndPoint(); - ConnectivityConstraint constraint = input.getConnectivityConstraint(); ConnectionType connType = null; ServiceFormat serviceFormat = null; String nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(), @@ -1399,7 +1402,8 @@ public final class ConnectivityUtils { TapiStringConstants.DSR); LOG.debug("Node a = {}", nodeAid); LOG.debug("Node z = {}", nodeZid); - switch (constraint.getServiceLayer().getIntValue()) { + //switch (constraint.getServiceLayer().getIntValue()) { + switch (input.getLayerProtocolName().getIntValue()) { case 0: LOG.info("ODU"); connType = ConnectionType.Infrastructure; @@ -1434,15 +1438,16 @@ public final class ConnectivityUtils { LOG.debug("Node z photonic = {}", nodeZid); break; default: - LOG.info("Service type {} not supported", constraint.getServiceLayer().getName()); + LOG.info("Service type {} not supported", input.getLayerProtocolName().getName()); } // Requested Capacity for connectivity service - Uint64 capacity = input.getConnectivityConstraint().getRequestedCapacity().getTotalSize().getValue(); + Uint64 capacity = Uint64.valueOf(Math.abs( + input.getConnectivityConstraint().getRequestedCapacity().getTotalSize().getValue().intValue())); // map endpoints into service end points. Map the type of service from TAPI to OR ServiceAEnd serviceAEnd = tapiEndPointToServiceAPoint(endPointMap.values().stream().findFirst().orElseThrow(), - serviceFormat, nodeAid, capacity, constraint.getServiceLayer()); + serviceFormat, nodeAid, capacity, input.getLayerProtocolName()); ServiceZEnd serviceZEnd = tapiEndPointToServiceZPoint(endPointMap.values().stream().skip(1).findFirst() - .orElseThrow(), serviceFormat, nodeZid, capacity, constraint.getServiceLayer()); + .orElseThrow(), serviceFormat, nodeZid, capacity, input.getLayerProtocolName()); if (serviceAEnd == null || serviceZEnd == null) { LOG.error("Couldnt map endpoints to service end"); return null; @@ -1467,7 +1472,7 @@ public final class ConnectivityUtils { private ServiceZEnd tapiEndPointToServiceZPoint( org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint endPoint, + .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint endPoint, ServiceFormat serviceFormat, String nodeZid, Uint64 capacity, LayerProtocolName serviceLayer) { // TODO -> change way this is being created. The name includes only SPDR-SA1-XPDR1. // Not the rest which is needed in the txPortDeviceName. @@ -1475,7 +1480,7 @@ public final class ConnectivityUtils { Uuid sipUuid = endPoint.getServiceInterfacePoint().getServiceInterfacePointUuid(); // Todo -> need to find the NEP associated to that SIP Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(nodeZid.getBytes(StandardCharsets.UTF_8)).toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node = + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node = this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid); if (node == null) { LOG.error("Node not found in datastore"); @@ -1572,7 +1577,7 @@ public final class ConnectivityUtils { private ServiceAEnd tapiEndPointToServiceAPoint( org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint endPoint, + .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint endPoint, ServiceFormat serviceFormat, String nodeAid, Uint64 capacity, LayerProtocolName serviceLayer) { // TODO -> change way this is being created. The name includes only SPDR-SA1-XPDR1. // Not the rest which is needed in the txPortDeviceName. @@ -1580,7 +1585,7 @@ public final class ConnectivityUtils { Uuid sipUuid = endPoint.getServiceInterfacePoint().getServiceInterfacePointUuid(); // Todo -> need to find the NEP associated to that SIP Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(nodeAid.getBytes(StandardCharsets.UTF_8)).toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node = + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node = this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid); if (node == null) { LOG.error("Node not found in datastore"); @@ -1677,7 +1682,7 @@ public final class ConnectivityUtils { } private ConnectionType getConnectionTypePhtnc(Collection endPoints) { + .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint> endPoints) { if (endPoints.stream().anyMatch(ep -> ep.getName().values().stream() .anyMatch(name -> name.getValue().contains("ROADM")))) { // EndPoints are ROADMs @@ -1688,7 +1693,7 @@ public final class ConnectivityUtils { } private ServiceFormat getServiceFormatPhtnc(Collection endPoints) { + .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint> endPoints) { if (endPoints.stream().anyMatch(ep -> ep.getName().values().stream() .anyMatch(name -> name.getValue().contains("ROADM")))) { // EndPoints are ROADMs @@ -1757,16 +1762,16 @@ public final class ConnectivityUtils { Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.DSR)) .getBytes(StandardCharsets.UTF_8)).toString()); InstanceIdentifier nodeIID = InstanceIdentifier.builder( + .onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeIID = InstanceIdentifier.builder( Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.topology.rev181210.Context1.class).child(TopologyContext.class) + .onf.otcc.yang.tapi.topology.rev221121.Context1.class).child(TopologyContext.class) .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)).build(); try { - Optional optNode + Optional optNode = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID).get(); - if (!optNode.isPresent()) { + if (optNode.isEmpty()) { return null; } OpenroadmNodeType openroadmNodeType = OpenroadmNodeType.forName(optNode.orElseThrow().getName().get( diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java index 79a9dc7c7..320ae6f88 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java @@ -9,13 +9,18 @@ package org.opendaylight.transportpce.tapi.connectivity; import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.ListenableFuture; -import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.OperationResult; import org.opendaylight.transportpce.common.ResponseCodes; +import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.listeners.TapiPceNotificationHandler; import org.opendaylight.transportpce.tapi.listeners.TapiRendererNotificationHandler; import org.opendaylight.transportpce.tapi.utils.TapiContext; @@ -29,61 +34,56 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.Service import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutput; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfo; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfoBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.BandwidthProfileBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceList; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.TapiConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.CapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.output.ServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connection.details.output.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connection.end.point.details.output.ConnectionEndPointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.Service; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.ServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionEndPointDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectionEndPointDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceListInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceListOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.GetConnectivityServiceListOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.TapiConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.UpdateConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.UpdateConnectivityServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.CapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.output.ServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.get.connection.details.output.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.list.output.Service; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.list.output.ServiceKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.Rpc; import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.ErrorType; @@ -96,7 +96,7 @@ import org.slf4j.LoggerFactory; * Top level service interface providing main TAPI Connectivity services. */ public class TapiConnectivityImpl implements TapiConnectivityService { - + private final NetworkTransactionService networkTransactionService; private static final Logger LOG = LoggerFactory.getLogger(TapiConnectivityImpl.class); private OrgOpenroadmServiceService serviceHandler; @@ -107,13 +107,15 @@ public class TapiConnectivityImpl implements TapiConnectivityService { public TapiConnectivityImpl(OrgOpenroadmServiceService serviceHandler, TapiContext tapiContext, ConnectivityUtils connectivityUtils, TapiPceNotificationHandler pceListenerImpl, - TapiRendererNotificationHandler rendererListenerImpl) { + TapiRendererNotificationHandler rendererListenerImpl, + NetworkTransactionService nts) { LOG.info("inside TapiImpl constructor"); this.serviceHandler = serviceHandler; this.tapiContext = tapiContext; this.connectivityUtils = connectivityUtils; this.pceListenerImpl = pceListenerImpl; this.rendererListenerImpl = rendererListenerImpl; + this.networkTransactionService = nts; } @Override @@ -187,15 +189,18 @@ public class TapiConnectivityImpl implements TapiConnectivityService { .setValueName("Connectivity Service Name") .setValue(serviceUuid.getValue()) .build(); + ConnectivityConstraint conConstr = new ConnectivityConstraintBuilder() + .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) + .setServiceLevel(input.getConnectivityConstraint().getServiceLevel()).build(); + ConnectivityService service = new ConnectivityServiceBuilder() .setUuid(serviceUuid) .setAdministrativeState(AdministrativeState.LOCKED) .setOperationalState(OperationalState.DISABLED) .setLifecycleState(LifecycleState.PLANNED) - .setServiceLayer(input.getConnectivityConstraint().getServiceLayer()) - .setServiceLevel(input.getConnectivityConstraint().getServiceLevel()) - .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) - .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL) + .setLayerProtocolName(input.getLayerProtocolName()) + .setConnectivityConstraint(conConstr) + .setDirection(ForwardingDirection.BIDIRECTIONAL) .setName(Map.of(name.key(), name)) .setConnection(new HashMap<>()) .setEndPoint(endPointList) @@ -208,22 +213,21 @@ public class TapiConnectivityImpl implements TapiConnectivityService { .setService(new ServiceBuilder(service).build()).build()).buildFuture(); } - @Override public ListenableFuture> getConnectivityServiceDetails( GetConnectivityServiceDetailsInput input) { // TODO Auto-generated method stub - Uuid serviceUuid = getUuidFromIput(input.getServiceIdOrName()); + Uuid serviceUuid = input.getUuid(); ConnectivityService service = this.tapiContext.getConnectivityService(serviceUuid); if (service == null) { - LOG.error("Service {} doesnt exist in tapi context", input.getServiceIdOrName()); + LOG.error("Service {} doesnt exist in tapi context", input.getUuid()); return RpcResultBuilder.failed() .withError(ErrorType.RPC, "Service doesnt exist in datastore") .buildFuture(); } return RpcResultBuilder.success(new GetConnectivityServiceDetailsOutputBuilder().setService( new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.details.output.ServiceBuilder( + .onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.details.output.ServiceBuilder( service).build()).build()).buildFuture(); } @@ -240,10 +244,10 @@ public class TapiConnectivityImpl implements TapiConnectivityService { public ListenableFuture> getConnectionDetails( GetConnectionDetailsInput input) { // TODO Auto-generated method stub - Uuid connectionUuid = getUuidFromIput(input.getConnectionIdOrName()); + Uuid connectionUuid = input.getUuid(); Connection connection = this.tapiContext.getConnection(connectionUuid); if (connection == null) { - LOG.error("Connection {} doesnt exist in tapi context", input.getConnectionIdOrName()); + LOG.error("Connection {} doesnt exist in tapi context", input.getUuid()); return RpcResultBuilder.failed() .withError(ErrorType.RPC, "Connection doesnt exist in datastore") .buildFuture(); @@ -255,16 +259,25 @@ public class TapiConnectivityImpl implements TapiConnectivityService { @Override public ListenableFuture> deleteConnectivityService( DeleteConnectivityServiceInput input) { - //TODO Auto-generated method stub + // TODO Auto-generated method stub // TODO add try - if (input.getServiceIdOrName() != null) { + String serviceName = null; + try { + serviceName = getNameFromUuid(input.getUuid(), "Service").iterator().next(); + } catch (ExecutionException e) { + LOG.error("Service {} to be deleted not found in the DataStore", e.getMessage()); + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Failed to delete Service") + .buildFuture(); + } + if (input.getUuid() != null) { try { - Uuid serviceUuid = getUuidFromIput(input.getServiceIdOrName()); + Uuid serviceUuid = input.getUuid(); this.tapiContext.deleteConnectivityService(serviceUuid); ListenableFuture> output = this.serviceHandler.serviceDelete(new ServiceDeleteInputBuilder() .setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder() - .setServiceName(input.getServiceIdOrName()) + .setServiceName(serviceName) .setTailRetention(ServiceDeleteReqInfo.TailRetention.No) .build()) .setSdncRequestHeader(new SdncRequestHeaderBuilder() @@ -305,7 +318,7 @@ public class TapiConnectivityImpl implements TapiConnectivityService { Map serviceMap = new HashMap<>(); for (ConnectivityService connectivityService: connMap.values()) { Service service = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.ServiceBuilder( + .onf.otcc.yang.tapi.connectivity.rev221121.get.connectivity.service.list.output.ServiceBuilder( connectivityService).build(); serviceMap.put(service.key(), service); } @@ -316,20 +329,9 @@ public class TapiConnectivityImpl implements TapiConnectivityService { @Override public ListenableFuture> getConnectionEndPointDetails( GetConnectionEndPointDetailsInput input) { - // TODO Auto-generated method stub - Uuid topoUuid = getUuidFromIput(input.getTopologyIdOrName()); - Uuid nodeUuid = getUuidFromIput(input.getNodeIdOrName()); - Uuid nepUuid = getUuidFromIput(input.getNepIdOrName()); - Uuid cepUuid = getUuidFromIput(input.getCepIdOrName()); - ConnectionEndPoint cep = this.tapiContext.getTapiCEP(topoUuid, nodeUuid, nepUuid, cepUuid); - if (cep == null) { - LOG.error("Cep doesnt exist in tapi context"); - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "No cep with given Uuid exists in datastore") - .buildFuture(); - } - return RpcResultBuilder.success(new GetConnectionEndPointDetailsOutputBuilder().setConnectionEndPoint( - new ConnectionEndPointBuilder(cep).build()).build()).buildFuture(); +// TODO: Leveraging previous code, provide TAPI2.4 compliant implementation for this function + LOG.error("Method getConnectionEndPointDetails not currently implemented"); + return null; } public ImmutableClassToInstanceMap> registerRPCs() { @@ -345,12 +347,12 @@ public class TapiConnectivityImpl implements TapiConnectivityService { } private Map createEndPoints( - Map endPoints) { Map endPointMap = new HashMap<>(); - for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210 + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121 .create.connectivity.service.input.EndPoint ep: endPoints.values()) { EndPoint endpoint = new EndPointBuilder() .setServiceInterfacePoint(new ServiceInterfacePointBuilder() @@ -365,7 +367,7 @@ public class TapiConnectivityImpl implements TapiConnectivityService { // TODO: implement bandwidth profile .setCapacity(new CapacityBuilder() .setTotalSize(new TotalSizeBuilder().build()) - .setBandwidthProfile(new BandwidthProfileBuilder().build()) +// .setBandwidthProfile(new BandwidthProfileBuilder().build()) .build()) .setProtectionRole(ep.getProtectionRole()) .setRole(ep.getRole()) @@ -376,14 +378,36 @@ public class TapiConnectivityImpl implements TapiConnectivityService { return endPointMap; } - private Uuid getUuidFromIput(String serviceIdOrName) { - try { - UUID.fromString(serviceIdOrName); - LOG.info("Given attribute {} is a UUID", serviceIdOrName); - return new Uuid(serviceIdOrName); - } catch (IllegalArgumentException e) { - LOG.info("Given attribute {} is not a UUID", serviceIdOrName); - return new Uuid(UUID.nameUUIDFromBytes(serviceIdOrName.getBytes(StandardCharsets.UTF_8)).toString()); + public List getNameFromUuid(Uuid uuid, String typeOfNode) throws ExecutionException { + Map nameMap = new HashMap<>(); + if ("service".equals(typeOfNode)) { + ConnectivityService conServ = null; + InstanceIdentifier nodeIID = InstanceIdentifier.builder(Context.class) + .augmentation( + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) + .child(ConnectivityContext.class) + .child(ConnectivityService.class, new ConnectivityServiceKey(uuid)) + .build(); + ListenableFuture> conServFuture = + this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID); + try { + conServ = conServFuture.get().orElseThrow(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + //TODO: investigate on how to throw Interrupted exception (generate a check violation error) + } catch (ExecutionException e) { + throw new ExecutionException("Unable to get from mdsal service: " + nodeIID + .firstKeyOf(ConnectivityService.class).getUuid().getValue(), e); + } catch (NoSuchElementException e) { + return null; + } + nameMap = conServ.getName(); + } + + List nameList = new ArrayList<>(); + for (Map.Entry entry : nameMap.entrySet()) { + nameList.add(entry.getValue().getValueName()); } + return nameList; } } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java index fd1f87e68..b4a7b51d0 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java @@ -39,13 +39,14 @@ import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiListener; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.TransportpceTapinetworkutilsService; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.ServiceInterfacePoints; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.ServiceInterfacePoints; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -114,9 +115,8 @@ public class TapiProvider { TapiRendererNotificationHandler rendererListenerImpl = new TapiRendererNotificationHandler(dataBroker, notificationPublishService); - TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(this.serviceHandler, tapiContext, - connectivityUtils, pceListenerImpl, rendererListenerImpl); - rpcRegistrations.add(rpcProviderService.registerRpcImplementations(tapiConnectivity.registerRPCs())); + TapiConnectivityImpl tapi = new TapiConnectivityImpl(this.serviceHandler, tapiContext, connectivityUtils, + pceListenerImpl, rendererListenerImpl, networkTransactionService); TapiTopologyImpl topo = new TapiTopologyImpl(this.dataBroker, tapiContext, topologyUtils, tapiLink); rpcRegistrations.add(rpcProviderService.registerRpcImplementations(topo.registerRPCs())); diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiNetworkModelNotificationHandler.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiNetworkModelNotificationHandler.java index 8f5a70188..3800db84d 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiNetworkModelNotificationHandler.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiNetworkModelNotificationHandler.java @@ -29,44 +29,46 @@ 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.rev230726.PublishTapiNotificationService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.DateAndTime; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NameAndValueChange; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Notification; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.NodeEdgePointRef; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.DateAndTime; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPETAPICONTEXT; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.EventNotification; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NameAndValueChange; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Notification; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.TapiNotificationListener; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.NodeEdgePointRef; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.yang.binding.EnumTypeObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.osgi.service.component.annotations.Activate; @@ -103,16 +105,15 @@ public class TapiNetworkModelNotificationHandler { private void onNotification(Notification notification) { LOG.info("Received network model notification {}", notification); - if (notification.getNotificationType() == NotificationType.ATTRIBUTEVALUECHANGE - && notification.getTargetObjectType() == ObjectType.NODEEDGEPOINT) { + if (notification.getNotificationType().equals(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE) + && notification.getTargetObjectType().equals(OBJECTTYPETAPICONTEXT.VALUE)) { if (notification.getChangedAttributes() == null) { return; } // TODO: need to re-think this to update first the connections from roadm to roadm and then the others updateConnections(notification.getChangedAttributes().keySet().stream() .map(changedAttributesKey -> new Uuid(changedAttributesKey.getValueName())) - .collect(Collectors.toList()), - notification.getChangedAttributes().values().stream() + .collect(Collectors.toList()), notification.getChangedAttributes().values().stream() .map(NameAndValueChange::getNewValue) .collect(Collectors.toList())); updateConnectivityServices(); @@ -123,6 +124,12 @@ public class TapiNetworkModelNotificationHandler { } } + @Override + public void onEventNotification(EventNotification notification) { + LOG.info("Received network model notification {}", notification); + //TODO: see if implementation needed as this is declared as obsolete + } + private PublishTapiNotificationService createNbiNotification(ConnectivityService connService) { if (connService == null) { LOG.error("ConnService is null"); @@ -159,12 +166,12 @@ public class TapiNetworkModelNotificationHandler { .setUuid(new Uuid(UUID.randomUUID().toString())) .setTopic(connService.getUuid().getValue()) .setTargetObjectIdentifier(connService.getUuid()) - .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE) + .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE) .setChangedAttributes(changedStates) .setEventTimeStamp(datetime) .setTargetObjectName(targetObjectNames) - .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE) - .setLayerProtocolName(connService.getServiceLayer()) + .setTargetObjectType(OBJECTTYPETAPICONTEXT.VALUE) + .setLayerProtocolName(connService.getLayerProtocolName()) .build(); } @@ -182,7 +189,7 @@ public class TapiNetworkModelNotificationHandler { this.connectivityServiceChanges.clear(); InstanceIdentifier connectivityContextIID = InstanceIdentifier.builder(Context.class).augmentation( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(ConnectivityContext.class) .build(); Optional optConnContext = @@ -205,7 +212,7 @@ public class TapiNetworkModelNotificationHandler { InstanceIdentifier connServIID = InstanceIdentifier .builder(Context.class).augmentation(org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(connService.getUuid())) .build(); @@ -245,11 +252,11 @@ public class TapiNetworkModelNotificationHandler { LOG.info("No connections on service = {}", connService); return new EnumTypeObject[]{null, null}; } - for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210 + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121 .connectivity.service.Connection connection : connService.getConnection().values()) { InstanceIdentifier connIID = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(ConnectivityContext.class) .child(Connection.class, new ConnectionKey(connection.getConnectionUuid())) .build(); @@ -275,14 +282,14 @@ public class TapiNetworkModelNotificationHandler { try { //should it return a list of connections? InstanceIdentifier connectivityContextIID = + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivityContextIID = InstanceIdentifier.builder(Context.class).augmentation( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .build(); Optional optConnContext = + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> optConnContext = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectivityContextIID).get(); if (optConnContext.isEmpty()) { LOG.error(TapiStringConstants.TAPI_CONNECTION_UPDATE_ERROR); @@ -305,13 +312,13 @@ public class TapiNetworkModelNotificationHandler { if (connService.getConnection() == null) { continue; } - for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210 + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121 .connectivity.service.Connection connection : connService.getConnection().values()) { InstanceIdentifier connIID = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(Connection.class, new ConnectionKey(connection.getConnectionUuid())) .build(); Optional optConn = @@ -355,7 +362,7 @@ public class TapiNetworkModelNotificationHandler { Map orderedServiceMap = new HashMap<>(); for (LayerProtocolName lpn:this.orderedServiceLayerList) { for (ConnectivityService connServ:connServMap.values()) { - if (connServ.getServiceLayer().equals(lpn)) { + if (connServ.getLayerProtocolName().equals(lpn)) { LOG.info("Layer of service is equal to entry of lpn = {}", lpn); orderedServiceMap.put(connServ.key(), connServ); } @@ -375,9 +382,9 @@ public class TapiNetworkModelNotificationHandler { for (LowerConnection lowerConn:lowerConnections) { InstanceIdentifier connIID = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(Connection.class, new ConnectionKey(lowerConn.getConnectionUuid())) .build(); Optional optConn = @@ -436,7 +443,7 @@ public class TapiNetworkModelNotificationHandler { LOG.info("Didnt transform correctly the states"); for (Uuid connectionNep : connectionNeps) { Optional ocep + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ocep = conn.getConnectionEndPoint().values().stream() .filter(connectionEndPoint -> connectionEndPoint.getNodeEdgePointUuid() == connectionNep) .findFirst(); @@ -475,9 +482,9 @@ public class TapiNetworkModelNotificationHandler { for (LowerConnection lowerConn:lowerConnections) { InstanceIdentifier connIID = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context + .onf.otcc.yang.tapi.connectivity.rev221121.context .ConnectivityContext.class) .child(Connection.class, new ConnectionKey(lowerConn.getConnectionUuid())) .build(); @@ -515,14 +522,14 @@ public class TapiNetworkModelNotificationHandler { for (ConnectivityService supportedConnService : connServices) { // TODO currently supporting service uuid is saved in service layer, replace with name as soon // as name is implemented - if (supportedConnService.getServiceLayer() != layer) { + if (supportedConnService.getLayerProtocolName() != layer) { continue; } InstanceIdentifier supportedConnServIID = InstanceIdentifier .builder(Context.class).augmentation(org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(supportedConnService.getUuid())) .build(); Optional optNewConnService = this.networkTransactionService.read( @@ -532,8 +539,9 @@ public class TapiNetworkModelNotificationHandler { continue; } ConnectivityService newConnService = optNewConnService.orElseThrow(); - if (supportedConnService.getServiceLevel() != null - && supportedConnService.getServiceLevel().equals(supportingConnService.getValue()) + if (supportedConnService.getConnectivityConstraint().getServiceLevel() != null + && supportedConnService.getConnectivityConstraint().getServiceLevel() + .equals(supportingConnService.getValue()) && newConnService.getAdministrativeState() != AdministrativeState.LOCKED && newConnService.getOperationalState() != OperationalState.DISABLED) { diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiPceNotificationHandler.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiPceNotificationHandler.java index 720fce27d..3ff959799 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiPceNotificationHandler.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiPceNotificationHandler.java @@ -38,45 +38,45 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdes import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.Node; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1Builder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.end.point.ClientNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContextBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepList; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1Builder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepList; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,8 +93,8 @@ public class TapiPceNotificationHandler { private final DataBroker dataBroker; private final NetworkTransactionService networkTransactionService; private final Map + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey, + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionFullMap; // this variable is for complete connection objects private Connection topConnRdmRdm; private Connection topConnXpdrXpdrPhtn; @@ -172,7 +172,7 @@ public class TapiPceNotificationHandler { // Create connections and ceps for the connectivity service. // Connections must be with a locked stated. As the renderer hasnt implemented yet the oc's Map connectionMap = createConnectionsAndCepsForService(pathDescription, - input.getConnectivityConstraint().getServiceLayer()); + input.getLayerProtocolName()); // add connections to connection context and to connectivity context updateConnectionContextWithConn(this.connectionFullMap, connectionMap, serviceUuid); } @@ -408,7 +408,7 @@ public class TapiPceNotificationHandler { xcMap.put(conn.key(), conn); } Map connServMap = new HashMap<>(); - Map cepMapDsr = new HashMap<>(); // Create 1 cep per Xpdr in the CLIENT // 1 top connection DSR between the CLIENT xpdrs @@ -428,7 +428,7 @@ public class TapiPceNotificationHandler { .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); // DSR top connection between edge xpdr CLIENT DSR - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR, LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn); this.connectionFullMap.put(connectionDsr.key(), connectionDsr); @@ -444,9 +444,9 @@ public class TapiPceNotificationHandler { List xpdrNetworkTplist, List xpdrNodelist) { Map connServMap = new HashMap<>(); - Map cepMapDsr = new HashMap<>(); - Map cepMapOdu = new HashMap<>(); // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will // be added to the lower connection of a top connection @@ -473,7 +473,7 @@ public class TapiPceNotificationHandler { cepMapDsr.put(netCep1.key(), netCep1); cepMapOdu.put(netCep2.key(), netCep2); // Create x connection between I_ODU and E_ODU within xpdr - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork, TapiStringConstants.ODU, LayerProtocolName.ODU); this.connectionFullMap.put(connection.key(), connection); @@ -489,7 +489,7 @@ public class TapiPceNotificationHandler { .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); // eODU top connection between edge xpdr CLIENT eODU - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connectionOdu = createTopConnection(spcXpdr1, spcXpdr2, cepMapOdu, TapiStringConstants.E_ODU, LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrOdu); this.connectionFullMap.put(connectionOdu.key(), connectionOdu); @@ -501,7 +501,7 @@ public class TapiPceNotificationHandler { xcMap.put(lowerConn.key(), lowerConn); // DSR top connection between edge xpdr CLIENT DSR - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR, LayerProtocolName.DSR, xcMap, this.topConnXpdrXpdrPhtn); this.connectionFullMap.put(connectionDsr.key(), connectionDsr); @@ -516,7 +516,7 @@ public class TapiPceNotificationHandler { private Map createXpdrCepsAndConnectionsOdu(List xpdrNetworkTplist, List xpdrNodelist) { Map connServMap = new HashMap<>(); - Map cepMap = new HashMap<>(); // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will // be added to the lower connection of a top connection @@ -540,7 +540,7 @@ public class TapiPceNotificationHandler { .get(0))).findFirst().orElseThrow(); String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_ODU, LayerProtocolName.ODU, xcMap, this.topConnXpdrXpdrPhtn); this.connectionFullMap.put(connection.key(), connection); @@ -556,7 +556,7 @@ public class TapiPceNotificationHandler { private Map createXpdrCepsAndConnectionsPht(List xpdrNetworkTplist, List xpdrNodelist) { Map connServMap = new HashMap<>(); - Map cepMap = new HashMap<>(); // TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will // be added to the lower connection of a top connection @@ -588,7 +588,7 @@ public class TapiPceNotificationHandler { cepMap.put(netCep3.key(), netCep3); // Create x connection between I_OTSi and E_OTSi within xpdr - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork, TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA); this.connectionFullMap.put(connection.key(), connection); @@ -602,7 +602,7 @@ public class TapiPceNotificationHandler { .get(0))).findFirst().orElseThrow(); String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().orElseThrow(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI, LayerProtocolName.PHOTONICMEDIA, xcMap, this.topConnRdmRdm); this.connectionFullMap.put(connection.key(), connection); @@ -619,7 +619,7 @@ public class TapiPceNotificationHandler { List rdmNodelist, String edgeRoadm1, String edgeRoadm2) { // TODO: will need to check if things exist already or not - Map cepMap = new HashMap<>(); // create ceps and x connections within roadm Map xcLowerMap = new HashMap<>(); @@ -662,12 +662,12 @@ public class TapiPceNotificationHandler { LOG.info("Going to create cross connections for ROADM {}", roadm); // Create X connections between MC and OTSi_MC for full map org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 1 created = {}", connection1.toString()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 2 created = {}", connection2.toString()); @@ -712,12 +712,12 @@ public class TapiPceNotificationHandler { LOG.info("Going to create cross connections for ROADM {}", roadm); // Create X connections between MC and OTSi_MC for full map org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection1 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1 = createXCBetweenCeps(deg1Cep2, deg2Cep2, spcRdmDEG1, spcRdmDEG2, TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 1 created = {}", connection1.toString()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection connection2 + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection2 = createXCBetweenCeps(deg1Cep3, deg2Cep3, spcRdmDEG1, spcRdmDEG2, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 2 created = {}", connection2.toString()); @@ -737,7 +737,7 @@ public class TapiPceNotificationHandler { String spcRdmAD2 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm2)).findFirst().orElseThrow(); // MC top connection between edge roadms LOG.info("Going to created top connection between MC"); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA, xcLowerMap, null); this.connectionFullMap.put(connection.key(), connection); @@ -753,7 +753,7 @@ public class TapiPceNotificationHandler { // OTSiMC top connection between edge roadms LOG.info("Going to created top connection between OTSiMC"); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection connection1 = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA, topLowerMap, null); this.connectionFullMap.put(connection1.key(), connection1); @@ -766,25 +766,25 @@ public class TapiPceNotificationHandler { return connServMap; } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection createTopConnection(String tp1, String tp2, Map cepMap, String qual, LayerProtocolName topPortocol, Map xcMap, Connection additionalLowerConn) { // find cep for each AD MC of roadm 1 and 2 LOG.info("Top connection name = {}", String.join("+", "TOP", tp1, tp2, qual)); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep1 = + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep1 = cepMap.get(new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey( + .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey( new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp1.split("\\+")[0], qual, tp1.split("\\+")[1])).getBytes(Charset.forName("UTF-8"))) .toString()))); LOG.info("ADCEP1 = {}", adCep1.toString()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep1 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep1 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(adCep1.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(adCep1.getClientNodeEdgePoint() @@ -793,17 +793,17 @@ public class TapiPceNotificationHandler { .values().stream().findFirst().orElseThrow().getNodeUuid()) .setConnectionEndPointUuid(adCep1.getUuid()) .build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ConnectionEndPoint adCep2 = + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep2 = cepMap.get(new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey( + .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey( new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", tp2.split("\\+")[0], qual, tp2.split("\\+")[1])).getBytes(Charset.forName("UTF-8"))) .toString()))); LOG.info("ADCEP2 = {}", adCep2.toString()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cep2 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep2 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(adCep2.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(adCep2.getClientNodeEdgePoint() @@ -813,7 +813,7 @@ public class TapiPceNotificationHandler { .setConnectionEndPointUuid(adCep1.getUuid()) .build(); Map ceps = new HashMap<>(); + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ceps = new HashMap<>(); ceps.put(cep1.key(), cep1); ceps.put(cep2.key(), cep2); Name connName = new NameBuilder() @@ -826,7 +826,7 @@ public class TapiPceNotificationHandler { new LowerConnectionBuilder().setConnectionUuid(additionalLowerConn.getConnectionUuid()).build()); } return new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder() .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "TOP", tp1, tp2, qual)) .getBytes(Charset.forName("UTF-8"))).toString())) .setName(Map.of(connName.key(), connName)) @@ -839,7 +839,7 @@ public class TapiPceNotificationHandler { .build(); } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection createXCBetweenCeps(ConnectionEndPoint cep1, ConnectionEndPoint cep2, String tp1, String tp2, String qual, LayerProtocolName xcProtocol) { LOG.info("Creation cross connection between: {} and {}", tp1, tp2); @@ -847,9 +847,9 @@ public class TapiPceNotificationHandler { LOG.info("CEP1 = {}", cep1.getClientNodeEdgePoint().toString()); LOG.info("CEP2 = {}", cep2.getClientNodeEdgePoint().toString()); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ1 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ1 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(cep1.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(cep1.getClientNodeEdgePoint() @@ -859,9 +859,9 @@ public class TapiPceNotificationHandler { .setConnectionEndPointUuid(cep1.getUuid()) .build(); org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPoint cepServ2 = + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ2 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connection.ConnectionEndPointBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder() .setNodeEdgePointUuid(cep2.getClientNodeEdgePoint() .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid()) .setTopologyUuid(cep2.getClientNodeEdgePoint() @@ -871,7 +871,7 @@ public class TapiPceNotificationHandler { .setConnectionEndPointUuid(cep2.getUuid()) .build(); Map ceps = new HashMap<>(); + .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ceps = new HashMap<>(); ceps.put(cepServ1.key(), cepServ1); ceps.put(cepServ2.key(), cepServ2); Name connName = new NameBuilder() @@ -880,7 +880,7 @@ public class TapiPceNotificationHandler { .build(); // TODO: lower connection, supported link....... return new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder() + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder() .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "XC", tp1, tp2, qual)) .getBytes(Charset.forName("UTF-8"))).toString())) .setName(Map.of(connName.key(), connName)) @@ -918,7 +918,7 @@ public class TapiPceNotificationHandler { .setClientNodeEdgePoint(Map.of(cnep.key(), cnep)) .setName(Map.of(cepName.key(), cepName)) .setConnectionPortRole(PortRole.SYMMETRIC) - .setConnectionPortDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setOperationalState(OperationalState.ENABLED) .setLifecycleState(LifecycleState.INSTALLED) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA); @@ -951,7 +951,7 @@ public class TapiPceNotificationHandler { .setClientNodeEdgePoint(Map.of(cnep.key(), cnep)) .setName(Map.of(cepName.key(), cepName)) .setConnectionPortRole(PortRole.SYMMETRIC) - .setConnectionPortDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setOperationalState(OperationalState.ENABLED) .setLifecycleState(LifecycleState.INSTALLED) .setLayerProtocolName(cepProtocol); @@ -986,10 +986,10 @@ public class TapiPceNotificationHandler { public void updateTopologyWithCep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, ConnectionEndPoint cep) { // TODO: verify this is correct. Should we identify the context IID with the context UUID?? InstanceIdentifier onepIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class) + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class) .child(Topology.class, new TopologyKey(topoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)) .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)) .build(); @@ -1007,7 +1007,7 @@ public class TapiPceNotificationHandler { if (onep1 != null && onep1.getCepList() != null && onep1.getCepList().getConnectionEndPoint() != null) { if (onep1.getCepList().getConnectionEndPoint().containsKey( new org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(cep.key()))) { + .urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey(cep.key()))) { LOG.info("CEP already in topology, skipping merge"); return; } @@ -1031,9 +1031,9 @@ public class TapiPceNotificationHandler { private void updateConnectionContextWithConn( Map connFullMap, + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connFullMap, Map connMap, Uuid suuid) { // TODO: verify this is correct. Should we identify the context IID with the context UUID?? try { @@ -1043,16 +1043,16 @@ public class TapiPceNotificationHandler { .build(); // Perform the merge operation with the new conn service and the connection context updated - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext connectivityContext = new ConnectivityContextBuilder() .setConnectivityService(Map.of(updtConnServ.key(), updtConnServ)) .setConnection(connFullMap) .build(); InstanceIdentifier connectivitycontextIID = + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivitycontextIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .build(); // merge in datastore this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectivitycontextIID, @@ -1070,13 +1070,13 @@ public class TapiPceNotificationHandler { InstanceIdentifier connectivityServIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(suuid)) .build(); Optional optConnServ = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectivityServIID).get(); - if (!optConnServ.isPresent()) { + if (optConnServ.isEmpty()) { LOG.error("Connectivity service not found in tapi context"); return null; } @@ -1092,7 +1092,7 @@ public class TapiPceNotificationHandler { InstanceIdentifier connectivityServIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(suuid)) .build(); try { @@ -1106,14 +1106,14 @@ public class TapiPceNotificationHandler { private void deleteConnection(Uuid connectionUuid) { // First read connectivity service with service uuid and update info InstanceIdentifier connectionIID = + .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class, + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class, new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey( + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey( connectionUuid)) .build(); try { @@ -1141,10 +1141,10 @@ public class TapiPceNotificationHandler { spcXpdrNetwork.split("\\+")[0], TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1])) .getBytes(Charset.forName("UTF-8"))).toString()); InstanceIdentifier nepIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class) + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class) .child(Topology.class, new TopologyKey(topoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)).child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)).build(); try { Optional optNode = this.networkTransactionService @@ -1159,7 +1159,7 @@ public class TapiPceNotificationHandler { } return optNode.orElseThrow().augmentation(OwnedNodeEdgePoint1.class).getCepList().getConnectionEndPoint() .get(new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey(cepUuid)); + .onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey(cepUuid)); } catch (InterruptedException | ExecutionException e) { LOG.error("Couldnt read node in topology", e); return null; @@ -1181,14 +1181,14 @@ public class TapiPceNotificationHandler { Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.DSR)) .getBytes(Charset.forName("UTF-8"))).toString()); InstanceIdentifier nodeIID + .onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeIID = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.topology.rev181210.Context1.class).child(TopologyContext.class) + .onf.otcc.yang.tapi.topology.rev221121.Context1.class).child(TopologyContext.class) .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)).build(); try { - Optional optNode + Optional optNode = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID).get(); if (!optNode.isPresent()) { return null; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiRendererNotificationHandler.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiRendererNotificationHandler.java index a41e9428b..96e8dd95f 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiRendererNotificationHandler.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/listeners/TapiRendererNotificationHandler.java @@ -25,31 +25,31 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSp; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationService; -import org.opendaylight.yang.gen.v1.nbi.notifications.rev230726.PublishTapiNotificationServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.DateAndTime; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.TargetObjectNameKey; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService; +import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.DateAndTime; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPETAPICONTEXT; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.TargetObjectNameKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -190,7 +190,7 @@ public class TapiRendererNotificationHandler { InstanceIdentifier connectivityServIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(suuid)) .build(); @@ -212,23 +212,23 @@ public class TapiRendererNotificationHandler { try { // First read connection with connection uuid and update info InstanceIdentifier connectionIID = + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class, + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class, new ConnectionKey(connectionUuid)) .build(); Optional optConn = + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> optConn = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectionIID).get(); if (!optConn.isPresent()) { LOG.error("Connection not found in tapi context"); return; } - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection newConnection = new ConnectionBuilder(optConn.orElseThrow()).setLifecycleState(LifecycleState.INSTALLED) .setOperationalState(OperationalState.ENABLED).build(); // merge in datastore @@ -248,7 +248,7 @@ public class TapiRendererNotificationHandler { InstanceIdentifier connServIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(updtConnServ.getUuid())) .build(); @@ -274,7 +274,7 @@ public class TapiRendererNotificationHandler { InstanceIdentifier connectivityServIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(suuid)) .build(); try { @@ -288,14 +288,14 @@ public class TapiRendererNotificationHandler { private void deleteConnection(Uuid connectionUuid) { // First read connectivity service with service uuid and update info InstanceIdentifier connectionIID = + .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class, + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class, new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey( + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey( connectionUuid)) .build(); try { @@ -357,12 +357,12 @@ public class TapiRendererNotificationHandler { .setUuid(new Uuid(UUID.randomUUID().toString())) .setTopic(connService.getUuid().getValue()) .setTargetObjectIdentifier(connService.getUuid()) - .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE) + .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE) .setChangedAttributes(changedStates) .setEventTimeStamp(datetime) .setTargetObjectName(targetObjectNames) - .setTargetObjectType(ObjectType.CONNECTIVITYSERVICE) - .setLayerProtocolName(connService.getServiceLayer()) + .setTargetObjectType(OBJECTTYPETAPICONTEXT.VALUE) + .setLayerProtocolName(connService.getLayerProtocolName()) .build(); } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiFullTopo.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiFullTopo.java index 461a7401f..c1f13f119 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiFullTopo.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiFullTopo.java @@ -36,58 +36,59 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPEGigE; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU0; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.AvailableCapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.TotalPotentialCapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU0; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPEGigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder; import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,7 +104,7 @@ public class ConvertORTopoToTapiFullTopo { private List oorNetworkPortList; private OduSwitchingPools oorOduSwitchingPool; private Uuid tapiTopoUuid; - private Map + private Map tapiNodes; private Map tapiLinks; private Map tapiSips; @@ -167,48 +168,29 @@ public class ConvertORTopoToTapiFullTopo { this.oorClientPortList.forEach(tp -> LOG.info("tp = {}", tp.getTpId())); } - // node creation [DSR/ODU] + // node creation XPDR ([DSR/ODU] and OTSI merged in R 2.4.X LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId); Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, - TapiStringConstants.DSR)).getBytes(Charset.forName("UTF-8"))).toString()); - this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR), nodeUuid); + TapiStringConstants.XPDR)).getBytes(Charset.forName("UTF-8"))).toString()); + this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR), nodeUuid); Name nameDsrNode = new NameBuilder().setValueName("dsr/odu node name").setValue( String.join("+", this.ietfNodeId, TapiStringConstants.DSR)).build(); +// Name nameOtsiNode = new NameBuilder().setValueName("otsi node name").setValue( +// String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)).build(); Name nameNodeType = new NameBuilder().setValueName("Node Type") .setValue(this.ietfNodeType.getName()).build(); - Set dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology + Set dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU, + LayerProtocolName.PHOTONICMEDIA); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology .Node dsrNode = createTapiNode(Map.of(nameDsrNode.key(), nameDsrNode, nameNodeType.key(), nameNodeType), dsrLayerProtocols); - LOG.info("DSR Node {} should have {} NEPs and {} SIPs", this.ietfNodeId, - this.oorClientPortList.size() + 2 * this.oorNetworkPortList.size(), + LOG.info("XPDR Node {} should have {} NEPs and {} SIPs", this.ietfNodeId, + this.oorClientPortList.size() + this.oorNetworkPortList.size(), this.oorClientPortList.size() + this.oorNetworkPortList.size()); - LOG.info("DSR Node {} has {} NEPs and {} SIPs", this.ietfNodeId, + LOG.info("XPDR Node {} has {} NEPs and {} SIPs", this.ietfNodeId, dsrNode.getOwnedNodeEdgePoint().values().size(), dsrNode.getOwnedNodeEdgePoint().values().stream() .filter(nep -> nep.getMappedServiceInterfacePoint() != null).count()); tapiNodes.put(dsrNode.key(), dsrNode); - - // node creation [otsi] - LOG.info("creation of an OTSi node for {}", this.ietfNodeId); - nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)) - .getBytes(Charset.forName("UTF-8"))).toString()); - this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI), nodeUuid); - Name nameOtsiNode = new NameBuilder().setValueName("otsi node name").setValue( - String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)).build(); - Set otsiLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology - .Node otsiNode = createTapiNode(Map.of(nameOtsiNode.key(), nameOtsiNode, nameNodeType.key(), nameNodeType), - otsiLayerProtocols); - LOG.info("OTSi Node {} should have {} NEPs and {} SIPs", this.ietfNodeId, 3 * this.oorNetworkPortList.size(), - this.oorNetworkPortList.size()); - LOG.info("OTSi Node {} has {} NEPs and {} SIPs", this.ietfNodeId, - otsiNode.getOwnedNodeEdgePoint().values().size(), otsiNode.getOwnedNodeEdgePoint().values().stream() - .filter(nep -> nep.getMappedServiceInterfacePoint() != null).count()); - tapiNodes.put(otsiNode.key(), otsiNode); - - // transitional link cration between network nep of DSR/ODU node and iNep of otsi node - LOG.info("creation of transitional links between DSR/ODU and OTSi nodes"); - createTapiTransitionalLinks(); } public void convertRdmToRdmLinks(List layerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA); // Build tapi node - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology .Node roadmNode = createRoadmTapiNode(nodeUuid, Map.of(nodeNames.key(), nodeNames, nameNodeType.key(), nameNodeType), layerProtocols, oneplist); // TODO add states corresponding to device config @@ -384,16 +369,18 @@ public class ConvertORTopoToTapiFullTopo { .build(); } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node createTapiNode(Map nodeNames, Set layerProtocols) { Uuid nodeUuid = null; Map onepl = new HashMap<>(); Map nodeRuleGroupList = new HashMap<>(); Map ruleList = new HashMap<>(); + Set ruleTypes = new HashSet<>(); + ruleTypes.add(RuleType.FORWARDING); Rule rule = new RuleBuilder() .setLocalId("forward") - .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP) - .setRuleType(RuleType.FORWARDING) + .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) + .setRuleType(ruleTypes) .build(); ruleList.put(rule.key(), rule); if (layerProtocols.contains(LayerProtocolName.DSR)) { @@ -412,7 +399,7 @@ public class ConvertORTopoToTapiFullTopo { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -437,7 +424,7 @@ public class ConvertORTopoToTapiFullTopo { .build(); } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node createRoadmTapiNode(Uuid nodeUuid, Map nameMap, Set layerProtocols, Map oneplist) { // Empty random creation of mandatory fields for avoiding errors.... @@ -448,7 +435,7 @@ public class ConvertORTopoToTapiFullTopo { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -545,11 +532,11 @@ public class ConvertORTopoToTapiFullTopo { int count = 1; LOG.info("OTSi switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values()); for (TerminationPoint tp : this.oorNetworkPortList) { - Map + Map nepList = new HashMap<>(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group - .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210 + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group + .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121 .node.rule.group.NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))) @@ -557,8 +544,8 @@ public class ConvertORTopoToTapiFullTopo { this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI, tp.getTpId().getValue()))) .build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group - .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210 + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group + .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121 .node.rule.group.NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))) @@ -576,7 +563,7 @@ public class ConvertORTopoToTapiFullTopo { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -673,8 +660,8 @@ public class ConvertORTopoToTapiFullTopo { int count = 1; LOG.info("ODU switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values()); for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) { - Map + Map nepList = new HashMap<>(); LOG.info("UUidMap={}", this.uuidMap.keySet()); LOG.info("TP list = {}", nbl.getTpList()); @@ -686,18 +673,18 @@ public class ConvertORTopoToTapiFullTopo { TapiStringConstants.E_ODU, tp.getValue())) && this.uuidMap.containsKey(String.join("+", this.ietfNodeId, TapiStringConstants.DSR, tp.getValue()))) { - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint nep1 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder() + .onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR))) .setNodeEdgePointUuid(this.uuidMap.get(String.join( "+", this.ietfNodeId, TapiStringConstants.DSR, tp.getValue()))) .build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint nep2 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder() + .onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR))) @@ -716,7 +703,7 @@ public class ConvertORTopoToTapiFullTopo { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -761,19 +748,20 @@ public class ConvertORTopoToTapiFullTopo { operState = this.tapiLink.setTapiOperationalState(oorTp.augmentation(TerminationPoint1.class) .getOperationalState().getName()); } - onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedLayerProtocolQualifier(oorTp, nepProtocol)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL) + onepBldr.setSupportedCepLayerProtocolQualifierInstances(createSupportedLayerProtocolQualifier(oorTp, + nepProtocol)) + .setDirection(Direction.BIDIRECTIONAL) .setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(adminState) .setOperationalState(operState) - .setLifecycleState(LifecycleState.INSTALLED) - .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); + .setLifecycleState(LifecycleState.INSTALLED); +// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) +// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); return onepBldr.build(); } private Map populateNepsForRdmNode(List tpList, - boolean withSip) { + boolean withSip, String nepPhotonicSublayer) { // create neps for MC and OTSiMC and Photonic Media Map onepMap = new HashMap<>(); for (TerminationPoint tp:tpList) { @@ -784,92 +772,48 @@ public class ConvertORTopoToTapiFullTopo { LOG.info("PHOTO NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA, tp.getTpId().getValue())); Name nepName = new NameBuilder() - .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint") - .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA, + .setValueName(nepPhotonicSublayer + "NodeEdgePoint") + .setValue(String.join("+", this.ietfNodeId, nepPhotonicSublayer, tp.getTpId().getValue())) .build(); + List sclpqiList = new ArrayList<>(); + sclpqiList.add( + new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier( + TapiStringConstants.PHTNC_MEDIA_OMS.equals(nepPhotonicSublayer) + ? PHOTONICLAYERQUALIFIEROMS.VALUE + : PHOTONICLAYERQUALIFIEROTS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder() .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, - TapiStringConstants.PHTNC_MEDIA, tp.getTpId().getValue())) + nepPhotonicSublayer, tp.getTpId().getValue())) .getBytes(Charset.forName("UTF-8"))).toString())) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) .setName(Map.of(nepName.key(), nepName)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL) + .setSupportedCepLayerProtocolQualifierInstances(sclpqiList) + .setDirection(Direction.BIDIRECTIONAL) .setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName())) .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName())) .setLifecycleState(LifecycleState.INSTALLED) - .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) +// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) +// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) .build(); onepMap.put(onep.key(), onep); - - // MC nep - LOG.info("MC NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.MC, - tp.getTpId().getValue())); - Name nepName1 = new NameBuilder() - .setValueName(TapiStringConstants.MC + "NodeEdgePoint") - .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.MC, tp.getTpId().getValue())) - .build(); - OwnedNodeEdgePointBuilder onepBldr1 = new OwnedNodeEdgePointBuilder() - .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, - TapiStringConstants.MC, tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString())) - .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) - .setName(Map.of(nepName1.key(), nepName1)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL) - .setLinkPortRole(PortRole.SYMMETRIC) - .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName())) - .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName())) - .setLifecycleState(LifecycleState.INSTALLED) - .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); - if (withSip) { - onepBldr1.setMappedServiceInterfacePoint(createMSIP(1, LayerProtocolName.PHOTONICMEDIA, - tp, String.join("+", this.ietfNodeId, TapiStringConstants.MC))); - } - OwnedNodeEdgePoint onep1 = onepBldr1.build(); - onepMap.put(onep1.key(), onep1); - - // OTSiMC nep - LOG.info("OTSi NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC, - tp.getTpId().getValue())); - Name nepName2 = new NameBuilder() - .setValueName(TapiStringConstants.OTSI_MC + "NodeEdgePoint") - .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC, - tp.getTpId().getValue())) - .build(); - - OwnedNodeEdgePoint onep2 = new OwnedNodeEdgePointBuilder() - .setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, - TapiStringConstants.OTSI_MC, tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))) - .toString())) - .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) - .setName(Map.of(nepName2.key(), nepName2)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL) - .setLinkPortRole(PortRole.SYMMETRIC) - .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName())) - .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName())) - .setLifecycleState(LifecycleState.INSTALLED) - .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) - .build(); - onepMap.put(onep2.key(), onep2); } return onepMap; } private Map createNodeRuleGroupForRdmNode(Uuid nodeUuid, Collection onepl) { - Map + Map nepMap = new HashMap<>(); for (OwnedNodeEdgePoint onep : onepl) { - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint - nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint + nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group .NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(nodeUuid) @@ -879,10 +823,12 @@ public class ConvertORTopoToTapiFullTopo { } Map nodeRuleGroupMap = new HashMap<>(); Map ruleList = new HashMap<>(); + Set ruleTypes = new HashSet<>(); + ruleTypes.add(RuleType.FORWARDING); Rule rule = new RuleBuilder() .setLocalId("forward") - .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP) - .setRuleType(RuleType.FORWARDING) + .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) + .setRuleType(ruleTypes) .build(); ruleList.put(rule.key(), rule); NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder() @@ -941,22 +887,31 @@ public class ConvertORTopoToTapiFullTopo { .setLifecycleState(LifecycleState.INSTALLED) .setAvailableCapacity(new AvailableCapacityBuilder().build()) .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build()) - .setSupportedLayerProtocolQualifier(createSupportedLayerProtocolQualifier(tp, layerProtocol)) + .setSupportedCepLayerProtocolQualifierInstances(createSipSupportedLayerProtocolQualifier( + tp, layerProtocol)) .build(); } - private Set createSupportedLayerProtocolQualifier(TerminationPoint tp, - LayerProtocolName lpn) { - Set sclpqSet = new HashSet<>(); + private List + createSipSupportedLayerProtocolQualifier(TerminationPoint tp, + LayerProtocolName lpn) { + List sclpqiList = new ArrayList<>(); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1 tp1 = tp.augmentation(org.opendaylight.yang.gen.v1.http .org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class); if (tp1 == null) { - return new HashSet<>(sclpqSet); + return new ArrayList<>(sclpqiList); } if (tp1.getTpSupportedInterfaces() == null) { LOG.warn("Tp supported interface doesnt exist on TP {}", tp.getTpId().getValue()); - return new HashSet<>(sclpqSet); + return new ArrayList<>(sclpqiList); } Collection sicList = tp1.getTpSupportedInterfaces() .getSupportedInterfaceCapability().values(); @@ -968,30 +923,74 @@ public class ConvertORTopoToTapiFullTopo { // TODO: it may be needed to add more cases clauses if the interface capabilities of a // port are extended in the config file case "If1GEODU0": - sclpqSet.add(ODUTYPEODU0.VALUE); - sclpqSet.add(DIGITALSIGNALTYPEGigE.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2e": - sclpqSet.add(ODUTYPEODU2E.VALUE); - sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2": - sclpqSet.add(ODUTYPEODU2.VALUE); - sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GE": - sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GEODU4": - sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE); - sclpqSet.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GE": - sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "IfOCHOTU4ODU4": case "IfOCH": - sclpqSet.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; default: LOG.error("IfCapability type not managed"); @@ -1003,20 +1002,36 @@ public class ConvertORTopoToTapiFullTopo { // TODO: it may be needed to add more cases clauses if the interface capabilities of a // port are extended in the config file case "If1GEODU0": - sclpqSet.add(ODUTYPEODU0.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2e": - sclpqSet.add(ODUTYPEODU2E.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2": case "If10GE": - sclpqSet.add(ODUTYPEODU2.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GEODU4": case "If100GE": case "IfOCHOTU4ODU4": case "IfOCH": - sclpqSet.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; default: LOG.error("IfCapability type not managed"); @@ -1025,8 +1040,16 @@ public class ConvertORTopoToTapiFullTopo { break; case "PHOTONIC_MEDIA": if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) { - sclpqSet.add(PHOTONICLAYERQUALIFIEROTSi.VALUE); - sclpqSet.add(PHOTONICLAYERQUALIFIEROMS.VALUE); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); } break; default: @@ -1034,19 +1057,154 @@ public class ConvertORTopoToTapiFullTopo { break; } } - return sclpqSet; + return sclpqiList; } - private void createTapiTransitionalLinks() { - for (TerminationPoint tp : this.oorNetworkPortList) { - Link transiLink = tapiLink.createTapiLink(this.ietfNodeId, tp.getTpId().getValue(), this.ietfNodeId, - tp.getTpId().getValue(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR, - TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI, - "inService", "inService", Set.of(LayerProtocolName.ODU, LayerProtocolName.PHOTONICMEDIA), - Set.of(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()), - this.tapiTopoUuid); - this.tapiLinks.put(transiLink.key(), transiLink); + private List createSupportedLayerProtocolQualifier(TerminationPoint tp, + LayerProtocolName lpn) { + List sclpqiList = new ArrayList<>(); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1 tp1 = + tp.augmentation(org.opendaylight.yang.gen.v1.http + .org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class); + if (tp1 == null) { + return new ArrayList<>(sclpqiList); + } + if (tp1.getTpSupportedInterfaces() == null) { + LOG.warn("Tp supported interface doesnt exist on TP {}", tp.getTpId().getValue()); + return new ArrayList<>(sclpqiList); + } + Collection sicList = tp1.getTpSupportedInterfaces() + .getSupportedInterfaceCapability().values(); + for (SupportedInterfaceCapability sic : sicList) { + String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; + switch (lpn.getName()) { + case "DSR": + switch (ifCapType) { + // TODO: it may be needed to add more cases clauses if the interface capabilities of a + // port are extended in the config file + case "If1GEODU0": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2e": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GE": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If100GEODU4": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If100GE": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "IfOCHOTU4ODU4": + case "IfOCH": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + default: + LOG.error("IfCapability type not managed"); + break; + } + break; + case "ODU": + switch (ifCapType) { + // TODO: it may be needed to add more cases clauses if the interface capabilities of a + // port are extended in the config file + case "If1GEODU0": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2e": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2": + case "If10GE": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If100GEODU4": + case "If100GE": + case "IfOCHOTU4ODU4": + case "IfOCH": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + default: + LOG.error("IfCapability type not managed"); + break; + } + break; + case "PHOTONIC_MEDIA": + if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) { + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + } + break; + default: + LOG.error("Layer Protocol Name is unknown"); + break; + } } + return sclpqiList; } public void convertXpdrToRdmLinks(List + public Map getTapiNodes() { return tapiNodes; } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopo.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopo.java index 8fe16f870..5e989eb75 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopo.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopo.java @@ -38,50 +38,53 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev2 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU0; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPEGigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -97,7 +100,7 @@ public class ConvertORTopoToTapiTopo { private List oorNetworkPortList; private OduSwitchingPools oorOduSwitchingPool; private Uuid tapiTopoUuid; - private Map + private Map tapiNodes; private Map tapiLinks; private Map uuidMap; @@ -162,34 +165,19 @@ public class ConvertORTopoToTapiTopo { // node creation [DSR/ODU] LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId); Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, - TapiStringConstants.DSR)).getBytes(Charset.forName("UTF-8"))).toString()); - this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR), nodeUuid); + TapiStringConstants.XPDR)).getBytes(Charset.forName("UTF-8"))).toString()); + this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR), nodeUuid); Name nameDsr = new NameBuilder().setValueName("dsr/odu node name") - .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.DSR)).build(); + .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR)).build(); Name nameNodeType = new NameBuilder().setValueName("Node Type") .setValue(this.ietfNodeType.getName()).build(); - Set dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology + Set dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU, + LayerProtocolName.PHOTONICMEDIA); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology .Node dsrNode = createTapiNode(Map.of(nameDsr.key(), nameDsr, nameNodeType.key(), nameNodeType), dsrLayerProtocols); tapiNodes.put(dsrNode.key(), dsrNode); - // node creation [otsi] - LOG.info("creation of an OTSi node for {}", this.ietfNodeId); - nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)) - .getBytes(Charset.forName("UTF-8"))).toString()); - this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI), nodeUuid); - Name nameOtsi = new NameBuilder().setValueName("otsi node name") - .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI)).build(); - Set otsiLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology - .Node otsiNode = createTapiNode(Map.of(nameOtsi.key(), nameOtsi, nameNodeType.key(), nameNodeType), - otsiLayerProtocols); - tapiNodes.put(otsiNode.key(), otsiNode); - - // transitional link cration between network nep of DSR/ODU node and iNep of otsi node - LOG.info("creation of transitional links between DSR/ODU and OTSi nodes"); - createTapiTransitionalLinks(); } public void convertLinks(Map< @@ -258,7 +246,7 @@ public class ConvertORTopoToTapiTopo { .setValue(OpenroadmNodeType.ROADM.getName()).build(); Set nodeLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA); - List tapiPhotonicNodes + List tapiPhotonicNodes = pruneTapiPhotonicNodes(); Map photonicNepUuisMap = convertListNodeWithListNepToMapForUuidAndName(tapiPhotonicNodes); // nep creation for rdm infra abstraction node @@ -267,7 +255,7 @@ public class ConvertORTopoToTapiTopo { Map nodeRuleGroupList = createNodeRuleGroupForRdmNode(nodeUuid, onepMap.values()); // build RDM infra node abstraction - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node rdmNode = new NodeBuilder() + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node rdmNode = new NodeBuilder() .setUuid(nodeUuid) .setName(Map.of(nodeName.key(), nodeName, nameNodeType.key(), nameNodeType)) .setLayerProtocolName(nodeLayerProtocols) @@ -312,16 +300,16 @@ public class ConvertORTopoToTapiTopo { .build(); } - private List + private List pruneTapiPhotonicNodes() { - List + List prunedTapiPhotonicNodes = new ArrayList<>(); - List tapiPhotonicNodes + List tapiPhotonicNodes = this.tapiNodes.values().stream() .filter(n -> LayerProtocolName.PHOTONICMEDIA.equals(n.getLayerProtocolName().stream().findFirst() .orElseThrow())) .collect(Collectors.toList()); - for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node : tapiPhotonicNodes) { Map onepM = new HashMap<>(); for (Map.Entry entry : node.getOwnedNodeEdgePoint().entrySet()) { @@ -330,7 +318,7 @@ public class ConvertORTopoToTapiTopo { onepM.put(entry.getKey(), entry.getValue()); } } - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node prunedNode + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node prunedNode = new NodeBuilder(node).setOwnedNodeEdgePoint(onepM).build(); prunedTapiPhotonicNodes.add(prunedNode); } @@ -338,9 +326,9 @@ public class ConvertORTopoToTapiTopo { } private Map convertListNodeWithListNepToMapForUuidAndName( - List nodes) { + List nodes) { Map uuidNameMap = new HashMap<>(); - for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node : nodes) { + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node : nodes) { for (OwnedNodeEdgePoint nep : node.nonnullOwnedNodeEdgePoint().values()) { String nodeUuid = node.getUuid().getValue(); String nepUuid = nep.getUuid().getValue(); @@ -354,16 +342,18 @@ public class ConvertORTopoToTapiTopo { return uuidNameMap; } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node createTapiNode(Map nodeNames, Set layerProtocols) { Uuid nodeUuid = null; Map onepl = new HashMap<>(); Map nodeRuleGroupList = new HashMap<>(); Map ruleList = new HashMap<>(); + Set ruleTypes = new HashSet<>(); + ruleTypes.add(RuleType.FORWARDING); Rule rule = new RuleBuilder() .setLocalId("forward") - .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP) - .setRuleType(RuleType.FORWARDING) + .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) + .setRuleType(ruleTypes) .build(); ruleList.put(rule.key(), rule); if (layerProtocols.contains(LayerProtocolName.DSR)) { @@ -432,19 +422,19 @@ public class ConvertORTopoToTapiTopo { // create NodeRuleGroup int count = 1; for (TerminationPoint tp : this.oorNetworkPortList) { - Map + Map nepList = new HashMap<>(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group - .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210 + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group + .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121 .node.rule.group.NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))) .setNodeEdgePointUuid( this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI, tp.getTpId().getValue()))).build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group - .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210 + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group + .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121 .node.rule.group.NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI))) @@ -513,8 +503,8 @@ public class ConvertORTopoToTapiTopo { // create NodeRuleGroup int count = 1; for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) { - Map + Map nepList = new HashMap<>(); for (TpId tp : nbl.getTpList()) { if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, TapiStringConstants.DSR, @@ -522,8 +512,8 @@ public class ConvertORTopoToTapiTopo { "+", this.ietfNodeId, TapiStringConstants.I_ODU, tp.getValue()))) { String qual = tp.getValue().contains("CLIENT") ? TapiStringConstants.DSR : TapiStringConstants.I_ODU; - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint - nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint + nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group .NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, @@ -563,14 +553,15 @@ public class ConvertORTopoToTapiTopo { .setUuid(this.uuidMap.get(key)) .setLayerProtocolName(nepProtocol) .setName(nepNames) - .setSupportedCepLayerProtocolQualifier(createSupportedCepLayerProtocolQualifier(oorTp, nodeProtocol)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL) + .setSupportedCepLayerProtocolQualifierInstances(createSupportedCepLayerProtocolQualifier(oorTp, + nodeProtocol)) + .setDirection(Direction.BIDIRECTIONAL) .setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(adminState) .setOperationalState(operState) - .setLifecycleState(LifecycleState.INSTALLED) - .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); + .setLifecycleState(LifecycleState.INSTALLED); +// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) +// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); if (withSip) { onepBldr.setMappedServiceInterfacePoint(createSIP(1, oorTp, keyword)); } @@ -586,15 +577,21 @@ public class ConvertORTopoToTapiTopo { .setValueName("NodeEdgePoint name") .setValue(new StringBuilder("NodeEdgePoint_").append(i).toString()) .build(); + List sclpqiList = new ArrayList<>(); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder() .setUuid(nepUuid) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) .setName(Map.of(nepName.key(), nepName)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) + .setSupportedCepLayerProtocolQualifierInstances(sclpqiList) + .setDirection(Direction.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(AdministrativeState.UNLOCKED).setOperationalState(OperationalState.ENABLED) - .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) + .setLifecycleState(LifecycleState.INSTALLED) +// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) +// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) .build(); onepMap.put(onep.key(), onep); } @@ -603,12 +600,12 @@ public class ConvertORTopoToTapiTopo { private Map createNodeRuleGroupForRdmNode(Uuid nodeUuid, Collection onepl) { - Map + Map nepMap = new HashMap<>(); for (OwnedNodeEdgePoint onep : onepl) { - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint - nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint + nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group .NodeEdgePointBuilder() .setTopologyUuid(tapiTopoUuid) .setNodeUuid(nodeUuid) @@ -617,11 +614,13 @@ public class ConvertORTopoToTapiTopo { nepMap.put(nep.key(), nep); } Map nodeRuleGroupMap = new HashMap<>(); + Set ruleTypes = new HashSet<>(); + ruleTypes.add(RuleType.FORWARDING); Map ruleList = new HashMap<>(); Rule rule = new RuleBuilder() .setLocalId("forward") - .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP) - .setRuleType(RuleType.FORWARDING) + .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) + .setRuleType(ruleTypes) .build(); ruleList.put(rule.key(), rule); NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder() @@ -647,39 +646,128 @@ public class ConvertORTopoToTapiTopo { return msipl; } - private Set - createSupportedCepLayerProtocolQualifier(TerminationPoint tp, LayerProtocolName lpn) { - Set sclpqSet = new HashSet<>(); - Collection sicList = tp.augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class) - .getTpSupportedInterfaces() + private List createSupportedCepLayerProtocolQualifier( + TerminationPoint tp, LayerProtocolName lpn) { + List sclpqiList = new ArrayList<>(); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1 tp1 = + tp.augmentation(org.opendaylight.yang.gen.v1.http + .org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class); + if (tp1 == null) { + return new ArrayList<>(sclpqiList); + } + if (tp1.getTpSupportedInterfaces() == null) { + LOG.warn("Tp supported interface doesnt exist on TP {}", tp.getTpId().getValue()); + return new ArrayList<>(sclpqiList); + } + Collection sicList = tp1.getTpSupportedInterfaces() .getSupportedInterfaceCapability().values(); for (SupportedInterfaceCapability sic : sicList) { String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; switch (lpn.getName()) { case "DSR": switch (ifCapType) { + // TODO: it may be needed to add more cases clauses if the interface capabilities of a + // port are extended in the config file + case "If1GEODU0": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; case "If10GEODU2e": - sclpqSet.add(ODUTYPEODU2E.VALUE); - sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2": - sclpqSet.add(ODUTYPEODU2.VALUE); - sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GE": - sclpqSet.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GEODU4": - sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE); - sclpqSet.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GE": - sclpqSet.add(DIGITALSIGNALTYPE100GigE.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "IfOCHOTU4ODU4": + case "IfOCH": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + default: + LOG.error("IfCapability type not managed"); + break; + } + break; + //TODO: verify that in the new scope it makes sense to include ODU in the abstracted topology + case "ODU": + switch (ifCapType) { + // TODO: it may be needed to add more cases clauses if the interface capabilities of a + // port are extended in the config file + case "If1GEODU0": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2e": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2": + case "If10GE": + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; + case "If100GEODU4": + case "If100GE": case "IfOCHOTU4ODU4": case "IfOCH": - sclpqSet.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; default: LOG.error("IfCapability type not managed"); @@ -688,8 +776,14 @@ public class ConvertORTopoToTapiTopo { break; case "PHOTONIC_MEDIA": if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) { - sclpqSet.add(PHOTONICLAYERQUALIFIEROTSi.VALUE); - sclpqSet.add(PHOTONICLAYERQUALIFIEROMS.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); } break; default: @@ -697,19 +791,7 @@ public class ConvertORTopoToTapiTopo { break; } } - return sclpqSet; - } - - private void createTapiTransitionalLinks() { - for (TerminationPoint tp : this.oorNetworkPortList) { - Link transiLink = tapiLink.createTapiLink(this.ietfNodeId, tp.getTpId().getValue(), this.ietfNodeId, - tp.getTpId().getValue(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR, - TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI, - "inService", "inService", Set.of(LayerProtocolName.ODU, LayerProtocolName.PHOTONICMEDIA), - Set.of(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()), - this.tapiTopoUuid); - this.tapiLinks.put(transiLink.key(), transiLink); - } + return sclpqiList; } private void createTapiOmsLinks(Map photonicNepUuisMap, Map rdmInfraNepUuisMap) { @@ -752,7 +834,7 @@ public class ConvertORTopoToTapiTopo { } } - public Map + public Map getTapiNodes() { return tapiNodes; } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java index a0be0b12c..d3827534b 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java @@ -48,96 +48,97 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.Supp import org.opendaylight.yang.gen.v1.http.org.openroadm.switching.pool.types.rev191129.SwitchingPoolTypes; 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.TpId; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ContextBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1Builder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepList; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPEGigE; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.NotificationType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.ObjectType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributes; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.notification.ChangedAttributesKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU0; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.NodeEdgePointRef; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPETAPICONTEXT; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.AvailableCapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.TotalPotentialCapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1Builder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepList; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU0; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPEGigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NOTIFICATIONTYPEATTRIBUTEVALUECHANGE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.NotificationBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributes; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.ChangedAttributesKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.NodeEdgePointRef; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.Notification; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; +import org.opendaylight.yangtools.yang.common.Uint64; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -271,8 +272,10 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { @SuppressWarnings("rawtypes") private void sendNotification(List changedOneps, Mapping mapping) { Notification notification = new NotificationBuilder() - .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE) - .setTargetObjectType(ObjectType.NODEEDGEPOINT) + .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE) +// .setTargetObjectType(ObjectType.NODEEDGEPOINT) + //TODO: Change this : modification in Models 2.4 does not provide for Object type Node EdgePoint + .setTargetObjectType(OBJECTTYPETAPICONTEXT.VALUE) .setChangedAttributes(getChangedAttributes(changedOneps, mapping)) .setUuid(tapiTopoUuid) .build(); @@ -494,7 +497,8 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } Map srgNeps = createRoadmNeps(orNodeId, m.getLogicalConnectionPoint(), true, - transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState())); + transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()), + TapiStringConstants.PHTNC_MEDIA_OTS); onepMap.putAll(srgNeps); } } @@ -513,7 +517,11 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } Map degNeps = createRoadmNeps(orNodeId, m.getLogicalConnectionPoint(), false, - transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState())); + transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()), + TapiStringConstants.PHTNC_MEDIA_OTS); + degNeps.putAll(createRoadmNeps(orNodeId, m.getLogicalConnectionPoint(), false, + transformOperState(m.getPortOperState()), transformAdminState(m.getPortAdminState()), + TapiStringConstants.PHTNC_MEDIA_OMS)); onepMap.putAll(degNeps); } } @@ -623,10 +631,12 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { Map onepl = new HashMap<>(); Map nodeRuleGroupList = new HashMap<>(); Map ruleList = new HashMap<>(); + Set ruleTypes = new HashSet<>(); + ruleTypes.add(RuleType.FORWARDING); Rule rule = new RuleBuilder() .setLocalId("forward") - .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP) - .setRuleType(RuleType.FORWARDING) + .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) + .setRuleType(ruleTypes) .build(); ruleList.put(rule.key(), rule); if (layerProtocols.contains(LayerProtocolName.DSR)) { @@ -653,7 +663,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -854,18 +864,18 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { supportedInterfaceCapability, operState, adminState)); } LOG.debug("Node layer {}", nodeProtocol.getName()); - onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedLayerProtocolQualifier( + onepBldr.setSupportedCepLayerProtocolQualifierInstances(createSupportedLayerProtocolQualifier( supportedInterfaceCapability, nepProtocol)); - onepBldr.setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) + onepBldr.setDirection(Direction.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(adminState).setOperationalState(operState) - .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); + .setLifecycleState(LifecycleState.INSTALLED); +// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) +// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); return onepBldr.build(); } private Map createRoadmNeps(String orNodeId, String tpId, - boolean withSip, OperationalState operState, - AdministrativeState adminState) { + boolean withSip, OperationalState operState, AdministrativeState adminState, String nepPhotonicSublayer) { Map onepMap = new HashMap<>(); // PHOTONIC MEDIA nep Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, @@ -874,61 +884,28 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint") .setValue(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA, tpId)) .build(); + List sclpqiList = new ArrayList<>(); + sclpqiList.add( + new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier( + TapiStringConstants.PHTNC_MEDIA_OMS.equals(nepPhotonicSublayer) + ? PHOTONICLAYERQUALIFIEROMS.VALUE + : PHOTONICLAYERQUALIFIEROTS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder() .setUuid(nepUuid) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) .setName(Map.of(nepName.key(), nepName)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) + .setSupportedCepLayerProtocolQualifierInstances(sclpqiList) + .setDirection(Direction.BIDIRECTIONAL) + .setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(adminState).setOperationalState(operState) - .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) + .setLifecycleState(LifecycleState.INSTALLED) +// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL) +// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) .build(); onepMap.put(onep.key(), onep); - - // MC nep - Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, - TapiStringConstants.MC, tpId)).getBytes(StandardCharsets.UTF_8)).toString()); - Name nepName1 = new NameBuilder() - .setValueName(TapiStringConstants.MC + "NodeEdgePoint") - .setValue(String.join("+", orNodeId, TapiStringConstants.MC, tpId)) - .build(); - OwnedNodeEdgePointBuilder onepBldr1 = new OwnedNodeEdgePointBuilder() - .setUuid(nepUuid1) - .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) - .setName(Map.of(nepName1.key(), nepName1)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) - .setAdministrativeState(adminState).setOperationalState(operState) - .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL); - if (withSip) { - onepBldr1.setMappedServiceInterfacePoint(createMSIP(1, LayerProtocolName.PHOTONICMEDIA, - tpId, String.join("+", orNodeId, TapiStringConstants.MC), null, - operState, adminState)); - } - OwnedNodeEdgePoint onep1 = onepBldr1.build(); - onepMap.put(onep1.key(), onep1); - - // OTSiMC nep - Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, TapiStringConstants.OTSI_MC, - tpId)).getBytes(StandardCharsets.UTF_8)).toString()); - Name nepName2 = new NameBuilder() - .setValueName(TapiStringConstants.OTSI_MC + "NodeEdgePoint") - .setValue(String.join("+", orNodeId, TapiStringConstants.OTSI_MC, tpId)) - .build(); - - OwnedNodeEdgePoint onep2 = new OwnedNodeEdgePointBuilder() - .setUuid(nepUuid2) - .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) - .setName(Map.of(nepName2.key(), nepName2)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) - .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) - .setAdministrativeState(adminState).setOperationalState(operState) - .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) - .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL) - .build(); - onepMap.put(onep2.key(), onep2); return onepMap; } @@ -970,8 +947,8 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .setLifecycleState(LifecycleState.INSTALLED) .setAvailableCapacity(new AvailableCapacityBuilder().build()) .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build()) - .setSupportedLayerProtocolQualifier(createSupportedLayerProtocolQualifier(supportedInterfaceCapability, - layerProtocol)) + .setSupportedCepLayerProtocolQualifierInstances(createSipSupportedLayerProtocolQualifier( + supportedInterfaceCapability, layerProtocol)) .build(); } @@ -994,7 +971,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.COST_HOP_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -1033,10 +1010,12 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } Map nodeRuleGroupMap = new HashMap<>(); Map ruleList = new HashMap<>(); + Set ruleTypes = new HashSet<>(); + ruleTypes.add(RuleType.FORWARDING); Rule rule = new RuleBuilder() .setLocalId("forward") - .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP) - .setRuleType(RuleType.FORWARDING) + .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) + .setRuleType(ruleTypes) .build(); ruleList.put(rule.key(), rule); NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder() @@ -1171,7 +1150,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -1247,7 +1226,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -1272,10 +1251,182 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { return nodeRuleGroupMap; } - private Set createSupportedLayerProtocolQualifier( + private List + createSipSupportedLayerProtocolQualifier(List sicList, LayerProtocolName lpn) { + List sclpqiList = new ArrayList<>(); + if (sicList == null) { + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); + return sclpqiList; + } + Map supIfMap = new HashMap<>(); + LOG.info("SIC list = {}", sicList); + for (SupportedIfCapability supInterCapa : sicList) { + SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder() + .withKey(new SupportedInterfaceCapabilityKey(supInterCapa)) + .setIfCapType(supInterCapa) + .build(); + supIfMap.put(supIfCapa.key(), supIfCapa); + } + for (SupportedInterfaceCapability sic : supIfMap.values()) { + String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; + switch (lpn.getName()) { + case "DSR": + switch (ifCapType) { + // TODO: it may be needed to add more cases clauses if the interface capabilities of a + // port are extended in the config file + case "If1GEODU0": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2e": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GE": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If100GEODU4": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If100GE": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "IfOCHOTU4ODU4": + case "IfOCH": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + default: + LOG.error("IfCapability type not managed"); + break; + } + break; + case "ODU": + switch (ifCapType) { + // TODO: it may be needed to add more cases clauses if the interface capabilities of a + // port are extended in the config file + case "If1GEODU0": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2e": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If10GEODU2": + case "If10GE": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + case "If100GEODU4": + case "If100GE": + case "IfOCHOTU4ODU4": + case "IfOCH": + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + break; + default: + LOG.error("IfCapability type not managed"); + break; + } + break; + case "PHOTONIC_MEDIA": + if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) { + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121 + .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + } + break; + default: + LOG.error("Layer Protocol Name is unknown {}", lpn.getName()); + break; + } + } + return sclpqiList; + } + + private List createSupportedLayerProtocolQualifier( List sicList, LayerProtocolName lpn) { + List sclpqiList = new ArrayList<>(); if (sicList == null) { - return Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(1)) + .build()); + return sclpqiList; } Map supIfMap = new HashMap<>(); LOG.info("SIC list = {}", sicList); @@ -1286,7 +1437,6 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .build(); supIfMap.put(supIfCapa.key(), supIfCapa); } - Set sclpqList = new HashSet<>(); for (SupportedInterfaceCapability sic : supIfMap.values()) { String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; switch (lpn.getName()) { @@ -1295,30 +1445,63 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { // TODO: it may be needed to add more cases clauses if the interface capabilities of a // port are extended in the config file case "If1GEODU0": - sclpqList.add(ODUTYPEODU0.VALUE); - sclpqList.add(DIGITALSIGNALTYPEGigE.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2e": - sclpqList.add(ODUTYPEODU2E.VALUE); - sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2": - sclpqList.add(ODUTYPEODU2.VALUE); - sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GE": - sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GEODU4": - sclpqList.add(DIGITALSIGNALTYPE100GigE.VALUE); - sclpqList.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GE": - sclpqList.add(DIGITALSIGNALTYPE100GigE.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "IfOCHOTU4ODU4": case "IfOCH": - sclpqList.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; default: LOG.error("IfCapability type not managed"); @@ -1330,20 +1513,32 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { // TODO: it may be needed to add more cases clauses if the interface capabilities of a // port are extended in the config file case "If1GEODU0": - sclpqList.add(ODUTYPEODU0.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU0.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2e": - sclpqList.add(ODUTYPEODU2E.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If10GEODU2": case "If10GE": - sclpqList.add(ODUTYPEODU2.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU2.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; case "If100GEODU4": case "If100GE": case "IfOCHOTU4ODU4": case "IfOCH": - sclpqList.add(ODUTYPEODU4.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(ODUTYPEODU4.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); break; default: LOG.error("IfCapability type not managed"); @@ -1352,8 +1547,14 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { break; case "PHOTONIC_MEDIA": if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) { - sclpqList.add(PHOTONICLAYERQUALIFIEROTSi.VALUE); - sclpqList.add(PHOTONICLAYERQUALIFIEROMS.VALUE); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); + sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder() + .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE) + .setNumberOfCepInstances(Uint64.valueOf(0)) + .build()); } break; default: @@ -1361,7 +1562,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { break; } } - return sclpqList; + return sclpqiList; } private String getNodeType(XpdrNodeTypes xponderType) { @@ -1484,7 +1685,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private void updateConnectivityServicesState(Uuid sipUuid, String nodeId) { // TODO: check if this IID is correct InstanceIdentifier connectivitycontextIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(ConnectivityContext.class) .build(); ConnectivityContext connContext = null; @@ -1540,7 +1741,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private void updateConnection(Connection updConn) { // TODO: check if this IID is correct InstanceIdentifier connectionIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(ConnectivityContext.class).child(Connection.class, new ConnectionKey(updConn.getUuid())).build(); this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectionIID, updConn); @@ -1554,7 +1755,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private void updateConnectivityService(ConnectivityService updService) { // TODO: check if this IID is correct InstanceIdentifier connectivityserviceIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) .child(ConnectivityContext.class).child(ConnectivityService.class, new ConnectivityServiceKey(updService.getUuid())).build(); this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectivityserviceIID, updService); diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java index 5030768e2..5a16bab26 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java @@ -19,29 +19,26 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.TapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.TransportpceTapinetworkutilsService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.Rpc; @@ -146,8 +143,8 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService // TODO --> need to check if the link exists in the topology try { InstanceIdentifier linkIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class).child(Topology.class, - new TopologyKey(tapiTopoUuid)).child(Link.class, new LinkKey(input.getUuid())).build(); + .augmentation(Context1.class).child(TopologyContext.class).child(Topology.class, + new TopologyKey(tapiTopoUuid)).child(Link.class, new LinkKey(input.getUuid())).build(); this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, linkIID); this.networkTransactionService.commit().get(); LOG.info("TAPI link deleted successfully."); diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiOrLinkListener.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiOrLinkListener.java index 64876cb2a..8fad0dec5 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiOrLinkListener.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiOrLinkListener.java @@ -32,14 +32,14 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,7 +96,7 @@ public class TapiOrLinkListener implements DataTreeChangeListener { } private void putTapiLinkInTopology( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link tapiXpdrLink) { + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link tapiXpdrLink) { LOG.info("Creating tapi link in TAPI topology context"); InstanceIdentifier topoIID = InstanceIdentifier.builder(Context.class) .augmentation(Context1.class).child(TopologyContext.class) diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java index 087d5f404..8bba4dfc1 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java @@ -11,10 +11,10 @@ import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -49,72 +49,64 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointList; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TapiCommonService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.UpdateServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.UpdateServiceInterfacePointInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.UpdateServiceInterfacePointOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.Sip; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.SipBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.SipKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetails; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyList; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyListInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyListOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyListOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.TapiTopologyService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.link.details.output.LinkBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.node.edge.point.details.output.NodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.TopologyBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.TapiCommonService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.UpdateServiceInterfacePointInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.UpdateServiceInterfacePointOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.Sip; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.SipBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.SipKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyListInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyListOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyListOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TapiTopologyService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.link.details.output.LinkBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.node.edge.point.details.output.NodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.details.output.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.details.output.TopologyBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.opendaylight.yangtools.yang.binding.Rpc; @@ -158,10 +150,10 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService public ListenableFuture> getNodeDetails(GetNodeDetailsInput input) { // TODO Auto-generated method stub // TODO -> maybe we get errors when having CEPs? - Uuid topoUuid = getUuidFromIput(input.getTopologyIdOrName()); + Uuid topoUuid = input.getTopologyId(); // Node id: if roadm -> ROADM+PHOTONIC_MEDIA. if xpdr -> XPDR-XPDR+DSR/OTSi - Uuid nodeUuid = getUuidFromIput(input.getNodeIdOrName()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node = this.tapiContext + Uuid nodeUuid = input.getNodeId(); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node = this.tapiContext .getTapiNode(topoUuid, nodeUuid); if (node == null) { LOG.error("Invalid TAPI node name"); @@ -169,34 +161,39 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService .withError(ErrorType.RPC, "Invalid Tapi Node name") .buildFuture(); } - return RpcResultBuilder - .success(new GetNodeDetailsOutputBuilder() - .setNode(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210 - .get.node.details.output.NodeBuilder(node) - .build()) - .build()) - .buildFuture(); + return RpcResultBuilder.success(new GetNodeDetailsOutputBuilder() + .setNode(new org.opendaylight.yang.gen.v1.urn + .onf.otcc.yang.tapi.topology.rev221121.get.node.details.output.NodeBuilder(node).build()) + .build()).buildFuture(); } @Override public ListenableFuture> getTopologyDetails(GetTopologyDetailsInput input) { // TODO -> Add check for Full T0 Multilayer - if (!TapiStringConstants.T0_MULTILAYER.equals(input.getTopologyIdOrName()) - && !TapiStringConstants.TPDR_100G.equals(input.getTopologyIdOrName())) { - if (TapiStringConstants.T0_FULL_MULTILAYER.equals(input.getTopologyIdOrName())) { - Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(input.getTopologyIdOrName() - .getBytes(Charset.forName("UTF-8"))).toString()); + List topoNameList = null; + try { + topoNameList = topologyUtils.readTopologyName(input.getTopologyId()); + } catch (TapiTopologyException e) { + LOG.error("Topology {} not found in datastore", input.getTopologyId()); + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Invalid Topology name") + .buildFuture(); + } + if (!topoNameList.contains(TapiStringConstants.T0_MULTILAYER) + && !topoNameList.contains(TapiStringConstants.TPDR_100G)) { + if (topoNameList.contains(TapiStringConstants.T0_FULL_MULTILAYER)) { + Uuid topoUuid = input.getTopologyId(); Context context = this.tapiContext.getTapiContext(); Map + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology> topologyMap = context.augmentation(Context1.class).getTopologyContext().getTopology(); if (!(topologyMap != null && topologyMap.containsKey(new TopologyKey(topoUuid)))) { - LOG.error("Topology {} not found in datastore", input.getTopologyIdOrName()); + LOG.error("Topology {} not found in datastore", input.getTopologyId()); return RpcResultBuilder.failed() .withError(ErrorType.RPC, "Invalid Topology name") .buildFuture(); } - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology topology = topologyMap.get(new TopologyKey(topoUuid)); return RpcResultBuilder .success(new GetTopologyDetailsOutputBuilder() @@ -209,10 +206,12 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService .withError(ErrorType.RPC, "Invalid Topology name") .buildFuture(); } + Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes( + Charset.forName("UTF-8"))).toString()); try { - LOG.info("Building TAPI Topology abstraction for {}", input.getTopologyIdOrName()); + LOG.info("Building TAPI Topology abstraction for {}", input.getTopologyId()); Topology topology = createAbstractedOtnTopology(); - if (TapiStringConstants.TPDR_100G.equals(input.getTopologyIdOrName())) { + if (topologyUuid.equals(input.getTopologyId())) { topology = createAbstracted100GTpdrTopology(topology); } return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().setTopology(topology).build()) @@ -350,12 +349,12 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService } private Topology createAbstracted100GTpdrTopology(Topology topology) { - List dsrNodes = + List dsrNodes = topology.nonnullNode().values().stream() .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR)) .collect(Collectors.toList()); List nep100GTpdrList = new ArrayList<>(); - for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node2: dsrNodes) { + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node2: dsrNodes) { List nepList = node2.getOwnedNodeEdgePoint().values().stream() .filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))).collect(Collectors.toList()); nep100GTpdrList.addAll(nepList); @@ -364,7 +363,7 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService .setValueName("TAPI Topology Name").build(); Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes( TapiStringConstants.TPDR_100G.getBytes(Charset.forName("UTF-8"))).toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node = + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node = createTapiNode(nep100GTpdrList, topoUuid); return new TopologyBuilder() .setName(Map.of(topoName.key(), topoName)) @@ -428,9 +427,9 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService networkPortMap.put(entry.getKey().getValue(), networkPortList); } } - Map + Map tapiNodeList = new HashMap<>(); - Map + Map tapiLinkList = new HashMap<>(); Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER .getBytes(Charset.forName("UTF-8"))).toString()); @@ -472,7 +471,74 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService .setLink(tapiLinkList).build(); } - private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node + @Override + public ListenableFuture> getNodeEdgePointDetails( + GetNodeEdgePointDetailsInput input) { + // TODO Auto-generated method stub + // TODO -> maybe we get errors when having CEPs? + Uuid topoUuid = input.getTopologyId(); + // Node id: if roadm -> ROADMid+PHOTONIC_MEDIA. if xpdr -> XPDRid-XPDRnbr+DSR/OTSi + Uuid nodeUuid = input.getNodeId(); + // NEP id: if roadm -> ROADMid+PHOTONIC_MEDIA/MC/OTSiMC+TPid. + // if xpdr -> XPDRid-XPDRnbr+DSR/eODU/iODU/iOTSi/eOTSi/PHOTONIC_MEDIA+TPid + Uuid nepUuid = input.getNodeEdgePointId(); + OwnedNodeEdgePoint nep = this.tapiContext.getTapiNEP(topoUuid, nodeUuid, nepUuid); + if (nep == null) { + LOG.error("Invalid TAPI nep name"); + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Invalid NEP name") + .buildFuture(); + } + return RpcResultBuilder.success(new GetNodeEdgePointDetailsOutputBuilder() + .setNodeEdgePoint(new NodeEdgePointBuilder(nep).build()).build()).buildFuture(); + } + + @Override + public ListenableFuture> getLinkDetails(GetLinkDetailsInput input) { + // TODO Auto-generated method stub + Uuid topoUuid = input.getTopologyId(); + // Link id: same as OR link id + Uuid linkUuid = input.getLinkId(); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link link = this.tapiContext + .getTapiLink(topoUuid, linkUuid); + if (link == null) { + LOG.error("Invalid TAPI link name"); + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Invalid Link name") + .buildFuture(); + } + return RpcResultBuilder.success(new GetLinkDetailsOutputBuilder().setLink(new LinkBuilder(link).build()) + .build()).buildFuture(); + } + + @Override + public ListenableFuture> getTopologyList(GetTopologyListInput input) { + // TODO Auto-generated method stub + // TODO -> maybe we get errors when having CEPs? + Map + topologyMap = this.tapiContext.getTopologyContext(); + if (topologyMap.isEmpty()) { + LOG.error("No topologies exist in tapi context"); + return RpcResultBuilder.failed() + .withError(ErrorType.APPLICATION, "No topologies exist in tapi context") + .buildFuture(); + } + Map + newTopoMap = new HashMap<>(); + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology + topo:topologyMap.values()) { + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.Topology + newTopo = new org.opendaylight.yang.gen.v1.urn + .onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.TopologyBuilder(topo).build(); + newTopoMap.put(newTopo.key(), newTopo); + } + return RpcResultBuilder.success(new GetTopologyListOutputBuilder().setTopology(newTopoMap).build()) + .buildFuture(); + } + + private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node createTapiNode(List nepList, Uuid topoUuid) { Name name = new NameBuilder().setValueName("Tpdr100g node name").setValue("Tpdr100g over WDM node").build(); Map onepMap = new HashMap<>(); @@ -557,26 +623,27 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService private Map createNodeRuleGroupFor100gTpdrNode(Uuid topoUuid, Uuid nodeUuid, Collection onepl) { - Map< - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey, - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint> nepMap - = new HashMap<>(); - for (OwnedNodeEdgePoint onep : onepl) { - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint nep = - new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointBuilder() - .setTopologyUuid(topoUuid) - .setNodeUuid(nodeUuid) - .setNodeEdgePointUuid(onep.key().getUuid()) - .build(); + Map + nepMap = new HashMap<>(); + for (OwnedNodeEdgePoint onep: onepl) { + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint nep = + new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group + .NodeEdgePointBuilder() + .setTopologyUuid(topoUuid) + .setNodeUuid(nodeUuid) + .setNodeEdgePointUuid(onep.key().getUuid()) + .build(); nepMap.put(nep.key(), nep); } Map nodeRuleGroupMap = new HashMap<>(); Map ruleList = new HashMap<>(); + Set ruleTypes = new HashSet<>(); + ruleTypes.add(RuleType.FORWARDING); Rule rule = new RuleBuilder() .setLocalId("forward") - .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP) - .setRuleType(RuleType.FORWARDING) + .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) + .setRuleType(ruleTypes) .build(); ruleList.put(rule.key(), rule); NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder() @@ -589,14 +656,56 @@ public class TapiTopologyImpl implements TapiTopologyService, TapiCommonService return nodeRuleGroupMap; } - private Uuid getUuidFromIput(String serviceIdOrName) { - try { - UUID.fromString(serviceIdOrName); - LOG.info("Given attribute {} is a UUID", serviceIdOrName); - return new Uuid(serviceIdOrName); - } catch (IllegalArgumentException e) { - LOG.info("Given attribute {} is not a UUID", serviceIdOrName); - return new Uuid(UUID.nameUUIDFromBytes(serviceIdOrName.getBytes(StandardCharsets.UTF_8)).toString()); + @Override + public ListenableFuture> + getServiceInterfacePointDetails(GetServiceInterfacePointDetailsInput input) { + Uuid sipUuid = input.getUuid(); + Map sips = + this.tapiContext.getTapiContext().getServiceInterfacePoint(); + if (sips == null || sips.isEmpty()) { + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "No sips in datastore") + .buildFuture(); + } + if (!sips.containsKey(new ServiceInterfacePointKey(sipUuid))) { + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Sip doesnt exist in datastore") + .buildFuture(); } + org.opendaylight.yang.gen.v1.urn + .onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.details.output.Sip outSip = + new org.opendaylight.yang.gen.v1.urn + .onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.details.output.SipBuilder( + sips.get(new ServiceInterfacePointKey(sipUuid))) + .build(); + return RpcResultBuilder.success(new GetServiceInterfacePointDetailsOutputBuilder().setSip(outSip).build()) + .buildFuture(); } + + @Override + public ListenableFuture> + getServiceInterfacePointList(GetServiceInterfacePointListInput input) { + Map sips = + this.tapiContext.getTapiContext().getServiceInterfacePoint(); + if (sips == null || sips.isEmpty()) { + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "No sips in datastore") + .buildFuture(); + } + Map outSipMap = new HashMap<>(); + for (ServiceInterfacePoint sip : sips.values()) { + Sip si = new SipBuilder(sip).build(); + outSipMap.put(si.key(), si); + } + return RpcResultBuilder.success(new GetServiceInterfacePointListOutputBuilder().setSip(outSipMap).build()) + .buildFuture(); + } + + @Override + public ListenableFuture> + updateServiceInterfacePoint(UpdateServiceInterfacePointInput input) { + // TODO --> not yet implemented + return null; + } + } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TopologyUtils.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TopologyUtils.java index 387ccfd27..b8745ebe7 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TopologyUtils.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TopologyUtils.java @@ -45,22 +45,26 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.slf4j.Logger; @@ -101,6 +105,34 @@ public final class TopologyUtils { return topology; } + public List readTopologyName(Uuid topoUuid) throws TapiTopologyException { + Topology topology = null; + InstanceIdentifier topoIID = InstanceIdentifier.builder( + Context.class).augmentation(org.opendaylight.yang.gen.v1.urn + .onf.otcc.yang.tapi.topology.rev221121.Context1.class).child(TopologyContext.class) + .child(Topology.class, new TopologyKey(topoUuid)).build(); + + ListenableFuture> topologyFuture = + this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, topoIID); + try { + topology = topologyFuture.get().orElseThrow(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TapiTopologyException("Unable to get from mdsal topology: " + topoIID + .firstKeyOf(Topology.class).getUuid().getValue(), e); + } catch (ExecutionException e) { + throw new TapiTopologyException("Unable to get from mdsal topology: " + topoIID + .firstKeyOf(Topology.class).getUuid().getValue(), e); + } catch (NoSuchElementException e) { + return null; + } + List nameList = new ArrayList<>(); + for (Map.Entry entry : topology.getName().entrySet()) { + nameList.add(entry.getValue().getValueName()); + } + return nameList; + } + public Topology createFullOtnTopology() throws TapiTopologyException { // read openroadm-topology Network openroadmTopo = readTopology(InstanceIdentifiers.OVERLAY_NETWORK_II); @@ -152,9 +184,9 @@ public final class TopologyUtils { networkPortMap.put(entry.getKey().getValue(), networkPortList); } } - Map + Map tapiNodeList = new HashMap<>(); - Map + Map tapiLinkList = new HashMap<>(); ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topoUuid, this.tapiLink); Iterator>> it = networkPortMap.entrySet().iterator(); @@ -273,11 +305,11 @@ public final class TopologyUtils { } } - public org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology + public org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.details.output.Topology transformTopology(Topology topology) { - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210 + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121 .get.topology.details.output.TopologyBuilder topologyBuilder = - new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210 + new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121 .get.topology.details.output.TopologyBuilder() .setUuid(topology.getUuid()) .setName(topology.getName()) @@ -302,13 +334,14 @@ public final class TopologyUtils { .setUuid(onep.getUuid()) .setLayerProtocolName(onep.getLayerProtocolName()) .setName(onep.getName()) - .setSupportedCepLayerProtocolQualifier(onep.getSupportedCepLayerProtocolQualifier()) + .setSupportedCepLayerProtocolQualifierInstances(onep + .getSupportedCepLayerProtocolQualifierInstances()) .setAdministrativeState(onep.getAdministrativeState()) .setOperationalState(onep.getOperationalState()) .setLifecycleState(onep.getLifecycleState()) - .setTerminationDirection(onep.getTerminationDirection()) - .setTerminationState(onep.getTerminationState()) - .setLinkPortDirection(onep.getLinkPortDirection()) +// .setTerminationDirection(onep.getTerminationDirection()) +// .setTerminationState(onep.getTerminationState()) + .setDirection(onep.getDirection()) .setLinkPortRole(onep.getLinkPortRole()); if (onep.getMappedServiceInterfacePoint() != null) { newOnepBuilder.setMappedServiceInterfacePoint(onep.getMappedServiceInterfacePoint()); diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/MappingUtils.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/MappingUtils.java index 2964c2a6e..59be16ab5 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/MappingUtils.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/MappingUtils.java @@ -14,9 +14,9 @@ import java.util.Set; import org.opendaylight.transportpce.tapi.connectivity.ConnectivityUtils; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceAEnd; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceZEnd; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.EndPointType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.service._interface.points.ServiceEndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.EndPointType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.service._interface.points.ServiceEndPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiContext.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiContext.java index 12ee2b61c..366050fa8 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiContext.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiContext.java @@ -15,43 +15,43 @@ import java.util.UUID; import java.util.concurrent.ExecutionException; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.network.NetworkTransactionService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ContextBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.Context1Builder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.OwnedNodeEdgePoint1Builder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connection.LowerConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContextBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepList; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.context.NotificationContextBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContextBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.NwTopologyServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1Builder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1Builder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepList; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.topology.context.topology.node.owned.node.edge.point.CepListBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.context.NotificationContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContextBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.NwTopologyServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -88,8 +88,8 @@ public class TapiContext { .setValueName("Network Topo Service Name") .build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1 topologyContext - = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1Builder() + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1 topologyContext + = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1Builder() .setTopologyContext(new TopologyContextBuilder() .setNwTopologyService(new NwTopologyServiceBuilder() .setTopology(new HashMap<>()) @@ -103,8 +103,8 @@ public class TapiContext { .build()) .build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1 notificationContext - = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.Context1Builder() + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1 notificationContext + = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1Builder() .setNotificationContext(new NotificationContextBuilder() .setNotification(new HashMap<>()) .setNotifSubscription(new HashMap<>()) @@ -163,7 +163,7 @@ public class TapiContext { .build(); InstanceIdentifier topologycontextIID = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.topology.rev181210.Context1.class) + .onf.otcc.yang.tapi.topology.rev221121.Context1.class) .child(TopologyContext.class) .build(); // merge in datastore @@ -195,16 +195,16 @@ public class TapiContext { Map connectionFullMap) { // TODO: verify this is correct. Should we identify the context IID with the context UUID?? try { - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext connectivityContext = new ConnectivityContextBuilder() .setConnectivityService(connServMap) .setConnection(connectionFullMap) .build(); InstanceIdentifier connectivitycontextIID = + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivitycontextIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .build(); // merge in datastore this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectivitycontextIID, @@ -219,10 +219,10 @@ public class TapiContext { public void updateTopologyWithCep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, ConnectionEndPoint cep) { // TODO: verify this is correct. Should we identify the context IID with the context UUID?? InstanceIdentifier onepIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class) + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class) .child(Topology.class, new TopologyKey(topoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)) .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)) .build(); @@ -261,10 +261,10 @@ public class TapiContext { public Node getTapiNode(Uuid topoUuid, Uuid nodeUuid) { InstanceIdentifier nodeIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class) + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class) .child(Topology.class, new TopologyKey(topoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)).build(); try { Optional optNode = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID) @@ -287,13 +287,14 @@ public class TapiContext { .setUuid(onep.getUuid()) .setLayerProtocolName(onep.getLayerProtocolName()) .setName(onep.getName()) - .setSupportedCepLayerProtocolQualifier(onep.getSupportedCepLayerProtocolQualifier()) + .setSupportedCepLayerProtocolQualifierInstances( + onep.getSupportedCepLayerProtocolQualifierInstances()) .setAdministrativeState(onep.getAdministrativeState()) .setOperationalState(onep.getOperationalState()) .setLifecycleState(onep.getLifecycleState()) - .setTerminationDirection(onep.getTerminationDirection()) - .setTerminationState(onep.getTerminationState()) - .setLinkPortDirection(onep.getLinkPortDirection()) +// .setTerminationDirection(onep.getTerminationDirection()) +// .setTerminationState(onep.getTerminationState()) + .setDirection(onep.getDirection()) .setLinkPortRole(onep.getLinkPortRole()); if (onep.getMappedServiceInterfacePoint() != null) { newOnepBuilder.setMappedServiceInterfacePoint(onep.getMappedServiceInterfacePoint()); @@ -314,10 +315,10 @@ public class TapiContext { public OwnedNodeEdgePoint getTapiNEP(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid) { InstanceIdentifier nepIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class) + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class) .child(Topology.class, new TopologyKey(topoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)).child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)).build(); try { Optional optNode = this.networkTransactionService @@ -336,8 +337,8 @@ public class TapiContext { public Link getTapiLink(Uuid topoUuid, Uuid linkUuid) { InstanceIdentifier linkIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class) + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class) .child(Topology.class, new TopologyKey(topoUuid)) .child(Link.class, new LinkKey(linkUuid)).build(); try { @@ -357,7 +358,7 @@ public class TapiContext { public Map getTopologyContext() { InstanceIdentifier topologycontextIID = InstanceIdentifier.builder(Context.class).augmentation(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.topology.rev181210.Context1.class) + .onf.otcc.yang.tapi.topology.rev221121.Context1.class) .child(TopologyContext.class) .build(); try { @@ -380,7 +381,7 @@ public class TapiContext { InstanceIdentifier connectivityServIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(serviceUuid)) .build(); @@ -405,14 +406,14 @@ public class TapiContext { return; } for (org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection connection: + .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection connection: connectivityService.getConnection().values()) { - deleteConnection(connection.getConnectionUuid(), serviceUuid, connectivityService.getServiceLayer()); + deleteConnection(connection.getConnectionUuid(), serviceUuid, connectivityService.getLayerProtocolName()); } InstanceIdentifier connectivityServIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(ConnectivityService.class, new ConnectivityServiceKey(serviceUuid)) .build(); try { @@ -427,14 +428,14 @@ public class TapiContext { private void deleteConnection(Uuid connectionUuid, Uuid serviceUuid, LayerProtocolName serviceLayer) { // First read connectivity service with service uuid and update info InstanceIdentifier connectionIID = + .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection> connectionIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection.class, + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection.class, new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectionKey( + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey( connectionUuid)) .build(); Connection connection = getConnection(connectionUuid); @@ -500,7 +501,7 @@ public class TapiContext { } if (connService.getConnection().containsKey( new org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey( + .urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey( connection.getUuid()))) { LOG.info("isNotUsedByOtherService: Connection {} is in used by service {}. Cannot remove it from " + "context", connection.getUuid().getValue(), connService.getUuid().getValue()); @@ -508,7 +509,7 @@ public class TapiContext { } LOG.info("isNotUsedByOtherService: Going to check lower connections"); for (org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection conn:connService.getConnection().values()) { Connection connection1 = getConnection(conn.getConnectionUuid()); if (connection1 == null || connection1.getLowerConnection() == null) { @@ -532,7 +533,7 @@ public class TapiContext { InstanceIdentifier connIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .child(Connection.class, new ConnectionKey(connectionUuid)) .build(); @@ -553,14 +554,14 @@ public class TapiContext { try { // First read connectivity service with service uuid and update info InstanceIdentifier connectivityContextIID = + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> connectivityContextIID = InstanceIdentifier.builder(Context.class).augmentation(Context1.class) .child(org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.context.ConnectivityContext.class) + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext.class) .build(); Optional optConnContext = + .onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContext> optConnContext = this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectivityContextIID) .get(); if (!optConnContext.isPresent()) { @@ -576,10 +577,10 @@ public class TapiContext { public ConnectionEndPoint getTapiCEP(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, Uuid cepUuid) { InstanceIdentifier nepIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1.class) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class) + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class) .child(Topology.class, new TopologyKey(topoUuid)) - .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node.class, + .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class, new NodeKey(nodeUuid)).child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid)).build(); try { Optional optNode = this.networkTransactionService diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiInitialORMapping.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiInitialORMapping.java index 0cbce40cc..ab23e7c4e 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiInitialORMapping.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiInitialORMapping.java @@ -20,12 +20,12 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev2 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceList; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java index 4fbacab62..150af47bd 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java @@ -10,11 +10,11 @@ package org.opendaylight.transportpce.tapi.utils; import java.util.Set; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; public interface TapiLink { diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLinkImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLinkImpl.java index 01ac66414..617fd62ce 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLinkImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLinkImpl.java @@ -19,44 +19,44 @@ 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.http.org.openroadm.equipment.states.types.rev191129.AdminStates; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.AvailableCapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.TotalPotentialCapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.ProtectionType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RestorationPolicy; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.NodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.link.ResilienceTypeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.validation.pac.ValidationMechanism; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.validation.pac.ValidationMechanismBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.Uint64; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -141,7 +141,7 @@ public class TapiLinkImpl implements TapiLink { .build(); LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) .setTrafficPropertyName("FIXED_LATENCY") @@ -164,16 +164,16 @@ public class TapiLinkImpl implements TapiLink { .setNodeEdgePoint(nepList) .setDirection(ForwardingDirection.BIDIRECTIONAL) .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize( - new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build()) + new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE).setValue(Decimal64.valueOf("100")).build()) .build()) - .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON) + .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTION) .setRestorationPolicy(RestorationPolicy.NA) .build()) .setAdministrativeState(setTapiAdminState(adminState)) .setOperationalState(setTapiOperationalState(operState)) .setLifecycleState(LifecycleState.INSTALLED) .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize( - new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build()) + new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE).setValue(Decimal64.valueOf("100")).build()) .build()) .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic)) .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic)) diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiListener.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiListener.java index eee640f42..8276f8f3f 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiListener.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiListener.java @@ -15,9 +15,9 @@ import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.api.DataObjectModification; import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; import org.opendaylight.mdsal.binding.api.DataTreeModification; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.ServiceInterfacePoints; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.service._interface.points.ServiceEndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.ServiceInterfacePoints; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.service._interface.points.ServiceEndPoint; import org.opendaylight.yangtools.yang.binding.DataObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/CreateConnectivityServiceValidation.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/CreateConnectivityServiceValidation.java index c25c8a104..bbe70fe47 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/CreateConnectivityServiceValidation.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/CreateConnectivityServiceValidation.java @@ -9,17 +9,19 @@ package org.opendaylight.transportpce.tapi.validation; import java.util.ArrayList; import java.util.List; +import java.util.Map; import org.opendaylight.transportpce.common.OperationResult; import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult; import org.opendaylight.transportpce.tapi.validation.checks.ConnConstraintCheck; import org.opendaylight.transportpce.tapi.validation.checks.EndPointCheck; import org.opendaylight.transportpce.tapi.validation.checks.ResilienceConstraintCheck; import org.opendaylight.transportpce.tapi.validation.checks.TopoConstraintCheck; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ResilienceConstraint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.TopologyConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ConnectivityConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ResilienceConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,13 +67,14 @@ public final class CreateConnectivityServiceValidation { } LOG.info("checking TopoConstraint..."); - TopologyConstraint topoConstraint = input.getTopologyConstraint(); - ComplianceCheckResult topoConstraintCheckResult = TopoConstraintCheck.check(topoConstraint); - if (topoConstraintCheckResult.hasPassed()) { - LOG.info("create-connectivity-service topo constraints compliant !"); - } else { - return OperationResult.failed(topoConstraintCheckResult.getMessage()); + Map topoConstraintMap = input.getTopologyConstraint(); + for (Map.Entry topoConstraint: topoConstraintMap.entrySet()) { + ComplianceCheckResult topoConstraintCheckResult = TopoConstraintCheck.check(topoConstraint.getValue()); + if (!topoConstraintCheckResult.hasPassed()) { + return OperationResult.failed(topoConstraintCheckResult.getMessage()); + } } + LOG.info("create-connectivity-service topo constraints compliant !"); return OperationResult.ok("Validation successful."); } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ConnConstraintCheck.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ConnConstraintCheck.java index 490d27c10..247d1de88 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ConnConstraintCheck.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ConnConstraintCheck.java @@ -8,8 +8,8 @@ package org.opendaylight.transportpce.tapi.validation.checks; import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ConnectivityConstraint; public final class ConnConstraintCheck { diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/EndPointCheck.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/EndPointCheck.java index 105889d1b..6ea4ebc85 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/EndPointCheck.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/EndPointCheck.java @@ -9,7 +9,7 @@ package org.opendaylight.transportpce.tapi.validation.checks; import java.util.List; import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ResilienceConstraintCheck.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ResilienceConstraintCheck.java index 4f19d6c3c..3ca121493 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ResilienceConstraintCheck.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/ResilienceConstraintCheck.java @@ -8,7 +8,7 @@ package org.opendaylight.transportpce.tapi.validation.checks; import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ResilienceConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.ResilienceConstraint; public final class ResilienceConstraintCheck { diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/TopoConstraintCheck.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/TopoConstraintCheck.java index 8a0746970..7e94a5391 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/TopoConstraintCheck.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/validation/checks/TopoConstraintCheck.java @@ -8,7 +8,7 @@ package org.opendaylight.transportpce.tapi.validation.checks; import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.TopologyConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,14 +23,14 @@ public final class TopoConstraintCheck { return ((value != null) && (!value.isEmpty())); } - public static ComplianceCheckResult check(TopologyConstraint tc) { + public static ComplianceCheckResult check(TopologyConstraint topoConstraint) { boolean result = true; String message = ""; - LOG.info("tc = {}", tc); - if (checkNull(tc)) { + LOG.info("tc = {}", topoConstraint); + if (checkNull(topoConstraint)) { LOG.info("tc is null"); message = "Topology constraints are not managet yet"; - } else if (checkEmpty(tc)) { + } else if (checkEmpty(topoConstraint)) { result = false; message = "Topology constraints are not managet yet"; } @@ -42,7 +42,7 @@ public final class TopoConstraintCheck { if (tc == null) { return true; } - if (tc.getAvoidTopology() == null) { + if (tc.getExcludeTopology() == null) { return true; } if (tc.getExcludeLink() == null) { @@ -75,7 +75,7 @@ public final class TopoConstraintCheck { if (tc == null) { return true; } - if (tc.getAvoidTopology() != null && tc.getAvoidTopology().isEmpty()) { + if (tc.getExcludeTopology() != null && tc.getExcludeTopology().isEmpty()) { return true; } if (tc.getExcludeLink() != null && tc.getExcludeLink().isEmpty()) { @@ -99,7 +99,8 @@ public final class TopoConstraintCheck { if (tc.getIncludeTopology() != null && tc.getIncludeTopology().isEmpty()) { return true; } - return tc.getPreferredTransportLayer() != null && tc.getPreferredTransportLayer().isEmpty(); + //TODO: check this changes : do not understand the rational of this class + return tc.getPreferredTransportLayer() != null && tc.getPreferredTransportLayer() == null; } } diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java index 992514f99..e5c6aa68f 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java @@ -50,15 +50,14 @@ import org.opendaylight.transportpce.tapi.utils.TapiLink; import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; import org.opendaylight.transportpce.test.AbstractTest; -import org.opendaylight.transportpce.test.utils.TopologyDataUtils; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceOutput; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; @@ -137,7 +136,7 @@ public class TapiConnectivityImplTest extends AbstractTest { networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils, - tapipceNotificationHandler, tapirendererNotificationHandler); + tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService); ListenableFuture> result = tapiConnectivity.createConnectivityService(new CreateConnectivityServiceInputBuilder().build()); @@ -162,10 +161,11 @@ public class TapiConnectivityImplTest extends AbstractTest { networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); CreateConnectivityServiceInput input = TapiConnectivityDataUtils.buildConnServiceCreateInput(); + when(pathComputationService.pathComputationRequest(any())).thenReturn(Futures.immediateFuture(any())); TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils, - tapipceNotificationHandler, tapirendererNotificationHandler); + tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService); ListenableFuture> result = tapiConnectivity.createConnectivityService(input); result.addListener(new Runnable() { @@ -188,7 +188,7 @@ public class TapiConnectivityImplTest extends AbstractTest { networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils, - tapipceNotificationHandler, tapirendererNotificationHandler); + tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService); ListenableFuture> result = tapiConnectivity.deleteConnectivityService(new DeleteConnectivityServiceInputBuilder().build()); @@ -213,7 +213,7 @@ public class TapiConnectivityImplTest extends AbstractTest { networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils, - tapipceNotificationHandler, tapirendererNotificationHandler); + tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService); ListenableFuture> result = tapiConnectivity.deleteConnectivityService(input); result.addListener(new Runnable() { @@ -238,7 +238,7 @@ public class TapiConnectivityImplTest extends AbstractTest { networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils, - tapipceNotificationHandler, tapirendererNotificationHandler); + tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService); ServiceCreateInput createInput = TapiConnectivityDataUtils.buildServiceCreateInput(); serviceDataStoreOperations.createService(createInput); diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java index 8783c706f..5f62a406d 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java @@ -66,34 +66,34 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU0; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LAYERPROTOCOLQUALIFIER; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU0; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint64; @@ -215,9 +215,9 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid)); Uuid enetworkNepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -234,9 +234,9 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(otsiNodeUuid)); Uuid enepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -274,9 +274,9 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid)); Uuid enetworkNepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -295,9 +295,9 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(otsiNodeUuid)); Uuid enepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -338,9 +338,9 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid)); Uuid enetworkNepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eODU+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -359,9 +359,9 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(otsiNodeUuid)); Uuid enepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -397,7 +397,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { } } tapiFactory.convertNode(tpdr100G, networkPortList); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -412,7 +412,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { .toString()); checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "tpdr", "XPDR-A1-XPDR1"); - List tapiLinks + List tapiLinks = tapiFactory.getTapiLinks().values().stream() .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue())) .collect(Collectors.toList()); @@ -430,7 +430,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { } } tapiFactory.convertNode(otnMuxA, networkPortList); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -444,7 +444,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { .toString()); checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "mux", "SPDR-SA1-XPDR1"); - List tapiLinks + List tapiLinks = tapiFactory.getTapiLinks().values().stream() .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue())) .collect(Collectors.toList()); @@ -462,7 +462,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { } } tapiFactory.convertNode(otnSwitch, networkPortList); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -477,7 +477,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { .toString()); checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "switch", "SPDR-SA1-XPDR2"); - List tapiLinks + List tapiLinks = tapiFactory.getTapiLinks().values().stream() .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue())) .collect(Collectors.toList()); @@ -492,7 +492,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1"); assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be empty"); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList()); Uuid roadmNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA") .getBytes(Charset.forName("UTF-8"))).toString()); @@ -513,13 +513,13 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2"); assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1"); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList()); Uuid roadmaNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA") .getBytes(Charset.forName("UTF-8"))).toString()); checkOtsiNode(tapiNodes.get(1), roadmaNodeUuid, "roadm", "ROADM-A1"); - List links + List links = tapiFactory.getTapiLinks().values().stream() .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue())) .collect(Collectors.toList()); @@ -568,7 +568,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { tapiFactory.convertXpdrToRdmLinks(xponderInLinkList); assertEquals(3, tapiFactory.getTapiNodes().size(), "Node list size should be 3"); assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2"); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -576,7 +576,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { .getBytes(Charset.forName("UTF-8"))).toString()); checkOtsiNode(tapiNodes.get(1), roadmNodeUuid, "roadm", "ROADM-A1"); - List links + List links = tapiFactory.getTapiLinks().values().stream() .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue())) .collect(Collectors.toList()); @@ -596,7 +596,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { "ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1"); } - private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node, + private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node, Uuid nodeUuid, String dsrNodeType, String nodeId) { assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid"); assertEquals(nodeId + "+DSR", node.getName().get(new NameKey("dsr/odu node name")).getValue(), @@ -713,7 +713,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { } private void checkOtsiNode( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node, + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node, Uuid nodeUuid, String otsiNodeType, String nodeId) { assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid"); List nepsI = null; @@ -898,10 +898,18 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { assertEquals(portName, name.getValue(), "value of client nep should be '" + portName + "'"); assertEquals(nepName, name.getValueName(), "value-name of client nep for '" + portName + "' should be '" + nepName + "'"); - assertEquals(3, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 3 kind of cep"); + assertEquals(3, nep.getSupportedCepLayerProtocolQualifierInstances() + .size(), "Client nep should support 3 kind of cep"); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(3, lpql.size(), "Client nep should support 3 kind of cep"); assertThat("client nep should support 3 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItems(ODUTYPEODU2.VALUE, ODUTYPEODU2E.VALUE, DIGITALSIGNALTYPE10GigELAN.VALUE)); + lpql, hasItems(ODUTYPEODU2.VALUE, ODUTYPEODU2E.VALUE, DIGITALSIGNALTYPE10GigELAN.VALUE)); + assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR protocol type"); checkCommonPartOfNep(nep, false); } @@ -915,10 +923,16 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { assertEquals(nepName, name.getValueName(), "value-name of eODU nep for '" + portName + "' should be '" + nepName + "'"); // TODO: depending on the type of node there is one type or another + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } assertThat("eODU nep should support 1, 2 or 3 kind of cep, depending on client port", - nep.getSupportedCepLayerProtocolQualifier().size(), anyOf(is(1), is(2), is(3))); + lpql.size(), anyOf(is(1), is(2), is(3))); assertTrue( - nep.getSupportedCepLayerProtocolQualifier().stream().anyMatch(splc -> splc.equals(ODUTYPEODU0.VALUE) + lpql.stream().anyMatch(splc -> splc.equals(ODUTYPEODU0.VALUE) || splc.equals(ODUTYPEODU2.VALUE) || splc.equals(ODUTYPEODU2E.VALUE) || splc.equals(ODUTYPEODU4.VALUE)), "eODU nep should support 1 kind of cep"); @@ -934,10 +948,14 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { assertEquals(portName, name.getValue(), "value of network nep should be '" + portName + "'"); assertEquals(nepName, name.getValueName(), "value-name of network nep for '" + portName + "' should be '" + nepName + "'"); - assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), "Network nep should support 1 kind of cep"); - assertThat("network nep should support 1 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItem(ODUTYPEODU4.VALUE)); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(1, lpql.size(), "Network nep should support 1 kind of cep"); + assertThat("network nep should support 1 kind of cep", lpql, hasItem(ODUTYPEODU4.VALUE)); assertEquals(LayerProtocolName.ODU, nep.getLayerProtocolName(), "network nep should be of ODU protocol type"); checkCommonPartOfNep(nep, withSip); } @@ -963,7 +981,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List rule = new ArrayList<>(nrgList.get(1).nonnullRule().values()); assertEquals(1, rule.size(), "node-rule-group nb 1 should contain a single rule"); assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -986,7 +1004,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List rule = new ArrayList<>(nrgList.get(1).nonnullRule().values()); assertEquals(1, rule.size(), "node-rule-group nb 2 should contain a single rule"); assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1011,7 +1029,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1028,7 +1046,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1051,7 +1069,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1074,7 +1092,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1101,7 +1119,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List ruleList0 = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList0.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList0.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList0.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList0.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1113,9 +1131,14 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { "value of client nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of client nep for '" + portName + "' should be '" + nepName + "'"); - assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 2 kind of cep"); - assertThat("client nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(2, lpql.size(), "Client nep should support 2 kind of cep"); + assertThat("client nep should support 2 kind of cep", lpql, hasItems(ODUTYPEODU4.VALUE, DIGITALSIGNALTYPE100GigE.VALUE)); assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR protocol type"); checkCommonPartOfNep(nep, false); @@ -1127,10 +1150,14 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { assertEquals(portName, nameList.get(0).getValue(), "value of client nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of client nep for '" + portName + "' should be 100G-tpdr'"); - assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 1 kind of cep"); - assertThat("client nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItems(DIGITALSIGNALTYPE100GigE.VALUE)); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(1, lpql.size(), "Client nep should support 1 kind of cep"); + assertThat("client nep should support 2 kind of cep", lpql, hasItems(DIGITALSIGNALTYPE100GigE.VALUE)); assertEquals(LayerProtocolName.DSR, nep.getLayerProtocolName(), "client nep should be of DSR protocol type"); checkCommonPartOfNep(nep, false); } @@ -1141,11 +1168,15 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { List nameList = new ArrayList<>(nep.nonnullName().values()); assertEquals(portName, nameList.get(0).getValue(), "value of OTSi nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of OTSi nep should be '" + nepName + "'"); - assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(), - "OTSi nep should support 2 kind of cep"); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(2, lpql.size(), "OTSi nep should support 2 kind of cep"); assertThat("OTSi nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE, PHOTONICLAYERQUALIFIEROTSi.VALUE)); + lpql, hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE, PHOTONICLAYERQUALIFIEROTSi.VALUE)); assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(), "OTSi nep should be of PHOTONIC_MEDIA protocol type"); checkCommonPartOfNep(nep, withSip); @@ -1159,29 +1190,33 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { "value of OTSi nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of OTSi nep should be '" + nepName + "'"); - assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), - "OTSi nep of RDM infra node should support only 1 kind of cep"); - assertThat("OTSi nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE)); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(1, lpql.size(), "OTSi nep of RDM infra node should support only 1 kind of cep"); + assertThat("OTSi nep should support 2 kind of cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE)); assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(), "OTSi nep should be of PHOTONIC_MEDIA protocol type"); checkCommonPartOfNep(nep, withSip); } private void checkCommonPartOfNep(OwnedNodeEdgePoint nep, boolean withSip) { - assertEquals(PortDirection.BIDIRECTIONAL, nep.getLinkPortDirection(), - "link port direction should be DIRECTIONAL"); + assertEquals(Direction.BIDIRECTIONAL, nep.getDirection(), "link port direction should be DIRECTIONAL"); assertEquals(AdministrativeState.UNLOCKED, nep.getAdministrativeState(), "administrative state should be UNLOCKED"); - assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(), - "termination state should be TERMINATED BIDIRECTIONAL"); +// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4 +// assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(), +// "termination state should be TERMINATED BIDIRECTIONAL"); assertEquals(LifecycleState.INSTALLED, nep.getLifecycleState(), "life-cycle state should be INSTALLED"); if (withSip) { assertEquals(1, nep.getMappedServiceInterfacePoint().size(), "Given nep should support 1 SIP"); } - assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(), - "termination direction should be BIDIRECTIONAL"); +// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4 +// assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(), +// "termination direction should be BIDIRECTIONAL"); assertEquals(OperationalState.ENABLED, nep.getOperationalState(), "operational state of client nep should be ENABLED"); assertEquals(PortRole.SYMMETRIC, nep.getLinkPortRole(), @@ -1189,12 +1224,12 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { } private void checkTransitionalLink( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link, Uuid node1Uuid, + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link link, Uuid node1Uuid, Uuid node2Uuid, String tp1, String tp2, String ietfNodeId) { Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((tp1 + "to" + tp2).getBytes(Charset.forName("UTF-8"))) .toString()); assertEquals(linkUuid, link.getUuid(), "bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2); - assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(), + assertEquals(CAPACITYUNITGBPS.VALUE, link.getAvailableCapacity().getTotalSize().getUnit(), "Available capacity unit should be GBPS"); assertEquals(Uint64.valueOf(100), link.getAvailableCapacity().getTotalSize().getValue(), "Available capacity -total size value should be 100"); @@ -1205,7 +1240,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName())); assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "transitional link should be BIDIRECTIONAL"); - List nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values()); assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(), "topology uuid should be the same for the two termination point of the link"); @@ -1227,7 +1262,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue()))); } - private void checkOmsLink(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link, + private void checkOmsLink(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid, String linkName) { assertEquals(linkName, link.getName().get(new NameKey("OMS link name")).getValue(), "bad name for the link"); assertEquals(linkUuid, link.getUuid(), "bad uuid for link"); @@ -1236,7 +1271,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { link.getLayerProtocolName().stream().findFirst().orElseThrow().getName(), "oms link should be between 2 nodes of protocol layers PHOTONIC_MEDIA"); assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),"otn tapi link should be BIDIRECTIONAL"); - List nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values()); assertEquals(2 , nodeEdgePointList.size(), "oms link should be between 2 neps"); assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(), @@ -1258,7 +1293,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { } private void checkXpdrRdmLink( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link link, Uuid node1Uuid, + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid, String linkName) { assertEquals(linkName, link.getName().get(new NameKey("XPDR-RDM link name")).getValue(), "bad name for the link"); @@ -1269,7 +1304,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { "oms link should be between 2 nodes of protocol layers PHOTONIC_MEDIA"); assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "otn tapi link should be BIDIRECTIONAL"); - List nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values()); assertEquals(2 , nodeEdgePointList.size(), "oms link should be between 2 neps"); assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(), diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java index 733e74c84..0794d50a8 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java @@ -63,41 +63,42 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LAYERPROTOCOLQUALIFIER; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + public class ConvertORTopoToTapiTopoTest extends AbstractTest { private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiTopoTest.class); @@ -181,9 +182,9 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid)); Uuid networkNepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -193,9 +194,9 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(otsiNodeUuid)); Uuid enepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -226,9 +227,9 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid)); Uuid networkNepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -239,9 +240,9 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(otsiNodeUuid)); Uuid enepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -274,9 +275,9 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node dsrNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(dsrNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(dsrNodeUuid)); Uuid networkNepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -287,9 +288,9 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8"))) .toString()); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node otsiNode = tapiFactory + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory .getTapiNodes().get(new - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey(otsiNodeUuid)); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey(otsiNodeUuid)); Uuid enepUuid = new Uuid( UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8"))) .toString()); @@ -511,7 +512,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { } } tapiFactory.convertNode(tpdr100G, networkPortList); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -543,7 +544,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { } } tapiFactory.convertNode(otnMuxA, networkPortList); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -574,7 +575,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { } } tapiFactory.convertNode(otnSwitch, networkPortList); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -655,7 +656,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1"); assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be empty"); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList()); Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8"))) .toString()); @@ -676,7 +677,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { assertEquals(3, tapiFactory.getTapiNodes().size(), "Node list size should be 3"); assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2"); - List tapiNodes + List tapiNodes = tapiFactory.getTapiNodes().values().stream() .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue())) .collect(Collectors.toList()); @@ -703,7 +704,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { "SPDR-SA1-XPDR1+OTSi--SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1"); } - private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node, + private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node, Uuid nodeUuid, String dsrNodeType, String nodeId) { assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid"); assertEquals(nodeId, node.getName().get(new NameKey("dsr/odu node name")).getValue(), "incorrect node name"); @@ -804,7 +805,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { } private void checkOtsiNode( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node, + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node, Uuid nodeUuid, String otsiNodeType, String nodeId) { assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid"); assertEquals(nodeId, node.getName().get(new NameKey("otsi node name")).getValue(), "incorrect node name"); @@ -916,10 +917,14 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { "value of client nep should be '" + portName + "'"); assertEquals(nepName, name.getValueName(), "value-name of client nep for '" + portName + "' should be '" + nepName + "'"); - assertEquals(3, nep.getSupportedCepLayerProtocolQualifier().size(), - "Client nep should support 3 kind of cep"); - assertThat("client nep should support 3 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(3, lpql.size(), "Client nep should support 3 kind of cep"); + assertThat("client nep should support 3 kind of cep", lpql, hasItems(ODUTYPEODU2.VALUE, ODUTYPEODU2E.VALUE, DIGITALSIGNALTYPE10GigELAN.VALUE)); assertEquals(LayerProtocolName.ETH, nep.getLayerProtocolName(), "client nep should be of ETH protocol type"); checkCommonPartOfNep(nep, false); @@ -935,11 +940,14 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { "value of network nep should be '" + portName + "'"); assertEquals(nepName, name.getValueName(), "value-name of network nep for '" + portName + "' should be '" + nepName + "'"); - assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), - "Network nep should support 1 kind of cep"); - assertThat("network nep should support 1 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItem(ODUTYPEODU4.VALUE)); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(1, lpql.size(), "Network nep should support 1 kind of cep"); + assertThat("network nep should support 1 kind of cep", lpql, hasItem(ODUTYPEODU4.VALUE)); assertEquals(LayerProtocolName.ODU, nep.getLayerProtocolName(), "network nep should be of ODU protocol type"); checkCommonPartOfNep(nep, false); checkSIP(nep, portName, nodeId, extension); @@ -966,7 +974,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List rule = new ArrayList<>(nrgList.get(1).nonnullRule().values()); assertEquals(1, rule.size(), "node-rule-group nb 1 should contain a single rule"); assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -992,7 +1000,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List rule = new ArrayList<>(nrgList.get(1).nonnullRule().values()); assertEquals(1, rule.size(), "node-rule-group nb 2 should contain a single rule"); assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1017,7 +1025,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1034,7 +1042,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1057,7 +1065,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1080,7 +1088,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1107,7 +1115,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List ruleList0 = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList0.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList0.get(0).getLocalId(),"local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList0.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList0.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -1120,9 +1128,14 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { "value of client nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of client nep for '" + portName + "' should be '" + nepName + "'"); - assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 2 kind of cep"); - assertThat("client nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(2, lpql.size(), "Client nep should support 2 kind of cep"); + assertThat("client nep should support 2 kind of cep", lpql, hasItems(ODUTYPEODU4.VALUE, DIGITALSIGNALTYPE100GigE.VALUE)); assertEquals(LayerProtocolName.ETH, nep.getLayerProtocolName(), "client nep should be of ETH protocol type"); checkCommonPartOfNep(nep, false); @@ -1137,10 +1150,14 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { "value of client nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of client nep for '" + portName + "' should be 100G-tpdr'"); - assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), "Client nep should support 1 kind of cep"); - assertThat("client nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItems(DIGITALSIGNALTYPE100GigE.VALUE)); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(1, lpql.size(), "Client nep should support 1 kind of cep"); + assertThat("client nep should support 2 kind of cep", lpql, hasItems(DIGITALSIGNALTYPE100GigE.VALUE)); assertEquals(LayerProtocolName.ETH, nep.getLayerProtocolName(), "client nep should be of ETH protocol type"); checkCommonPartOfNep(nep, false); checkSIP(nep, portName, nodeId, extension); @@ -1153,9 +1170,14 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { assertEquals(String.join("+", nodeId, extension, portName), nameList.get(0).getValue(), "value of OTSi nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of OTSi nep should be '" + nepName + "'"); - assertEquals(2, nep.getSupportedCepLayerProtocolQualifier().size(), "OTSi nep should support 2 kind of cep"); - assertThat("OTSi nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(2, lpql.size(), "OTSi nep should support 2 kind of cep"); + assertThat("OTSi nep should support 2 kind of cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE, PHOTONICLAYERQUALIFIEROTSi.VALUE)); assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(), "OTSi nep should be of PHOTONIC_MEDIA protocol type"); @@ -1180,11 +1202,14 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { List nameList = new ArrayList<>(nep.nonnullName().values()); assertEquals(portName, nameList.get(0).getValue(), "value of OTSi nep should be '" + portName + "'"); assertEquals(nepName, nameList.get(0).getValueName(), "value-name of OTSi nep should be '" + nepName + "'"); - assertEquals(1, nep.getSupportedCepLayerProtocolQualifier().size(), - "OTSi nep of RDM infra node should support only 1 kind of cep"); - assertThat("OTSi nep should support 2 kind of cep", - nep.getSupportedCepLayerProtocolQualifier(), - hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE)); + List lpql = new ArrayList<>(); + List lsclpqi = nep + .getSupportedCepLayerProtocolQualifierInstances(); + for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) { + lpql.add(entry.getLayerProtocolQualifier()); + } + assertEquals(1, lpql.size(), "OTSi nep of RDM infra node should support only 1 kind of cep"); + assertThat("OTSi nep should support 2 kind of cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE)); assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(), "OTSi nep should be of PHOTONIC_MEDIA protocol type"); assertEquals(0, nep.nonnullMappedServiceInterfacePoint().size(), "OTSi nep of RDM infra should support no SIP"); @@ -1192,19 +1217,21 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { } private void checkCommonPartOfNep(OwnedNodeEdgePoint nep, boolean isRdm) { - assertEquals(PortDirection.BIDIRECTIONAL, nep.getLinkPortDirection(), + assertEquals(Direction.BIDIRECTIONAL, nep.getDirection(), "link port direction should be DIRECTIONAL"); assertEquals(AdministrativeState.UNLOCKED, nep.getAdministrativeState(), "administrative state should be UNLOCKED"); - assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(), - "termination state should be TERMINATED BIDIRECTIONAL"); +// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4 +// assertEquals(TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState(), +// "termination state should be TERMINATED BIDIRECTIONAL"); assertEquals(LifecycleState.INSTALLED, nep.getLifecycleState(), "life-cycle state should be INSTALLED"); if (!isRdm) { assertEquals(1, nep.getMappedServiceInterfacePoint().size(), "client nep should support 1 SIP"); } - assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(), - "termination direction should be BIDIRECTIONAL"); +// TODO: convert this test since terminationState is migrated to CEP attribute in TAPI 2.4 +// assertEquals(TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection(), +// "termination direction should be BIDIRECTIONAL"); assertEquals(OperationalState.ENABLED, nep.getOperationalState(), "operational state of client nep should be ENABLED"); assertEquals(PortRole.SYMMETRIC, nep.getLinkPortRole(), "link-port-role of client nep should be SYMMETRIC"); @@ -1215,7 +1242,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((tp1 + "to" + tp2) .getBytes(Charset.forName("UTF-8"))).toString()); assertEquals(linkUuid, link.getUuid(), "bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2); - assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(), + assertEquals(CAPACITYUNITGBPS.VALUE, link.getAvailableCapacity().getTotalSize().getUnit(), "Available capacity unit should be GBPS"); assertEquals(Uint64.valueOf(100), link.getAvailableCapacity().getTotalSize().getValue(), "Available capacity -total size value should be 100"); @@ -1226,7 +1253,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName())); assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "transitional link should be BIDIRECTIONAL"); - List nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values()); assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(), "topology uuid should be the same for the two termination point of the link"); @@ -1252,7 +1279,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { String linkName) { assertEquals(linkName, link.getName().get(new NameKey("otn link name")).getValue(), "bad name for the link"); assertEquals(linkUuid, link.getUuid(), "bad uuid for link"); - assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(), + assertEquals(CAPACITYUNITGBPS.VALUE, link.getAvailableCapacity().getTotalSize().getUnit(), "Available capacity unit should be MBPS"); String prefix = linkName.split("-")[0]; if ("OTU4".equals(prefix)) { @@ -1262,7 +1289,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { assertEquals(Uint64.valueOf(100000), link.getAvailableCapacity().getTotalSize().getValue(), "Available capacity -total size value should be 100 000"); } - assertEquals(CapacityUnit.GBPS, link.getTotalPotentialCapacity().getTotalSize().getUnit(), + assertEquals(CAPACITYUNITGBPS.VALUE, link.getTotalPotentialCapacity().getTotalSize().getUnit(), "Total capacity unit should be GBPS"); assertEquals(Uint64.valueOf(100), link.getTotalPotentialCapacity().getTotalSize().getValue(), "Total capacity -total size value should be 100"); @@ -1278,7 +1305,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { "otn link should be between 2 nodes of protocol layers ODU"); } assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "otn tapi link should be BIDIRECTIONAL"); - List nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values()); assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(), "topology uuid should be the same for the two termination point of the link"); @@ -1310,7 +1337,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { link.getLayerProtocolName().stream().findFirst().orElseThrow().getName(), "oms link should be between 2 nodes of protocol layers PHOTONIC_MEDIA"); assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "otn tapi link should be BIDIRECTIONAL"); - List nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values()); assertEquals(2, nodeEdgePointList.size(), "oms link should be between 2 neps"); assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(), diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java index 9e46f5395..b0ff26ba9 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java @@ -14,7 +14,9 @@ import static org.mockito.Mockito.when; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import java.nio.charset.Charset; import java.util.Optional; +import java.util.UUID; import java.util.concurrent.ExecutionException; import org.eclipse.jdt.annotation.NonNull; import org.junit.jupiter.api.Test; @@ -30,9 +32,10 @@ import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.TapiContext; import org.opendaylight.transportpce.tapi.utils.TapiLink; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.details.output.Topology; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -62,8 +65,9 @@ public class TapiTopologyImplExceptionTest { when(networkTransactionService.commit()).then(answer); tapiContext = new TapiContext(networkTransactionService); - GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput( - TapiStringConstants.T0_MULTILAYER); + Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes( + Charset.forName("UTF-8"))).toString()); + GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid); TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(dataBroker, tapiContext, topologyUtils, tapiLink); ListenableFuture> result = tapiTopoImpl.getTopologyDetails(input); RpcResult rpcResult = result.get(); diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java index 5898a6e15..e19f5d4ed 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java @@ -16,6 +16,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; @@ -43,37 +44,37 @@ import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; import org.opendaylight.transportpce.test.AbstractTest; import org.opendaylight.transportpce.test.utils.TopologyDataUtils; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.Sip; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.list.output.SipKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsOutput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Node; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.Sip; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.list.output.SipKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsOutput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Node; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.details.output.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; @@ -122,8 +123,9 @@ public class TapiTopologyImplTest extends AbstractTest { @Test void getTopologyDetailsForTransponder100GTopologyWhenSuccessful() throws ExecutionException, InterruptedException { - GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput( - TapiStringConstants.TPDR_100G); + Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes( + Charset.forName("UTF-8"))).toString()); + GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid); TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink); ListenableFuture> result = tapiTopoImpl.getTopologyDetails(input); result.addListener(new Runnable() { @@ -160,7 +162,7 @@ public class TapiTopologyImplTest extends AbstractTest { List ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values()); assertEquals(1, ruleList.size(), "node-rule-group should contain a single rule"); assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'"); - assertEquals(ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule(), + assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(), "the forwarding rule should be 'MAYFORWARDACROSSGROUP'"); assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'"); } @@ -168,8 +170,9 @@ public class TapiTopologyImplTest extends AbstractTest { @Test void getTopologyDetailsForOtnTopologyWithOtnLinksWhenSuccessful() throws ExecutionException, InterruptedException { - GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput( - TapiStringConstants.T0_MULTILAYER); + Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes( + Charset.forName("UTF-8"))).toString()); + GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid); TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink); ListenableFuture> result = tapiTopoImpl.getTopologyDetails(input); result.addListener(new Runnable() { @@ -284,8 +287,9 @@ public class TapiTopologyImplTest extends AbstractTest { @Test void getTopologyDetailsForFullTapiTopologyWithLinksWhenSuccessful() throws ExecutionException, InterruptedException { - GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput( - TapiStringConstants.T0_FULL_MULTILAYER); + Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes( + Charset.forName("UTF-8"))).toString()); + GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid); TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink); ListenableFuture> result = tapiTopoImpl.getTopologyDetails(input); result.addListener(new Runnable() { @@ -502,8 +506,9 @@ public class TapiTopologyImplTest extends AbstractTest { @Test void getNodeAndNepsDetailsWhenSuccessful() throws ExecutionException, InterruptedException { - GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput( - TapiStringConstants.T0_FULL_MULTILAYER); + Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes( + Charset.forName("UTF-8"))).toString()); + GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid); TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink); ListenableFuture> result = tapiTopoImpl.getTopologyDetails(input); result.addListener(new Runnable() { @@ -517,9 +522,9 @@ public class TapiTopologyImplTest extends AbstractTest { @Nullable Topology topology = rpcResult.getResult().getTopology(); for (Node node:topology.getNode().values()) { - String nodeName = node.getName().values().stream().findFirst().orElseThrow().getValue(); - GetNodeDetailsInput input1 = TapiTopologyDataUtils.buildGetNodeDetailsInput( - TapiStringConstants.T0_FULL_MULTILAYER, nodeName); + //String nodeName = node.getName().values().stream().findFirst().orElseThrow().getValue(); + Uuid nodeUuid = node.getUuid(); + GetNodeDetailsInput input1 = TapiTopologyDataUtils.buildGetNodeDetailsInput(topologyUuid, nodeUuid); ListenableFuture> result1 = tapiTopoImpl.getNodeDetails(input1); result.addListener(new Runnable() { @Override @@ -533,9 +538,10 @@ public class TapiTopologyImplTest extends AbstractTest { Node node1 = rpcResult1.getResult().getNode(); assertNotNull(node1, "Node should not be null"); for (OwnedNodeEdgePoint onep:node1.getOwnedNodeEdgePoint().values()) { - String onepName = onep.getName().values().stream().findFirst().orElseThrow().getValue(); + //String onepName = onep.getName().values().stream().findFirst().orElseThrow().getValue(); + Uuid onepUuid = onep.getUuid(); GetNodeEdgePointDetailsInput input2 = TapiTopologyDataUtils.buildGetNodeEdgePointDetailsInput( - TapiStringConstants.T0_FULL_MULTILAYER, nodeName, onepName); + topologyUuid, nodeUuid, onepUuid); ListenableFuture> result2 = tapiTopoImpl.getNodeEdgePointDetails(input2); result.addListener(new Runnable() { @@ -547,7 +553,7 @@ public class TapiTopologyImplTest extends AbstractTest { endSignal.await(); RpcResult rpcResult2 = result2.get(); org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.topology.rev181210.get.node.edge.point.details.output.NodeEdgePoint + .urn.onf.otcc.yang.tapi.topology.rev221121.get.node.edge.point.details.output.NodeEdgePoint onep1 = rpcResult2.getResult().getNodeEdgePoint(); assertNotNull(onep1, "Node Edge Point should not be null"); } @@ -557,8 +563,9 @@ public class TapiTopologyImplTest extends AbstractTest { @Test void getLinkDetailsWhenSuccessful() throws ExecutionException, InterruptedException { - GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput( - TapiStringConstants.T0_FULL_MULTILAYER); + Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes( + Charset.forName("UTF-8"))).toString()); + GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid); TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink); ListenableFuture> result = tapiTopoImpl.getTopologyDetails(input); result.addListener(new Runnable() { @@ -572,9 +579,10 @@ public class TapiTopologyImplTest extends AbstractTest { @Nullable Topology topology = rpcResult.getResult().getTopology(); for (Link link:topology.getLink().values()) { - String linkName = link.getName().values().stream().findFirst().orElseThrow().getValue(); + //String linkName = link.getName().values().stream().findFirst().orElseThrow().getValue(); + Uuid linkUuid = link.getUuid(); GetLinkDetailsInput input1 = TapiTopologyDataUtils.buildGetLinkDetailsInput( - TapiStringConstants.T0_FULL_MULTILAYER, linkName); + topologyUuid, linkUuid); ListenableFuture> result1 = tapiTopoImpl.getLinkDetails(input1); result.addListener(new Runnable() { @Override @@ -584,7 +592,7 @@ public class TapiTopologyImplTest extends AbstractTest { }, executorService); endSignal.await(); RpcResult rpcResult1 = result1.get(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.link.details.output.Link link1 + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.link.details.output.Link link1 = rpcResult1.getResult().getLink(); assertNotNull(link1, "Link should not be null"); } @@ -621,7 +629,7 @@ public class TapiTopologyImplTest extends AbstractTest { endSignal.await(); RpcResult rpcResult1 = result1.get(); org.opendaylight.yang.gen.v1 - .urn.onf.otcc.yang.tapi.common.rev181210.get.service._interface.point.details.output.Sip sip1 + .urn.onf.otcc.yang.tapi.common.rev221121.get.service._interface.point.details.output.Sip sip1 = rpcResult1.getResult().getSip(); assertNotNull(sip1, "Sip should not be null"); } @@ -631,7 +639,7 @@ public class TapiTopologyImplTest extends AbstractTest { Uuid linkUuid, String linkName) { assertEquals(linkName, link.getName().get(new NameKey("otn link name")).getValue(), "bad name for the link"); assertEquals(linkUuid, link.getUuid(), "bad uuid for link"); - assertEquals(CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit(), + assertEquals(CAPACITYUNITGBPS.VALUE, link.getAvailableCapacity().getTotalSize().getUnit(), "Available capacity unit should be MBPS"); String prefix = linkName.split("-")[0]; if ("OTU4".equals(prefix)) { @@ -641,7 +649,7 @@ public class TapiTopologyImplTest extends AbstractTest { assertEquals(Uint64.valueOf(100000), link.getAvailableCapacity().getTotalSize().getValue(), "Available capacity -total size value should be 100 000"); } - assertEquals(CapacityUnit.GBPS, link.getTotalPotentialCapacity().getTotalSize().getUnit(), + assertEquals(CAPACITYUNITGBPS.VALUE, link.getTotalPotentialCapacity().getTotalSize().getUnit(), "Total capacity unit should be GBPS"); assertEquals(Uint64.valueOf(100), link.getTotalPotentialCapacity().getTotalSize().getValue(), "Total capacity -total size value should be 100"); @@ -656,7 +664,7 @@ public class TapiTopologyImplTest extends AbstractTest { } assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "transitional link should be BIDIRECTIONAL"); - List nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values()); assertEquals(topoUuid, nodeEdgePointList.get(0).getTopologyUuid(), "topology uuid should be the same for the two termination point of the link"); diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiConnectivityDataUtils.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiConnectivityDataUtils.java index e503c902b..aff6798ef 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiConnectivityDataUtils.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiConnectivityDataUtils.java @@ -28,38 +28,39 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.Service import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceAEndBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.create.input.ServiceZEndBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.Name; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.local._class.NameBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ProtectionRole; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.constraint.RequestedCapacityBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.ConnectivityConstraintBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPointBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ForwardingDirection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.TotalSizeBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.DeleteConnectivityServiceInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ProtectionRole; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.constraint.RequestedCapacityBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointKey; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.Uint32; -import org.opendaylight.yangtools.yang.common.Uint64; import org.opendaylight.yangtools.yang.common.Uint8; public final class TapiConnectivityDataUtils { @@ -73,18 +74,20 @@ public final class TapiConnectivityDataUtils { return new CreateConnectivityServiceInputBuilder() .setEndPoint(endPointMap) - .setConnectivityConstraint(new ConnectivityConstraintBuilder().setServiceLayer(LayerProtocolName.DSR) - .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).setServiceLevel("some service-level") - .setRequestedCapacity(new RequestedCapacityBuilder() - .setTotalSize(new TotalSizeBuilder().setUnit(CapacityUnit.GBPS) - .setValue(Uint64.valueOf(10)).build()).build()).build()) - .setState("some state") + .setLayerProtocolName(LayerProtocolName.DSR) + .setConnectivityConstraint(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121 + .create.connectivity.service.input.ConnectivityConstraintBuilder() + .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).setServiceLevel("some service-level") + .setRequestedCapacity(new RequestedCapacityBuilder() + .setTotalSize(new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE) + .setValue(Decimal64.valueOf("10")).build()).build()).build()) + .setState(AdministrativeState.UNLOCKED) .build(); } public static DeleteConnectivityServiceInput buildConnServiceDeleteInput() { return new DeleteConnectivityServiceInputBuilder() - .setServiceIdOrName(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString()) + .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())) .build(); } @@ -93,7 +96,7 @@ public final class TapiConnectivityDataUtils { return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR) .setAdministrativeState(AdministrativeState.UNLOCKED) .setOperationalState(OperationalState.ENABLED) - .setDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setRole(PortRole.SYMMETRIC) .setProtectionRole(ProtectionRole.NA) .setLocalId("SPDR-SC1-XPDR1") @@ -107,7 +110,7 @@ public final class TapiConnectivityDataUtils { return new EndPointBuilder().setLayerProtocolName(LayerProtocolName.DSR) .setAdministrativeState(AdministrativeState.UNLOCKED) .setOperationalState(OperationalState.ENABLED) - .setDirection(PortDirection.BIDIRECTIONAL) + .setDirection(Direction.BIDIRECTIONAL) .setRole(PortRole.SYMMETRIC) .setProtectionRole(ProtectionRole.NA) .setLocalId("SPDR-SA1-XPDR1") @@ -172,16 +175,16 @@ public final class TapiConnectivityDataUtils { EndPoint endPoint1 = getEndPoint1Builder().build(); EndPoint endPoint2 = getEndPoint2Builder().build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint endPoint11 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder(endPoint1).build(); + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint1).build(); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint endPoint12 = new org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder(endPoint2).build(); + .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder(endPoint2).build(); - Map + Map endPointMap = new HashMap<>(); endPointMap.put(endPoint11.key(), endPoint11); endPointMap.put(endPoint12.key(), endPoint12); @@ -191,18 +194,22 @@ public final class TapiConnectivityDataUtils { .build(); connectionMap.put(connection.key(), connection); - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name name = - new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder() + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name name = + new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder() .setValueName("Connectivity Service Name").setValue("service 1") .build(); + ConnectivityConstraint conCons = new ConnectivityConstraintBuilder() + .setServiceLevel(null) + .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) + .build(); ConnectivityService connServ = new ConnectivityServiceBuilder() .setAdministrativeState(AdministrativeState.LOCKED) .setOperationalState(OperationalState.DISABLED) .setLifecycleState(LifecycleState.PLANNED) .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())) - .setServiceLayer(LayerProtocolName.DSR) - .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) - .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL) + .setLayerProtocolName(LayerProtocolName.DSR) + .setConnectivityConstraint(conCons) + .setDirection(ForwardingDirection.BIDIRECTIONAL) .setName(Map.of(name.key(), name)) .setConnection(connectionMap) .setEndPoint(endPointMap) @@ -214,7 +221,8 @@ public final class TapiConnectivityDataUtils { public static DeleteConnectivityServiceInput buildConnServiceDeleteInput1() { return new DeleteConnectivityServiceInputBuilder() - .setServiceIdOrName("random-service").build(); + .setUuid(new Uuid(UUID.nameUUIDFromBytes("service 1".getBytes(StandardCharsets.UTF_8)).toString())) + .build(); } private TapiConnectivityDataUtils() { diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiTopologyDataUtils.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiTopologyDataUtils.java index 8b5b655a9..bfc61279f 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiTopologyDataUtils.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TapiTopologyDataUtils.java @@ -8,19 +8,19 @@ package org.opendaylight.transportpce.tapi.utils; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointDetailsInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.GetServiceInterfacePointListInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetLinkDetailsInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeDetailsInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetNodeEdgePointDetailsInputBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointDetailsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.GetServiceInterfacePointListInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetLinkDetailsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeDetailsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetNodeEdgePointDetailsInputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInput; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.GetTopologyDetailsInputBuilder; public final class TapiTopologyDataUtils { public static final String OPENROADM_TOPOLOGY_FILE = "src/test/resources/openroadm-topology.xml"; @@ -28,23 +28,23 @@ public final class TapiTopologyDataUtils { public static final String OTN_TOPOLOGY_FILE = "src/test/resources/otn-topology.xml"; public static final String PORTMAPPING_FILE = "src/test/resources/portmapping.xml"; - public static GetTopologyDetailsInput buildGetTopologyDetailsInput(String topoName) { + public static GetTopologyDetailsInput buildGetTopologyDetailsInput(Uuid topoId) { return new GetTopologyDetailsInputBuilder() - .setTopologyIdOrName(topoName) + .setTopologyId(topoId) .build(); } - public static GetNodeDetailsInput buildGetNodeDetailsInput(String topoName, String nodeName) { + public static GetNodeDetailsInput buildGetNodeDetailsInput(Uuid topoId, Uuid nodeId) { return new GetNodeDetailsInputBuilder() - .setTopologyIdOrName(topoName) - .setNodeIdOrName(nodeName) + .setTopologyId(topoId) + .setNodeId(nodeId) .build(); } - public static GetLinkDetailsInput buildGetLinkDetailsInput(String topoName, String linkName) { + public static GetLinkDetailsInput buildGetLinkDetailsInput(Uuid topoId, Uuid linkId) { return new GetLinkDetailsInputBuilder() - .setTopologyIdOrName(topoName) - .setLinkIdOrName(linkName) + .setTopologyId(topoId) + .setLinkId(linkId) .build(); } @@ -55,16 +55,16 @@ public final class TapiTopologyDataUtils { public static GetServiceInterfacePointDetailsInput buildGetServiceInterfacePointDetailsInput(Uuid sipUuid) { return new GetServiceInterfacePointDetailsInputBuilder() - .setSipIdOrName(sipUuid.getValue()) + .setUuid(sipUuid) .build(); } - public static GetNodeEdgePointDetailsInput buildGetNodeEdgePointDetailsInput(String topoName, String nodeName, - String onepName) { + public static GetNodeEdgePointDetailsInput buildGetNodeEdgePointDetailsInput(Uuid topoId, Uuid nodeId, + Uuid onepId) { return new GetNodeEdgePointDetailsInputBuilder() - .setTopologyIdOrName(topoName) - .setNodeIdOrName(nodeName) - .setEpIdOrName(onepName) + .setTopologyId(topoId) + .setNodeId(nodeId) + .setNodeEdgePointId(onepId) .build(); } -- 2.36.6