<dependencies>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>odl-tapi-2.1.1-models</artifactId>
+ <artifactId>odl-tapi-2.4.0-models</artifactId>
<classifier>features</classifier>
<type>xml</type>
</dependency>
org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev230526.$YangModuleInfoImpl.getInstance(),
// tapi models
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.oam.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.oam.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.path.computation.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.path.computation.rev221121.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.eth.rev181210.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.eth.rev221121.$YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.$YangModuleInfoImpl
.getInstance(),
// API models / opendaylight
.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.$YangModuleInfoImpl
.getInstance(),
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004
.$YangModuleInfoImpl.getInstance(),
.$YangModuleInfoImpl.getInstance(),
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206
.$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev180928.$YangModuleInfoImpl
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.tapi.rev230728.$YangModuleInfoImpl
.getInstance(),
org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.$YangModuleInfoImpl
.getInstance());
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPESERVICEINTERFACEPOINT;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OBJECTTYPETAPICONTEXT;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTION;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIONENDPOINT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionService;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceInput;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilter;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPEINTERRULEGROUP;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPELINK;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODEEDGEPOINT;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODERULEGROUP;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Rpc;
import org.opendaylight.yangtools.yang.common.ErrorTag;
objectTypeList.add(OBJECTTYPESERVICEINTERFACEPOINT.VALUE);
objectTypeList.add(OBJECTTYPETAPICONTEXT.VALUE);
objectTypeList.add(OBJECTTYPEPROFILE.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPENODE.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPELINK.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPENODERULEGROUP.VALUE);
+ objectTypeList.add(TOPOLOGYOBJECTTYPEINTERRULEGROUP.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPE.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPECONNECTIONENDPOINT.VALUE);
+ objectTypeList.add(CONNECTIVITYOBJECTTYPECONNECTION.VALUE);
// for (NotifSubscription notifSubscription:notificationContext.getNotifSubscription().values()) {
// if (notifSubscription.getSupportedNotificationTypes() != null) {
// notificationTypeList.addAll(notifSubscription.getSupportedNotificationTypes());
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceInputBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.CreateNotificationSubscriptionServiceOutput;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.GetNotificationListOutput;
import org.opendaylight.yangtools.yang.common.RpcResult;
public class NbiNotificationsImplTest extends AbstractTest {
= NotificationServiceDataUtils.buildNotificationSubscriptionServiceInputBuilder();
ListenableFuture<RpcResult<CreateNotificationSubscriptionServiceOutput>> result =
nbiNotificationsImpl.createNotificationSubscriptionService(builder.build());
- GetNotificationListInputBuilder builder1 = new GetNotificationListInputBuilder()
+ assertNull(nbiNotificationsImpl.getNotificationList(new GetNotificationListInputBuilder()
.setTimeRange(null)
- .setSubscriptionId(result.get().getResult().getSubscriptionService().getUuid());
- ListenableFuture<RpcResult<GetNotificationListOutput>> result1 =
- nbiNotificationsImpl.getNotificationList(builder1.build());
- assertNull(result1.get().getResult().getNotification(), "Should be null");
+ .setSubscriptionId(result.get().getResult().getSubscriptionService().getUuid())
+ .build())
+ .get().getResult().getNotification(), "Should be null");
}
}
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.ContextBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.DateAndTime;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.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.local._class.Name;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1Builder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.context.ConnectivityContextBuilder;
return new NotificationBuilder()
.setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE)
.setLayerProtocolName(LayerProtocolName.ETH)
- .setTargetObjectType(OBJECTTYPETAPICONTEXT.VALUE)
+ .setTargetObjectType(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)
.setEventTimeStamp(datetime)
.setUuid(new Uuid(UUID.randomUUID().toString()))
.setTargetObjectIdentifier(targetObjectId)
.setValueName("Subscription name")
.build();
SubscriptionFilter subscriptionFilter = new SubscriptionFilterBuilder()
- .setRequestedObjectTypes(new HashSet<>(List.of(OBJECTTYPETAPICONTEXT.VALUE)))
+ .setRequestedObjectTypes(new HashSet<>(List.of(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)))
.setRequestedNotificationTypes(new HashSet<>(List.of(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE,
NOTIFICATIONTYPEOBJECTCREATION.VALUE, NOTIFICATIONTYPEOBJECTDELETION.VALUE)))
.setRequestedLayerProtocols(new HashSet<>(List.of(LayerProtocolName.ETH)))
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1 topologyContext
= new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1Builder()
- .setTopologyContext(new TopologyContextBuilder()
- .setNwTopologyService(new NwTopologyServiceBuilder()
- .setTopology(new HashMap<>())
- .setUuid(
- new Uuid(
- UUID.nameUUIDFromBytes("Network Topo Service".getBytes(Charset.forName("UTF-8")))
- .toString()))
+ .setTopologyContext(new TopologyContextBuilder()
+ .setNwTopologyService(new NwTopologyServiceBuilder()
+ .setTopology(new HashMap<>())
+ .setUuid(
+ new Uuid(
+ UUID.nameUUIDFromBytes("Network Topo Service".getBytes(Charset.forName("UTF-8")))
+ .toString()))
.setName(Map.of(nwTopoServiceName.key(), nwTopoServiceName))
.build())
.setTopology(new HashMap<>())
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1 notificationContext
= new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.Context1Builder()
- .setNotificationContext(new NotificationContextBuilder()
- .setNotification(new HashMap<>())
- .setNotifSubscription(new HashMap<>())
- .build())
- .build();
+ .setNotificationContext(new NotificationContextBuilder()
+ .setNotification(new HashMap<>())
+ .setNotifSubscription(new HashMap<>())
+ .build())
+ .build();
ContextBuilder contextBuilder = new ContextBuilder()
.setName(Map.of(contextName.key(), contextName))
{
"nbi-notifications:notification-tapi-service": {
"layer-protocol-name": "ETH",
- "notification-type": "ATTRIBUTE_VALUE_CHANGE",
+ "notification-type": "tapi-notification:NOTIFICATION_TYPE_ATTRIBUTE_VALUE_CHANGE",
"changed-attributes": [
{
"value-name": "administrativeState",
}
],
"uuid": "6ae49721-7f96-4924-b23b-31e5bee4946b",
- "target-object-type": "CONNECTIVITY_SERVICE",
+ "target-object-type": "tapi-connectivity:CONNECTIVITY_OBJECT_TYPE_CONNECTIVITY_SERVICE",
"event-time-stamp": "2022-04-06T09:06:01+00:00",
"target-object-identifier": "76d8f07b-ead5-4132-8eb8-cf3fdef7e079"
}
{
"nbi-notifications:notification-tapi-service": {
"layer-protocol-name": "ETH",
- "notification-type": "ATTRIBUTE_VALUE_CHANGE",
+ "notification-type": "tapi-notification:NOTIFICATION_TYPE_ATTRIBUTE_VALUE_CHANGE",
"changed-attributes": [
{
"value-name": "administrativeState",
}
],
"uuid": "6ae49721-7f96-4924-b23b-31e5bee4946b",
- "target-object-type": "CONNECTIVITY_SERVICE",
+ "target-object-type": "tapi-connectivity:CONNECTIVITY_OBJECT_TYPE_CONNECTIVITY_SERVICE",
"event-time-stamp": "2022-04-06T09:06:01+00:00",
"target-object-identifier": "76d8f07b-ead5-4132-8eb8-cf3fdef7e079"
}
public final ListenableFuture<RpcResult<ServiceDeleteOutput>> serviceDelete(ServiceDeleteInput input) {
String serviceName = input.getServiceDeleteReqInfo().getServiceName();
LOG.info("RPC serviceDelete request received for {}", serviceName);
-
/*
* Upon receipt of service-deleteService RPC, service header and sdnc-request
* header compliance are verified.
input, ResponseCodes.FINAL_ACK_YES,
LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED);
}
-
//Check presence of service to be deleted
Optional<Services> serviceOpt = this.serviceDataStoreOperations.getService(serviceName);
Services service;
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutput output =
this.rendererServiceWrapper.performRenderer(
serviceDeleteInput, ServiceNotificationTypes.ServiceDeleteResult, service);
-
if (output == null) {
LOG.error(SERVICE_DELETE_MSG, LogMessages.RENDERER_DELETE_FAILED);
sendNbiNotification(new PublishNotificationProcessServiceBuilder()
+ "DestDegId: {}, DestTPId: {}", nodeId.getValue(), srcDegId, srcTpTx, destNodeId, destDegId, destTpRx);
Link omsLink = this.tapiLink.createTapiLink(nodeId.getValue(), srcTpTx, destNodeId.getValue(), destTpTx,
TapiStringConstants.OMS_RDM_RDM_LINK, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
this.tapiLink.getAdminState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
this.tapiLink.getOperState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
LOG.info("Tapi R2R Link OMS link created = {}", omsLink);
+ LOG.debug("inputAdminstate= {}, inputoperstate = {}",
+ this.tapiLink.getAdminState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
+ this.tapiLink.getOperState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx));
return omsLink;
}
public static final String RDM_INFRA = "ROADM-infra";
public static final String CLIENT = "-CLIENT";
public static final String NETWORK = "-NETWORK";
- public static final String XPDR = "-XPDR";
+ public static final String XPDR = "XPONDER";
+ public static final String XXPDR = "-XPDR";
public static final String TP = "TerminationPoint";
public static final String NODE = "Node";
public static final String LGX_PORT_NAME = "Some lgx-port-name";
package org.opendaylight.transportpce.tapi.connectivity;
import java.math.BigDecimal;
+import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnectionKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ParentNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ParentNodeEdgePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.Connection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.CapacityBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.end.point.ServiceInterfacePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIERMC;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
private final ServiceDataStoreOperations serviceDataStoreOperations;
private final TapiContext tapiContext;
private Map<ServiceInterfacePointKey, ServiceInterfacePoint> sipMap;
- private final Map<org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey,
+ private final Map<
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey,
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection>
connectionFullMap; // this variable is for complete connection objects
private final NetworkTransactionService networkTransactionService;
// Connection creation
Map<ConnectionKey, Connection> connMap =
createConnectionsFromService(serviceAEnd, serviceZEnd, pathDescription);
- ConnectivityConstraint conConstr = new ConnectivityConstraintBuilder()
- .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).build();
+ LOG.debug("connectionMap for service {} = {} ", name.toString(), connMap.toString());
+ ConnectivityConstraint conConstr =
+ new ConnectivityConstraintBuilder().setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).build();
// TODO: full connectivity service?? With constraints and the rest of fields...
return new ConnectivityServiceBuilder()
.setAdministrativeState(AdministrativeState.UNLOCKED)
private OpenroadmNodeType getOpenroadmType(String nodeName) {
LOG.info("Node name = {}", nodeName);
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",nodeName, TapiStringConstants.DSR))
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",nodeName, TapiStringConstants.XPDR))
.getBytes(StandardCharsets.UTF_8)).toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node tapiNode
= this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid);
}
if (openroadmNodeType.equals(OpenroadmNodeType.SWITCH)) {
// TODO: We create both ODU and DSR because there is no ODU service creation for the switch
- // - XC Connection OTSi betwwen iODU and eODU of xpdr
+ // - XC Connection OTSi between iODU and eODU of xpdr
// - Top connection in the ODU layer, between xpdr eODU ports (?)
connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNetworkTplist,
xpdrNodelist));
default:
LOG.error("Service type format not supported");
}
+ LOG.debug("CONNSERVERMAP = {}", connectionServMap.toString());
return connectionServMap;
}
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.XPDR,
LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, netCep1);
cepMapDsr.put(netCep1.key(), netCep1);
}
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
- LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
+ ConnectionEndPoint clientCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, LayerProtocolName.DSR);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.XPDR,
+ clientCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.DSR,
- netCep2);
+ ConnectionEndPoint clientCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
+ TapiStringConstants.XPDR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.XPDR,
+ clientCep2);
String spcXpdrNetwork = getAssociatedNetworkPort(spcXpdrClient, xpdrNetworkTplist);
ConnectionEndPoint netCep3 = getAssociatediODUCep(spcXpdrNetwork);
- cepMapDsr.put(netCep1.key(), netCep1);
- cepMapOdu.put(netCep2.key(), netCep2);
+ cepMapDsr.put(clientCep1.key(), clientCep1);
+ cepMapOdu.put(clientCep2.key(), clientCep2);
// Create x connection between I_ODU and E_ODU within xpdr
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
+ connection = createXCBetweenCeps(clientCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
TapiStringConstants.ODU, LayerProtocolName.ODU);
this.connectionFullMap.put(connection.key(), connection);
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.XPDR,
netCep1);
cepMap.put(netCep1.key(), netCep1);
private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsPht(List<String> xpdrNetworkTplist,
List<String> xpdrNodelist) {
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
- ConnectionEndPoint> cepMap = new HashMap<>();
+
// TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
// be added to the lower connection of a top connection
- Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
-
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
+ ConnectionEndPoint> cepMap = new HashMap<>();
// create ceps and x connections within xpdr
for (String xpdr:xpdrNodelist) {
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
// There should be 1 network tp per xpdr
- // TODO photonic media model should be updated to have the corresponding CEPs. I will just create
- // 3 different MC CEPs giving different IDs to show that they are different
- // Create 3 CEPs for each xpdr otsi node and the corresponding cross connection matchin the NEPs
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.OTSI,
- netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.E_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.E_OTSI, TapiStringConstants.OTSI,
+ // Just create 2 different CEPs (1 OTS + 1 OTSI_MC)
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA_OTS,
+ TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA_OTS,
+ TapiStringConstants.XPDR, netCep1);
+ ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.OTSI_MC,
+ TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.OTSI_MC, TapiStringConstants.XPDR,
netCep2);
- ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
- netCep3);
+// ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
+// TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+// putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
+// netCep3);
+
cepMap.put(netCep1.key(), netCep1);
cepMap.put(netCep2.key(), netCep2);
- cepMap.put(netCep3.key(), netCep3);
-
- // Create x connection between I_OTSi and E_OTSi within xpdr
- 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);
+// cepMap.put(netCep3.key(), netCep3);
- // Create X connection that will be added to the service object
- LowerConnection conn = new LowerConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- xcMap.put(conn.key(), conn);
}
- // OTSi top connection between edge I_OTSI Xpdr
+
+ // OTSi top connection between edge OTSI_MC Xpdr
+ Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(0))).findFirst().orElseThrow();
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI,
+ connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.OTSI_MC,
LayerProtocolName.PHOTONICMEDIA, xcMap, this.topConnRdmRdm);
this.connectionFullMap.put(connection.key(), connection);
- // OTSi top connection that will be added to the service object
+ // OTSi top connection that will be added to the service object
+ Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
connServMap.put(conn.key(), conn);
this.topConnXpdrXpdrPhtn = conn;
// Create 3 CEPs for each AD and DEG and the corresponding cross connections, matching the NEPs
// created in the topology creation
// add CEPs to the topology to the corresponding ONEP
- ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA, adCep1);
+ ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA_OTS, adCep1);
ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.MC, adCep2);
ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, TapiStringConstants.OTSI_MC);
String spcRdmDEG = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
LOG.info("Degree port of ROADm {} = {}", roadm, spcRdmDEG);
- ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA, degCep1);
+ ConnectionEndPoint degCep0 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OTS, degCep0);
+ ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OMS, degCep1);
ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.MC, degCep2);
ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.OTSI_MC, degCep3);
+ cepMap.put(degCep0.key(), degCep0);
cepMap.put(degCep1.key(), degCep1);
cepMap.put(degCep2.key(), degCep2);
cepMap.put(degCep3.key(), degCep3);
String spcRdmDEG1 = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
LOG.info("Degree 1 port of ROADm {} = {}", roadm, spcRdmDEG1);
- ConnectionEndPoint deg1Cep1 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA, deg1Cep1);
+ ConnectionEndPoint deg1Cep0 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OTS, deg1Cep0);
+ ConnectionEndPoint deg1Cep1 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OMS, deg1Cep1);
ConnectionEndPoint deg1Cep2 = createCepRoadm(spcRdmDEG1, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.MC, deg1Cep2);
ConnectionEndPoint deg1Cep3 = createCepRoadm(spcRdmDEG1, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.OTSI_MC, deg1Cep3);
+ cepMap.put(deg1Cep0.key(), deg1Cep0);
cepMap.put(deg1Cep1.key(), deg1Cep1);
cepMap.put(deg1Cep2.key(), deg1Cep2);
cepMap.put(deg1Cep3.key(), deg1Cep3);
.orElseThrow();
LOG.info("Degree 2 port of ROADm {} = {}", roadm, spcRdmDEG2);
- ConnectionEndPoint deg2Cep1 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA, deg2Cep1);
+ ConnectionEndPoint deg2Cep0 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OTS, deg2Cep0);
+ ConnectionEndPoint deg2Cep1 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OMS, deg2Cep1);
ConnectionEndPoint deg2Cep2 = createCepRoadm(spcRdmDEG2, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.MC, deg2Cep2);
ConnectionEndPoint deg2Cep3 = createCepRoadm(spcRdmDEG2, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.OTSI_MC, deg2Cep3);
+ cepMap.put(deg2Cep0.key(), deg2Cep0);
cepMap.put(deg2Cep1.key(), deg2Cep1);
cepMap.put(deg2Cep2.key(), deg2Cep2);
cepMap.put(deg2Cep3.key(), deg2Cep3);
org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep1 =
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
+ .setNodeEdgePointUuid(adCep1.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(adCep1.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(adCep1.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(adCep1.getUuid())
.build();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep2 =
org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep2 =
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
+ .setNodeEdgePointUuid(adCep2.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(adCep2.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(adCep2.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(adCep1.getUuid())
.build();
Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
LayerProtocolName xcProtocol) {
LOG.info("Creation cross connection between: {} and {}", tp1, tp2);
LOG.info("Cross connection name = {}", String.join("+", "XC", tp1, tp2, qual));
- LOG.info("CEP1 = {}", cep1.getClientNodeEdgePoint());
- LOG.info("CEP2 = {}", cep2.getClientNodeEdgePoint());
+ LOG.debug("Parent NEP of CEP1 = {}", cep1.getParentNodeEdgePoint().toString());
+ LOG.debug("Parent NEP CEP2 = {}", cep2.getParentNodeEdgePoint().toString());
org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ1 =
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ1 =
new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(cep1.getUuid())
- .build();
+ .onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
+ .setNodeEdgePointUuid(cep1.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(cep1.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(cep1.getParentNodeEdgePoint().getTopologyUuid())
+ .setConnectionEndPointUuid(cep1.getUuid())
+ .build();
org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ2 =
new org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
- .setConnectionEndPointUuid(cep2.getUuid())
- .build();
+ .setNodeEdgePointUuid(cep2.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(cep2.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(cep2.getParentNodeEdgePoint().getTopologyUuid())
+ .setConnectionEndPointUuid(cep2.getUuid())
+ .build();
Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint> ceps = new HashMap<>();
ceps.put(cepServ1.key(), cepServ1);
.setValue(String.join("+", id.split("\\+")[0], qualifier,
id.split("\\+")[1]))
.build();
- ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ ParentNodeEdgePoint pnep = new ParentNodeEdgePointBuilder()
.setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- qualifier)).getBytes(StandardCharsets.UTF_8))
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(StandardCharsets.UTF_8)).toString()))
+ .build();
+ String clientQualifier = "";
+ switch (qualifier) {
+ case TapiStringConstants.PHTNC_MEDIA_OTS:
+ clientQualifier = TapiStringConstants.PHTNC_MEDIA_OMS;
+ break;
+ case TapiStringConstants.PHTNC_MEDIA_OMS:
+ clientQualifier = TapiStringConstants.MC;
+ OwnedNodeEdgePoint onepMC = createRoadmNep(id.split("\\+")[0], id.split("\\+")[1],
+ false, OperationalState.ENABLED, AdministrativeState.UNLOCKED, clientQualifier);
+ putRdmNepInTopologyContext(id.split("\\+")[0], id.split("\\+")[1], TapiStringConstants.MC, onepMC);
+ break;
+ case TapiStringConstants.MC:
+ clientQualifier = TapiStringConstants.OTSI_MC;
+ OwnedNodeEdgePoint onepOTSiMC = createRoadmNep(id.split("\\+")[0], id.split("\\+")[1],
+ false, OperationalState.ENABLED, AdministrativeState.UNLOCKED, clientQualifier);
+ putRdmNepInTopologyContext(id.split("\\+")[0], id.split("\\+")[1],
+ TapiStringConstants.OTSI_MC, onepOTSiMC);
+ break;
+ default:
+ LOG.debug("not currently handling client NEP for OTSiMC CEP {}",
+ String.join("+", id.split("\\+")[0], qualifier, id.split("\\+")[1]));
+ break;
+ }
+ ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
+ clientQualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(StandardCharsets.UTF_8))
.toString()))
.setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(StandardCharsets.UTF_8)).toString()))
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
+ .setParentNodeEdgePoint(pnep)
.setName(Map.of(cepName.key(), cepName))
.setConnectionPortRole(PortRole.SYMMETRIC)
.setDirection(Direction.BIDIRECTIONAL)
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA);
+ if (!(TapiStringConstants.OTSI_MC.equals(qualifier))) {
+ cepBldr.setClientNodeEdgePoint(Map.of(cnep.key(), cnep));
+ }
return cepBldr.build();
}
.setValue(String.join("+", id.split("\\+")[0], qualifier,
id.split("\\+")[1]))
.build();
- ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ ParentNodeEdgePoint pnep = new ParentNodeEdgePointBuilder()
.setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- nodeLayer)).getBytes(StandardCharsets.UTF_8))
+ TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(StandardCharsets.UTF_8)).toString()))
+ .build();
+ String clientQualifier = "";
+ String clientNodeLayer = TapiStringConstants.PHTNC_MEDIA;
+ switch (qualifier) {
+ case TapiStringConstants.PHTNC_MEDIA_OTS:
+ clientQualifier = TapiStringConstants.OTSI_MC;
+ break;
+ case TapiStringConstants.OTSI_MC:
+ clientQualifier = TapiStringConstants.E_ODU;
+ clientNodeLayer = TapiStringConstants.ODU;
+ break;
+ case TapiStringConstants.E_ODU:
+ clientQualifier = TapiStringConstants.DSR;
+ clientNodeLayer = TapiStringConstants.DSR;
+ break;
+ default :
+ LOG.debug("no client CEP for DSR NEP {}",
+ String.join("+", id.split("\\+")[0], qualifier, id.split("\\+")[1]));
+ break;
+ }
+ ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
+ clientQualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
+ TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8))
.toString()))
.setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(StandardCharsets.UTF_8)).toString()))
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
+ .setParentNodeEdgePoint(pnep)
.setName(Map.of(cepName.key(), cepName))
.setConnectionPortRole(PortRole.SYMMETRIC)
.setDirection(Direction.BIDIRECTIONAL)
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setLayerProtocolName(cepProtocol);
+ if (!(TapiStringConstants.DSR.equals(qualifier))) {
+ cepBldr.setClientNodeEdgePoint(Map.of(cnep.key(), cnep));
+ }
return cepBldr.build();
}
this.tapiContext.updateTopologyWithCep(topoUuid, nodeUuid, nepUuid, cep);
}
+
+ private void putRdmNepInTopologyContext(String orNodeId, String orTpId, String qual, OwnedNodeEdgePoint onep) {
+ LOG.info("NEP id before Merge = {}", String.join("+", orNodeId, qual, orTpId));
+ LOG.info("Node of NEP id before Merge = {}", String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA));
+ // Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA)
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", orNodeId, qual, orTpId)
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ updateTopologyWithNep(topoUuid, nodeUuid, nepUuid, onep);
+ }
+
+ public void updateTopologyWithNep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, OwnedNodeEdgePoint onep) {
+ // TODO: verify this is correct. Should we identify the context IID with the context UUID??
+ InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
+ .child(Topology.class, new TopologyKey(topoUuid))
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
+ new NodeKey(nodeUuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
+ .build();
+ try {
+ Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onepIID).get();
+ if (optionalOnep.isPresent()) {
+ LOG.error("ONEP is already present in datastore");
+ return;
+ }
+ // merge in datastore
+ this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, onepIID,
+ onep);
+ this.networkTransactionService.commit().get();
+ LOG.info("NEP {} added successfully.", onep.getName().toString());
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Couldnt put NEP {} in topology, error = ", onep.getName().toString(), e);
+ }
+ }
+
public Map<org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey,
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection>
ConnectionType connType = null;
ServiceFormat serviceFormat = null;
String nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.DSR);
+ TapiStringConstants.XPDR);
String nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.DSR);
- LOG.debug("Node a = {}", nodeAid);
- LOG.debug("Node z = {}", nodeZid);
+ TapiStringConstants.XPDR);
+ LOG.info("NodeAid = {}", nodeAid);
+ LOG.info("NodeZid = {}", nodeZid);
//switch (constraint.getServiceLayer().getIntValue()) {
switch (input.getLayerProtocolName().getIntValue()) {
case 0:
LOG.info("PHOTONIC");
connType = getConnectionTypePhtnc(endPointMap.values());
serviceFormat = getServiceFormatPhtnc(endPointMap.values());
- if (serviceFormat.equals(ServiceFormat.OC)) {
- nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.PHTNC_MEDIA);
- nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().orElseThrow()
- .getLocalId(), TapiStringConstants.PHTNC_MEDIA);
- } else {
- nodeAid = String.join("+", endPointMap.values().stream().findFirst().orElseThrow().getLocalId(),
- TapiStringConstants.OTSI);
- nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().orElseThrow()
- .getLocalId(), TapiStringConstants.OTSI);
- }
LOG.debug("Node a photonic = {}", nodeAid);
LOG.debug("Node z photonic = {}", nodeZid);
break;
LOG.error("Nep not found in datastore");
return null;
}
- String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
+ String nodeName = "";
+ for (Map.Entry<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name> entry:
+ endPoint.getName().entrySet()) {
+ if (!("Node Type").equals(entry.getValue().getValueName())) {
+ nodeName = entry.getValue().getValue();
+ }
+ }
+// String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
String nodeid = String.join("-", nodeName.split("-")[0], nodeName.split("-")[1]);
String nepName = nep.getName().values().stream().findFirst().orElseThrow().getValue();
String txPortDeviceName = nepName.split("\\+")[0];
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());
+ LOG.info("NodeA {} Uuid is {}", nodeAid, nodeUuid);
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node =
this.tapiContext.getTapiNode(this.tapiTopoUuid, nodeUuid);
if (node == null) {
LOG.error("Nep not found in datastore");
return null;
}
- String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
+ String nodeName = "";
+ for (Map.Entry<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.NameKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.local._class.Name> entry:
+ endPoint.getName().entrySet()) {
+ if (!("Node Type").equals(entry.getValue().getValueName())) {
+ nodeName = entry.getValue().getValue();
+ }
+ }
+// String nodeName = endPoint.getName().values().stream().findFirst().orElseThrow().getValue();
String nodeid = String.join("-", nodeName.split("-")[0], nodeName.split("-")[1]);
String nepName = nep.getName().values().stream().findFirst().orElseThrow().getValue();
String txPortDeviceName = nepName.split("\\+")[0];
private ConnectionEndPoint getAssociatediODUCep(String spcXpdrNetwork) {
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
- TapiStringConstants.DSR).getBytes(StandardCharsets.UTF_8))).toString());
+ TapiStringConstants.XPDR).getBytes(StandardCharsets.UTF_8))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]).getBytes(StandardCharsets.UTF_8)))
.toString());
private OpenroadmNodeType getOpenRoadmNodeType(List<String> xpdrNodelist) {
List<OpenroadmNodeType> openroadmNodeTypeList = new ArrayList<>();
for (String xpdrNode:xpdrNodelist) {
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.DSR))
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.XPDR))
.getBytes(StandardCharsets.UTF_8)).toString());
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeIID = InstanceIdentifier.builder(
}
return openroadmNodeTypeList.get(0);
}
+
+ private OwnedNodeEdgePoint createRoadmNep(String orNodeId, String tpId,
+ boolean withSip, OperationalState operState, AdministrativeState adminState, String nepPhotonicSublayer) {
+
+ //TODO : complete implementation with SIP
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, nepPhotonicSublayer,
+ tpId)).getBytes(StandardCharsets.UTF_8)).toString());
+ Name nepName = new NameBuilder()
+ .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
+ .setValue(String.join("+", orNodeId, nepPhotonicSublayer, tpId))
+ .build();
+ List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
+ if (TapiStringConstants.MC.equals(nepPhotonicSublayer)) {
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIERMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ } else {
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ }
+ OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
+ .setUuid(nepUuid)
+ .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
+ .setName(Map.of(nepName.key(), nepName))
+ .setSupportedCepLayerProtocolQualifierInstances(sclpqiList)
+ .setDirection(Direction.BIDIRECTIONAL)
+ .setLinkPortRole(PortRole.SYMMETRIC)
+ .setAdministrativeState(adminState).setOperationalState(operState)
+ .setLifecycleState(LifecycleState.INSTALLED)
+ .build();
+
+ return onep;
+ }
+
}
@Override
public ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> deleteConnectivityService(
DeleteConnectivityServiceInput input) {
- // TODO Auto-generated method stub
- // TODO add try
- 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.<DeleteConnectivityServiceOutput>failed()
- .withError(ErrorType.RPC, "Failed to delete Service")
- .buildFuture();
- }
+ List<String> serviceName = null;
if (input.getUuid() != null) {
+ try {
+ serviceName = getNameFromUuid(input.getUuid(), "Service");
+ } catch (ExecutionException e) {
+ LOG.error("Service {} to be deleted not found in the DataStore", e.getMessage());
+ return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
+ .withError(ErrorType.RPC, "Failed to delete Service")
+ .buildFuture();
+ } catch (NoSuchElementException e) {
+ LOG.error("Service {} to be deleted not found in the DataStore", e.getMessage());
+ return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
+ .withError(ErrorType.RPC, "Failed to delete Service")
+ .buildFuture();
+ }
+ LOG.debug("The service {}, of name {} has been found in the DS", input.getUuid().toString(), serviceName);
try {
Uuid serviceUuid = input.getUuid();
this.tapiContext.deleteConnectivityService(serviceUuid);
ListenableFuture<RpcResult<ServiceDeleteOutput>> output =
this.serviceHandler.serviceDelete(new ServiceDeleteInputBuilder()
.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
- .setServiceName(serviceName)
+ .setServiceName(input.getUuid().getValue())
.setTailRetention(ServiceDeleteReqInfo.TailRetention.No)
.build())
.setSdncRequestHeader(new SdncRequestHeaderBuilder()
LOG.error("Failed to delete service. Deletion process failed");
} catch (InterruptedException | ExecutionException e) {
LOG.error("Failed to delete service.", e);
+ return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
+ .withError(ErrorType.RPC, "Failed to delete Service")
+ .buildFuture();
}
}
return RpcResultBuilder.<DeleteConnectivityServiceOutput>failed()
- .withError(ErrorType.RPC, "Failed to delete Service")
+ .withError(ErrorType.RPC, "Failed to delete Service, service uuid in input is null")
.buildFuture();
}
.build();
}
- private Map<EndPointKey, EndPoint> createEndPoints(
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
- .create.connectivity.service.input.EndPointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
- .create.connectivity.service.input.EndPoint> endPoints) {
- Map<EndPointKey, EndPoint> endPointMap = new HashMap<>();
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
- .create.connectivity.service.input.EndPoint ep: endPoints.values()) {
- EndPoint endpoint = new EndPointBuilder()
- .setServiceInterfacePoint(new ServiceInterfacePointBuilder()
- .setServiceInterfacePointUuid(ep.getServiceInterfacePoint().getServiceInterfacePointUuid())
- .build())
- .setName(ep.getName())
- .setAdministrativeState(ep.getAdministrativeState())
- .setDirection(ep.getDirection())
- .setLifecycleState(ep.getLifecycleState())
- .setOperationalState(ep.getOperationalState())
- .setLayerProtocolName(ep.getLayerProtocolName())
- // TODO: implement bandwidth profile
- .setCapacity(new CapacityBuilder()
- .setTotalSize(new TotalSizeBuilder().build())
-// .setBandwidthProfile(new BandwidthProfileBuilder().build())
- .build())
- .setProtectionRole(ep.getProtectionRole())
- .setRole(ep.getRole())
- .setLocalId(ep.getLocalId())
- .build();
- endPointMap.put(endpoint.key(), endpoint);
- }
- return endPointMap;
- }
-
- public List<String> getNameFromUuid(Uuid uuid, String typeOfNode) throws ExecutionException {
+ public List<String> getNameFromUuid(Uuid uuid, String typeOfNode) throws ExecutionException,
+ NoSuchElementException {
Map<NameKey, Name> nameMap = new HashMap<>();
- if ("service".equals(typeOfNode)) {
+ if ("Service".equals(typeOfNode)) {
ConnectivityService conServ = null;
InstanceIdentifier<ConnectivityService> nodeIID = InstanceIdentifier.builder(Context.class)
.augmentation(
try {
conServ = conServFuture.get().orElseThrow();
} catch (InterruptedException e) {
+ LOG.error("GetNamefromUuid Interrupt exception: Service not in Datastore, Interruption of the process");
Thread.currentThread().interrupt();
//TODO: investigate on how to throw Interrupted exception (generate a check violation error)
} catch (ExecutionException e) {
throw new ExecutionException("Unable to get from mdsal service: " + nodeIID
.firstKeyOf(ConnectivityService.class).getUuid().getValue(), e);
} catch (NoSuchElementException e) {
- return null;
+ throw new NoSuchElementException("Unable to get from mdsal service: " + nodeIID
+ .firstKeyOf(ConnectivityService.class).getUuid().getValue(), e);
+ //return null;
}
nameMap = conServ.getName();
}
List<String> nameList = new ArrayList<>();
for (Map.Entry<NameKey, Name> entry : nameMap.entrySet()) {
- nameList.add(entry.getValue().getValueName());
+ nameList.add(entry.getValue().getValue());
}
+ LOG.debug("The service name of service {}, is {}", uuid.toString(), nameList.toString());
return nameList;
}
+
+ private Map<EndPointKey, EndPoint> createEndPoints(
+ Map<org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointKey,
+ org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint> endPoints) {
+ Map<EndPointKey, EndPoint> endPointMap = new HashMap<>();
+ for (org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint ep:
+ endPoints.values()) {
+ EndPoint endpoint = new EndPointBuilder()
+ .setServiceInterfacePoint(new ServiceInterfacePointBuilder()
+ .setServiceInterfacePointUuid(ep.getServiceInterfacePoint().getServiceInterfacePointUuid())
+ .build())
+ .setName(ep.getName())
+ .setAdministrativeState(ep.getAdministrativeState())
+ .setDirection(ep.getDirection())
+ .setLifecycleState(ep.getLifecycleState())
+ .setOperationalState(ep.getOperationalState())
+ .setLayerProtocolName(ep.getLayerProtocolName())
+ // TODO: implement bandwidth profile
+ .setCapacity(new CapacityBuilder()
+ .setTotalSize(new TotalSizeBuilder().build())
+// .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile
+ .build())
+ .setProtectionRole(ep.getProtectionRole())
+ .setRole(ep.getRole())
+ .setLocalId(ep.getLocalId())
+ .build();
+ endPointMap.put(endpoint.key(), endpoint);
+ }
+ return endPointMap;
+ }
+
+
+
}
TapiRendererNotificationHandler rendererListenerImpl = new TapiRendererNotificationHandler(dataBroker,
notificationPublishService);
- new TapiConnectivityImpl(this.serviceHandler, tapiContext, connectivityUtils, pceListenerImpl,
- rendererListenerImpl, networkTransactionService);
+ TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(this.serviceHandler, tapiContext,
+ connectivityUtils, pceListenerImpl, rendererListenerImpl, networkTransactionService);
+ rpcRegistrations.add(rpcProviderService.registerRpcImplementations(tapiConnectivity.registerRPCs()));
TapiTopologyImpl topo = new TapiTopologyImpl(this.dataBroker, tapiContext, topologyUtils, tapiLink);
rpcRegistrations.add(rpcProviderService.registerRpcImplementations(topo.registerRPCs()));
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.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.OwnedNodeEdgePoint1;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.LowerConnection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.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.notification.TargetObjectNameKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.NodeEdgePointRef;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODEEDGEPOINT;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
private void onNotification(Notification notification) {
LOG.info("Received network model notification {}", notification);
if (notification.getNotificationType().equals(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE)
- && notification.getTargetObjectType().equals(OBJECTTYPETAPICONTEXT.VALUE)) {
+ && notification.getTargetObjectType().equals(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE)) {
if (notification.getChangedAttributes() == null) {
return;
}
}
}
- public void onEventNotification(EventNotification notification) {
- LOG.info("Received network model notification {}", notification);
- //TODO: see if implementation needed as this is declared as obsolete
- }
+// @Override
+// public void onEventNotification(EventNotification notification) {
+// LOG.info("Received network model notification {}", notification);
+// //TODO: see if implementation needed and if in TAPI2.4, something supersedes this method
+// }
private PublishTapiNotificationService createNbiNotification(ConnectivityService connService) {
if (connService == null) {
.setChangedAttributes(changedStates)
.setEventTimeStamp(datetime)
.setTargetObjectName(targetObjectNames)
- .setTargetObjectType(OBJECTTYPETAPICONTEXT.VALUE)
+ .setTargetObjectType(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)
.setLayerProtocolName(connService.getLayerProtocolName())
.build();
}
// To check if the oneps are from the original Top connection
newConnState = getConnectionState(changedOneps, onepStates, newConn);
}
-
+ LOG.debug("Analysing connection = {} ", newConn.getName().toString());
LOG.info("Previous connection state = {} & New connection state = {}",
newConn.getOperationalState().getName(), newConnState.getName());
Connection changedConn = new ConnectionBuilder(newConn).setOperationalState(newConnState).build();
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
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.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.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.connectivity.rev221121.connection.LowerConnectionKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ClientNodeEdgePointBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ParentNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connection.end.point.ParentNodeEdgePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.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.photonic.media.rev221121.PHOTONICLAYERQUALIFIERMC;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// Connections must be with a locked stated. As the renderer hasnt implemented yet the oc's
Map<ConnectionKey, Connection> connectionMap = createConnectionsAndCepsForService(pathDescription,
input.getLayerProtocolName());
+ LOG.debug("Connection Map from createConnectionsAndCepsForService is {}, LAYERPROTOCOL of service is {} ",
+ connectionMap.toString(), input.getLayerProtocolName());
// add connections to connection context and to connectivity context
updateConnectionContextWithConn(this.connectionFullMap, connectionMap, serviceUuid);
}
default:
LOG.error("Service type format {} not supported", serviceProtName.getName());
}
+ LOG.info("CONNSERVERMAP PceListener= {}", connectionServMap.toString());
return connectionServMap;
}
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.XPDR,
LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.XPDR,
+ netCep1);
cepMapDsr.put(netCep1.key(), netCep1);
}
LOG.info("Creating ceps and xc for xpdr {}", xpdr);
String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR,
- LayerProtocolName.DSR);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1);
+ ConnectionEndPoint clientCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, LayerProtocolName.DSR);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.XPDR,
+ clientCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.DSR,
- netCep2);
+ ConnectionEndPoint clientCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU,
+ TapiStringConstants.XPDR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.XPDR,
+ clientCep2);
String spcXpdrNetwork = getAssociatedNetworkPort(spcXpdrClient, xpdrNetworkTplist);
ConnectionEndPoint netCep3 = getAssociatediODUCep(spcXpdrNetwork);
- cepMapDsr.put(netCep1.key(), netCep1);
- cepMapOdu.put(netCep2.key(), netCep2);
+ cepMapDsr.put(clientCep1.key(), clientCep1);
+ cepMapOdu.put(clientCep2.key(), clientCep2);
// Create x connection between I_ODU and E_ODU within xpdr
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
+ connection = createXCBetweenCeps(clientCep2, netCep3, spcXpdrClient, spcXpdrNetwork,
TapiStringConstants.ODU, LayerProtocolName.ODU);
this.connectionFullMap.put(connection.key(), connection);
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_ODU,
- TapiStringConstants.DSR, LayerProtocolName.ODU);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.DSR,
+ TapiStringConstants.XPDR, LayerProtocolName.ODU);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.XPDR,
netCep1);
cepMap.put(netCep1.key(), netCep1);
private Map<ConnectionKey, Connection> createXpdrCepsAndConnectionsPht(List<String> xpdrNetworkTplist,
List<String> xpdrNodelist) {
- Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.cep.list.ConnectionEndPointKey,
ConnectionEndPoint> cepMap = new HashMap<>();
// TODO: when upgrading the models to 2.1.3, get the connection inclusion because those connections will
// be added to the lower connection of a top connection
- Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
+// Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
// create ceps and xc connections within xpdr
for (String xpdr:xpdrNodelist) {
String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst()
.orElseThrow();
// There should be 1 network tp per xpdr
- // TODO photonic media model should be updated to have the corresponding CEPs. I will just create
- // 3 different MC CEPs giving different IDs to show that they are different
- // Create 3 CEPs for each xpdr otsi node and the corresponding cross connection matchin the NEPs
- ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.OTSI,
- netCep1);
- ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.E_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.E_OTSI, TapiStringConstants.OTSI,
+ // Just create 2 different CEPs (1 OTS + 1 OTSI_MC)
+ ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA_OTS,
+ TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA_OTS,
+ TapiStringConstants.XPDR, netCep1);
+ ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.OTSI_MC,
+ TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+ putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.OTSI_MC, TapiStringConstants.XPDR,
netCep2);
- ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
- netCep3);
+// ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI,
+// TapiStringConstants.XPDR, LayerProtocolName.PHOTONICMEDIA);
+// putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI,
+// netCep3);
+// cepMap.put(netCep3.key(), netCep3);
cepMap.put(netCep1.key(), netCep1);
cepMap.put(netCep2.key(), netCep2);
- cepMap.put(netCep3.key(), netCep3);
- // Create x connection between I_OTSi and E_OTSi within xpdr
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
- connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork,
- TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA);
- this.connectionFullMap.put(connection.key(), connection);
- // Create X connection that will be added to the service object
- LowerConnection conn = new LowerConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
- xcMap.put(conn.key(), conn);
}
- // OTSi top connection between edge I_OTSI Xpdr
+
+ // OTSi top connection between edge OTSI_MC Xpdr
+ Map<LowerConnectionKey, LowerConnection> xcMap = new HashMap<>();
String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(0))).findFirst().orElseThrow();
String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist
.get(xpdrNodelist.size() - 1))).findFirst().orElseThrow();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.Connection
- connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI,
- LayerProtocolName.PHOTONICMEDIA, xcMap, this.topConnRdmRdm);
+ connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.OTSI_MC,
+ LayerProtocolName.PHOTONICMEDIA, xcMap, this.topConnRdmRdm);
this.connectionFullMap.put(connection.key(), connection);
- // OTSi top connection that will be added to the service object
+ // OTSi top connection that will be added to the service object
+ Map<ConnectionKey, Connection> connServMap = new HashMap<>();
Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build();
connServMap.put(conn.key(), conn);
this.topConnXpdrXpdrPhtn = conn;
// Create 3 CEPs for each AD and DEG and the corresponding cross connections, matching the NEPs
// created in the topology creation
// add CEPs to the topology to the corresponding ONEP
- ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA, adCep1);
+ ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA_OTS, adCep1);
ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.MC, adCep2);
ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, TapiStringConstants.OTSI_MC);
String spcRdmDEG = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
LOG.info("Degree port of ROADm {} = {}", roadm, spcRdmDEG);
- ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA, degCep1);
+ ConnectionEndPoint degCep0 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OTS, degCep0);
+ ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA_OMS, degCep1);
ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.MC, degCep2);
ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.OTSI_MC, degCep3);
+ cepMap.put(degCep0.key(), degCep0);
cepMap.put(degCep1.key(), degCep1);
cepMap.put(degCep2.key(), degCep2);
cepMap.put(degCep3.key(), degCep3);
String spcRdmDEG1 = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().orElseThrow();
LOG.info("Degree 1 port of ROADm {} = {}", roadm, spcRdmDEG1);
- ConnectionEndPoint deg1Cep1 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA, deg1Cep1);
+ ConnectionEndPoint deg1Cep0 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OTS, deg1Cep0);
+ ConnectionEndPoint deg1Cep1 = createCepRoadm(spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.PHTNC_MEDIA_OMS, deg1Cep1);
ConnectionEndPoint deg1Cep2 = createCepRoadm(spcRdmDEG1, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.MC, deg1Cep2);
ConnectionEndPoint deg1Cep3 = createCepRoadm(spcRdmDEG1, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG1, TapiStringConstants.OTSI_MC, deg1Cep3);
+ cepMap.put(deg1Cep0.key(), deg1Cep0);
cepMap.put(deg1Cep1.key(), deg1Cep1);
cepMap.put(deg1Cep2.key(), deg1Cep2);
cepMap.put(deg1Cep3.key(), deg1Cep3);
.orElseThrow();
LOG.info("Degree 2 port of ROADm {} = {}", roadm, spcRdmDEG2);
- ConnectionEndPoint deg2Cep1 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA);
- putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA, deg2Cep1);
+ ConnectionEndPoint deg2Cep0 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OTS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OTS, deg2Cep0);
+ ConnectionEndPoint deg2Cep1 = createCepRoadm(spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OMS);
+ putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.PHTNC_MEDIA_OMS, deg2Cep1);
ConnectionEndPoint deg2Cep2 = createCepRoadm(spcRdmDEG2, TapiStringConstants.MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.MC, deg2Cep2);
ConnectionEndPoint deg2Cep3 = createCepRoadm(spcRdmDEG2, TapiStringConstants.OTSI_MC);
putRdmCepInTopologyContext(roadm, spcRdmDEG2, TapiStringConstants.OTSI_MC, deg2Cep3);
+ cepMap.put(deg2Cep0.key(), deg2Cep0);
cepMap.put(deg2Cep1.key(), deg2Cep1);
cepMap.put(deg2Cep2.key(), deg2Cep2);
cepMap.put(deg2Cep3.key(), deg2Cep3);
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep1 =
new org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .setNodeEdgePointUuid(adCep1.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(adCep1.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(adCep1.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(adCep1.getUuid())
.build();
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ConnectionEndPoint adCep2 =
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cep2 =
new org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(adCep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .setNodeEdgePointUuid(adCep2.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(adCep2.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(adCep2.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(adCep1.getUuid())
.build();
Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
LayerProtocolName xcProtocol) {
LOG.info("Creation cross connection between: {} and {}", tp1, tp2);
LOG.info("Cross connection name = {}", String.join("+", "XC", tp1, tp2, qual));
- LOG.info("CEP1 = {}", cep1.getClientNodeEdgePoint().toString());
- LOG.info("CEP2 = {}", cep2.getClientNodeEdgePoint().toString());
+ LOG.debug("Parent NEP of CEP1 = {}", cep1.getParentNodeEdgePoint().toString());
+ LOG.debug("Parent NEP CEP2 = {}", cep2.getParentNodeEdgePoint().toString());
org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ1 =
new org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep1.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .setNodeEdgePointUuid(cep1.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(cep1.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(cep1.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(cep1.getUuid())
.build();
org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPoint cepServ2 =
new org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connection.ConnectionEndPointBuilder()
- .setNodeEdgePointUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeEdgePointUuid())
- .setTopologyUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getTopologyUuid())
- .setNodeUuid(cep2.getClientNodeEdgePoint()
- .values().stream().findFirst().orElseThrow().getNodeUuid())
+ .setNodeEdgePointUuid(cep2.getParentNodeEdgePoint().getNodeEdgePointUuid())
+ .setNodeUuid(cep2.getParentNodeEdgePoint().getNodeUuid())
+ .setTopologyUuid(cep2.getParentNodeEdgePoint().getTopologyUuid())
.setConnectionEndPointUuid(cep2.getUuid())
.build();
Map<ConnectionEndPointKey, org.opendaylight.yang.gen.v1.urn
.setValue(String.join("+", id.split("\\+")[0], qualifier,
id.split("\\+")[1]))
.build();
+ ParentNodeEdgePoint pnep = new ParentNodeEdgePointBuilder()
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
+ qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(StandardCharsets.UTF_8)).toString()))
+ .build();
+ String clientQualifier = "";
+ switch (qualifier) {
+ case TapiStringConstants.PHTNC_MEDIA_OTS:
+ clientQualifier = TapiStringConstants.PHTNC_MEDIA_OMS;
+ break;
+ case TapiStringConstants.PHTNC_MEDIA_OMS:
+ clientQualifier = TapiStringConstants.MC;
+ OwnedNodeEdgePoint onepMC = createRoadmNep(id.split("\\+")[0], id.split("\\+")[1],
+ false, OperationalState.ENABLED, AdministrativeState.UNLOCKED, clientQualifier);
+ putRdmNepInTopologyContext(id.split("\\+")[0], id.split("\\+")[1], TapiStringConstants.MC, onepMC);
+ break;
+ case TapiStringConstants.MC:
+ clientQualifier = TapiStringConstants.OTSI_MC;
+ OwnedNodeEdgePoint onepOTSiMC = createRoadmNep(id.split("\\+")[0], id.split("\\+")[1],
+ false, OperationalState.ENABLED, AdministrativeState.UNLOCKED, clientQualifier);
+ putRdmNepInTopologyContext(id.split("\\+")[0], id.split("\\+")[1],
+ TapiStringConstants.OTSI_MC, onepOTSiMC);
+ break;
+ default:
+ LOG.debug("not currently handling client NEP for OTSiMC CEP {}",
+ String.join("+", id.split("\\+")[0], qualifier, id.split("\\+")[1]));
+ break;
+ }
ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
.setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
+ clientQualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- "PHOTONIC_MEDIA")).getBytes(Charset.forName("UTF-8")))
+ TapiStringConstants.PHTNC_MEDIA)).getBytes(StandardCharsets.UTF_8))
.toString()))
.setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString()))
+ .getBytes(StandardCharsets.UTF_8)).toString()))
.build();
// TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
// TODO: add parent ONEP??
ConnectionEndPointBuilder cepBldr = new ConnectionEndPointBuilder()
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
+ qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
+ .setParentNodeEdgePoint(pnep)
.setName(Map.of(cepName.key(), cepName))
.setConnectionPortRole(PortRole.SYMMETRIC)
.setDirection(Direction.BIDIRECTIONAL)
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA);
+ if (!(TapiStringConstants.OTSI_MC.equals(qualifier))) {
+ cepBldr.setClientNodeEdgePoint(Map.of(cnep.key(), cnep));
+ }
return cepBldr.build();
}
.setValue(String.join("+", id.split("\\+")[0], qualifier,
id.split("\\+")[1]))
.build();
+ ParentNodeEdgePoint pnep = new ParentNodeEdgePointBuilder()
+ .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
+ qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
+ TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8))
+ .toString()))
+ .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(StandardCharsets.UTF_8)).toString()))
+ .build();
+ String clientQualifier = "";
+ String clientNodeLayer = TapiStringConstants.PHTNC_MEDIA;
+ switch (qualifier) {
+ case TapiStringConstants.PHTNC_MEDIA_OTS:
+ clientQualifier = TapiStringConstants.OTSI_MC;
+ break;
+ case TapiStringConstants.OTSI_MC:
+ clientQualifier = TapiStringConstants.E_ODU;
+ clientNodeLayer = TapiStringConstants.ODU;
+ break;
+ case TapiStringConstants.E_ODU:
+ clientQualifier = TapiStringConstants.DSR;
+ clientNodeLayer = TapiStringConstants.DSR;
+ break;
+ default :
+ LOG.debug("no client CEP for DSR NEP {}",
+ String.join("+", id.split("\\+")[0], qualifier, id.split("\\+")[1]));
+ break;
+ }
ClientNodeEdgePoint cnep = new ClientNodeEdgePointBuilder()
.setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
+ clientQualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
.setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0],
- nodeLayer)).getBytes(Charset.forName("UTF-8")))
+ TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8))
.toString()))
.setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
- .getBytes(Charset.forName("UTF-8"))).toString()))
+ .getBytes(StandardCharsets.UTF_8)).toString()))
.build();
// TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...)
// TODO: add parent ONEP??
ConnectionEndPointBuilder cepBldr = new ConnectionEndPointBuilder()
.setUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", id.split("\\+")[0],
- qualifier, id.split("\\+")[1])).getBytes(Charset.forName("UTF-8")))
+ qualifier, id.split("\\+")[1])).getBytes(StandardCharsets.UTF_8))
.toString()))
- .setClientNodeEdgePoint(Map.of(cnep.key(), cnep))
+ .setParentNodeEdgePoint(pnep)
.setName(Map.of(cepName.key(), cepName))
.setConnectionPortRole(PortRole.SYMMETRIC)
.setDirection(Direction.BIDIRECTIONAL)
.setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
.setLayerProtocolName(cepProtocol);
+ if (!(TapiStringConstants.DSR.equals(qualifier))) {
+ cepBldr.setClientNodeEdgePoint(Map.of(cnep.key(), cnep));
+ }
return cepBldr.build();
}
}
}
+ private void putRdmNepInTopologyContext(String orNodeId, String orTpId, String qual, OwnedNodeEdgePoint onep) {
+ LOG.info("NEP id before Merge = {}", String.join("+", orNodeId, qual, orTpId));
+ LOG.info("Node of NEP id before Merge = {}", String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA));
+ // Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA)
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", orNodeId, qual, orTpId)
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ updateTopologyWithNep(topoUuid, nodeUuid, nepUuid, onep);
+ }
+
+ public void updateTopologyWithNep(Uuid topoUuid, Uuid nodeUuid, Uuid nepUuid, OwnedNodeEdgePoint onep) {
+ // TODO: verify this is correct. Should we identify the context IID with the context UUID??
+ InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1.class)
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext.class)
+ .child(Topology.class, new TopologyKey(topoUuid))
+ .child(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node.class,
+ new NodeKey(nodeUuid))
+ .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
+ .build();
+ try {
+ Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
+ LogicalDatastoreType.OPERATIONAL, onepIID).get();
+ if (optionalOnep.isPresent()) {
+ LOG.error("ONEP is already present in datastore");
+ return;
+ }
+ // merge in datastore
+ this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, onepIID,
+ onep);
+ this.networkTransactionService.commit().get();
+ LOG.info("NEP {} added successfully.", onep.getName().toString());
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error("Couldnt put NEP {} in topology, error = ", onep.getName().toString(), e);
+ }
+ }
+
+
private void updateConnectionContextWithConn(
Map<org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey,
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
- TapiStringConstants.DSR).getBytes(Charset.forName("UTF-8")))).toString());
+ TapiStringConstants.XPDR).getBytes(Charset.forName("UTF-8")))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0],
TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]).getBytes(Charset.forName("UTF-8"))))
.toString());
private OpenroadmNodeType getOpenRoadmNodeType(List<String> xpdrNodelist) {
List<OpenroadmNodeType> openroadmNodeTypeList = new ArrayList<>();
for (String xpdrNode:xpdrNodelist) {
- Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.DSR))
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+",xpdrNode, TapiStringConstants.XPDR))
.getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<org.opendaylight.yang.gen.v1.urn
.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeIID
return clientPortList;
}
+ private OwnedNodeEdgePoint createRoadmNep(String orNodeId, String tpId,
+ boolean withSip, OperationalState operState, AdministrativeState adminState, String nepPhotonicSublayer) {
+
+ //TODO : complete implementation with SIP
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, nepPhotonicSublayer,
+ tpId)).getBytes(StandardCharsets.UTF_8)).toString());
+ Name nepName = new NameBuilder()
+ .setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
+ .setValue(String.join("+", orNodeId, nepPhotonicSublayer, tpId))
+ .build();
+ List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
+ if (TapiStringConstants.MC.equals(nepPhotonicSublayer)) {
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIERMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ } else {
+ sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .build());
+ }
+ OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
+ .setUuid(nepUuid)
+ .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
+ .setName(Map.of(nepName.key(), nepName))
+ .setSupportedCepLayerProtocolQualifierInstances(sclpqiList)
+ .setDirection(Direction.BIDIRECTIONAL)
+ .setLinkPortRole(PortRole.SYMMETRIC)
+ .setAdministrativeState(adminState).setOperationalState(operState)
+ .setLifecycleState(LifecycleState.INSTALLED)
+ .build();
+
+ return onep;
+ }
+
public void setInput(CreateConnectivityServiceInput input) {
this.input = input;
}
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.CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectionKey;
.setChangedAttributes(changedStates)
.setEventTimeStamp(datetime)
.setTargetObjectName(targetObjectNames)
- .setTargetObjectType(OBJECTTYPETAPICONTEXT.VALUE)
+ .setTargetObjectType(CONNECTIVITYOBJECTTYPECONNECTIVITYSERVICE.VALUE)
.setLayerProtocolName(connService.getLayerProtocolName())
.build();
}
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPac;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey;
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();
+ String.join("+", this.ietfNodeId, TapiStringConstants.XPDR)).build();
+ Name nameOtsiNode = new NameBuilder().setValueName("otsi node name").setValue(
+ String.join("+", this.ietfNodeId, TapiStringConstants.XPDR)).build();
Name nameNodeType = new NameBuilder().setValueName("Node Type")
.setValue(this.ietfNodeType.getName()).build();
Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU,
- LayerProtocolName.PHOTONICMEDIA);
+ LayerProtocolName.DIGITALOTN, 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);
+ .Node dsrNode = createTapiNode(Map.of(nameDsrNode.key(), nameDsrNode, nameOtsiNode.key(), nameOtsiNode,
+ nameNodeType.key(), nameNodeType), dsrLayerProtocols);
LOG.info("XPDR Node {} should have {} NEPs and {} SIPs", this.ietfNodeId,
this.oorClientPortList.size() + this.oorNetworkPortList.size(),
this.oorClientPortList.size() + this.oorNetworkPortList.size());
link.getDestination().getDestNode().getValue().split("-")[0],
link.getDestination().getDestNode().getValue().split("-")[1]),
link.getDestination().getDestTp().getValue(), TapiStringConstants.OMS_RDM_RDM_LINK,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, adminState, operState, Set.of(LayerProtocolName.PHOTONICMEDIA),
- Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), this.tapiTopoUuid);
+ TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS, adminState, operState,
+ Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()),
+ this.tapiTopoUuid);
linksToNotConvert.add(link
.augmentation(Link1.class)
.getOppositeLink().getValue());
for (Node node:nodeList) {
if (node.getSupportingNode().values().stream().noneMatch(sp -> sp.getNodeRef().getValue()
.equals(this.ietfNodeId))) {
- LOG.warn("Abstracted node {} is not part of {}",
+ LOG.debug("Abstracted node {} is not part of {}",
node.getNodeId().getValue(), this.ietfNodeId);
continue;
}
// TODO: deg port could be sip. e.g. MDONS
oneplist.putAll(populateNepsForRdmNode(degPortList, false, TapiStringConstants.PHTNC_MEDIA_OTS));
oneplist.putAll(populateNepsForRdmNode(degPortList, false, TapiStringConstants.PHTNC_MEDIA_OMS));
- // oneplist.putAll(populateNepsForRdmNode(node.getNodeId().getValue(), degPortList, false
- //, TapiStringConstants.PHTNC_MEDIA_OTS));
numNeps += degPortList.size() * 2;
break;
case 12:
// Convert TP List in NEPs and put it in onepl
LOG.info("Srg port List: {}", srgPortList);
oneplist.putAll(populateNepsForRdmNode(srgPortList, true, TapiStringConstants.PHTNC_MEDIA_OTS));
- // oneplist.putAll(populateNepsForRdmNode(node.getNodeId().getValue(), srgPortList, true
- // TapiStringConstants.PHTNC_MEDIA_OTS));
numNeps += srgPortList.size();
numSips += srgPortList.size();
break;
}
// create tapi Node
// UUID
- LOG.info("Creation of PHOTONIC node for {}", roadm.getNodeId().getValue());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", roadm.getNodeId().getValue(),
TapiStringConstants.PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("Creation of PHOTONIC node for {}, of Uuid {}", roadm.getNodeId().getValue(), nodeUuid.toString());
// Names
Name nodeNames = new NameBuilder().setValueName("roadm node name")
.setValue(String.join("+", roadm.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA)).build();
.setRuleType(ruleTypes)
.build();
ruleList.put(rule.key(), rule);
- if (layerProtocols.contains(LayerProtocolName.DSR)) {
+ if (layerProtocols.contains(LayerProtocolName.DSR)
+ || layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
- } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
- nodeUuid = getNodeUuid4Photonic(onepl, nodeRuleGroupList, ruleList);
} else {
LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
.getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(nodeNames)
.setNodeRuleGroup(nodeRuleGroupList)
.setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
.setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskParameterPac(riskParamPac)
.setErrorCharacteristic("error")
.setLossCharacteristic("loss")
.setRepeatDeliveryCharacteristic("repeat delivery")
}
private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node
- createRoadmTapiNode(Uuid nodeUuid, Map<NameKey, Name> nameMap, Set<LayerProtocolName> layerProtocols,
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
+ createRoadmTapiNode(Uuid nodeUuid, Map<NameKey, Name> nameMap, Set<LayerProtocolName> layerProtocols,
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> oneplist) {
// Empty random creation of mandatory fields for avoiding errors....
CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
.setCostAlgorithm("Restricted Shortest Path - RSP")
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(nameMap)
.setNodeRuleGroup(createNodeRuleGroupForRdmNode(nodeUuid, oneplist.values()))
.setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
.setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskParameterPac(riskParamPac)
.setErrorCharacteristic("error")
.setLossCharacteristic("loss")
.setRepeatDeliveryCharacteristic("repeat delivery")
.build();
}
- private Uuid getNodeUuid4Photonic(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList,
- Map<RuleKey, Rule> ruleList) {
- Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI));
- // iNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI));
- onepl.put(onep.key(), onep);
- }
- // eNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
- Name onedName = new NameBuilder()
- .setValueName("eNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, false,
- String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI));
- onepl.put(onep.key(), onep);
- }
- // Photonic Media Nep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
- Name onedName = new NameBuilder()
- .setValueName("PhotMedNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, false,
- String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA));
- onepl.put(onep.key(), onep);
- }
- // create NodeRuleGroup
- int count = 1;
- LOG.info("OTSi switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values());
- for (TerminationPoint tp : this.oorNetworkPortList) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
- 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.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)))
- .setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- tp.getTpId().getValue())))
- .build();
- nepList.put(inep.key(), inep);
- nepList.put(enep.key(), enep);
- // Empty random creation of mandatory fields for avoiding errors....
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue(TapiStringConstants.COST_HOP_VALUE)
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
- .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
- .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
- .build();
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(("otsi node rule group " + count).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .build();
- nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeUuid;
- }
-
private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR));
+ nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR));
// client nep creation on DSR node
for (int i = 0; i < oorClientPortList.size(); i++) {
LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
for (int i = 0; i < oorNetworkPortList.size(); i++) {
LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
oorNetworkPortList.get(i).getTpId().getValue()));
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
+ Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid);
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
Name onedName = new NameBuilder()
.setValueName("iNodeEdgePoint_N")
.setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
for (int i = 0; i < oorClientPortList.size(); i++) {
LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
oorClientPortList.get(i).getTpId().getValue()));
- Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
+ Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
- oorClientPortList.get(i).getTpId().getValue()), nepUuid);
+ oorClientPortList.get(i).getTpId().getValue()), nepUuid1);
Name onedName = new NameBuilder()
.setValueName("eNodeEdgePoint_N")
.setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
TapiStringConstants.E_ODU));
onepl.put(onep.key(), onep);
}
+ // OTS network nep creation
+ for (int i = 0; i < oorNetworkPortList.size(); i++) {
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
+ oorNetworkPortList.get(i).getTpId().getValue()));
+ Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
+ (String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
+ .toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
+ Name onedName = new NameBuilder()
+ .setValueName("eNodeEdgePoint")
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
+ oorNetworkPortList.get(i).getTpId().getValue()))
+ .build();
+
+ OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
+ LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
+ String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS));
+ onepl.put(onep.key(), onep);
+ }
+ // OTSI_MC network nep creation
+ for (int i = 0; i < oorNetworkPortList.size(); i++) {
+ LOG.info("NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
+ oorNetworkPortList.get(i).getTpId().getValue()));
+ Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
+ (String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
+ .toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
+ Name onedName = new NameBuilder()
+ .setValueName("PhotMedNodeEdgePoint")
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
+ oorNetworkPortList.get(i).getTpId().getValue()))
+ .build();
+
+ OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
+ LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
+ String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC));
+ onepl.put(onep.key(), onep);
+ }
// create NodeRuleGroup
int count = 1;
LOG.info("ODU switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values());
.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
.setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)))
+ TapiStringConstants.XPDR)))
.setNodeEdgePointUuid(this.uuidMap.get(String.join(
"+", this.ietfNodeId, TapiStringConstants.DSR, tp.getValue())))
.build();
.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
.setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)))
+ TapiStringConstants.XPDR)))
.setNodeEdgePointUuid(this.uuidMap.get(String.join(
"+", this.ietfNodeId, TapiStringConstants.E_ODU, tp.getValue())))
.build();
nepList.put(nep2.key(), nep2);
}
}
+ //LOG.info("NEPLIST is {}", nepList.toString());
// Empty random creation of mandatory fields for avoiding errors....
CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
.setCostAlgorithm("Restricted Shortest Path - RSP")
.setAdministrativeState(adminState)
.setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED);
-// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
-// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
return onepBldr.build();
}
AdminStates admin = tp.augmentation(TerminationPoint1.class).getAdministrativeState();
State oper = tp.augmentation(TerminationPoint1.class).getOperationalState();
// PHOTONIC MEDIA nep
- LOG.info("PHOTO NEP = {}", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA,
+ LOG.info("PHOTO NEP = {}", String.join("+", this.ietfNodeId, nepPhotonicSublayer,
tp.getTpId().getValue()));
Name nepName = new NameBuilder()
.setValueName(nepPhotonicSublayer + "NodeEdgePoint")
.setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName()))
.setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName()))
.setLifecycleState(LifecycleState.INSTALLED)
-// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
-// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
.build();
onepMap.put(onep.key(), onep);
}
LayerProtocolName lpn) {
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
.service._interface.point.SupportedCepLayerProtocolQualifierInstances> 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);
.build());
sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
.service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
- .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE)
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
}
break;
}
}
- return sclpqiList;
+ return sclpqiList.stream().distinct().toList();
}
private List<SupportedCepLayerProtocolQualifierInstances> createSupportedLayerProtocolQualifier(TerminationPoint tp,
LayerProtocolName lpn) {
List<SupportedCepLayerProtocolQualifierInstances> 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);
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
- .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE)
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
}
break;
}
}
- return sclpqiList;
+ return sclpqiList.stream().distinct().toList();
}
public void convertXpdrToRdmLinks(List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
: link.getSource().getSourceNode().getValue();
String sourceTp = link.getSource().getSourceTp().getValue();
String sourceNodeQual = sourceNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA
- : TapiStringConstants.OTSI;
+ : TapiStringConstants.XPDR;
String destNode = (link.getDestination().getDestNode().getValue().contains("ROADM"))
? getIdBasedOnModelVersion(link.getDestination().getDestNode().getValue())
: link.getDestination().getDestNode().getValue();
String destTp = link.getDestination().getDestTp().getValue();
String destNodeQual = destNode.contains("ROADM") ? TapiStringConstants.PHTNC_MEDIA
- : TapiStringConstants.OTSI;
+ : TapiStringConstants.XPDR;
Link tapLink = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
TapiStringConstants.OMS_XPDR_RDM_LINK, sourceNodeQual, destNodeQual,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, adminState,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS, adminState,
operState, Set.of(LayerProtocolName.PHOTONICMEDIA),
Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), this.tapiTopoUuid);
linksToNotConvert.add(link.augmentation(Link1.class).getOppositeLink().getValue());
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.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.node.OwnedNodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPac;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.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.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.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;
private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiTopo.class);
private String ietfNodeId;
private OpenroadmNodeType ietfNodeType;
- private AdminStates ietfNodeAdminState;
- private State ietfNodeOperState;
- private List<TerminationPoint> oorClientPortList;
- private List<TerminationPoint> oorNetworkPortList;
- private OduSwitchingPools oorOduSwitchingPool;
+ private AdminStates ietfNodeAdminState = null;
+ private State ietfNodeOperState = null;
+ private List<TerminationPoint> oorClientPortList = null;
+ private List<TerminationPoint> oorNetworkPortList = null;
+ private OduSwitchingPools oorOduSwitchingPool = null;
private Uuid tapiTopoUuid;
private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
tapiNodes;
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.XPDR)).build();
+ Name namePhot = new NameBuilder().setValueName("otsi node name")
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR)).build();
Name nameNodeType = new NameBuilder().setValueName("Node Type")
.setValue(this.ietfNodeType.getName()).build();
Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU,
- LayerProtocolName.PHOTONICMEDIA);
+ LayerProtocolName.DIGITALOTN,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),
+ .Node dsrNode = createTapiNode(Map.of(nameDsr.key(), nameDsr, namePhot.key(), namePhot,nameNodeType.key(),
+ nameNodeType),
dsrLayerProtocols);
tapiNodes.put(dsrNode.key(), dsrNode);
-
}
public void convertLinks(Map<
? null
: this.tapiLink.setTapiOperationalState(
otnlink.augmentation(Link1.class).getOperationalState(), oppLnkOpState).getName();
-
+ // TODO: Handle not only OTU4 but also other cases
String prefix = otnlink.getLinkId().getValue().split("-")[0];
- String nodesQual = prefix.equals("OTU4") ? TapiStringConstants.OTSI : TapiStringConstants.DSR;
+ String nodesQual = TapiStringConstants.XPDR;
String tpsQual = prefix.equals("OTU4") ? TapiStringConstants.I_OTSI : TapiStringConstants.E_ODU;
LayerProtocolName layerProtocolName = prefix.equals("OTU4") ? LayerProtocolName.PHOTONICMEDIA
: LayerProtocolName.ODU;
Set.of(layerProtocolName.getName()), this.tapiTopoUuid);
linksToNotConvert.add(oppositeLinkId);
tapiLinks.put(tapLink.key(), tapLink);
+ LOG.debug("Links converted are as follow {}", tapiLinks.toString());
}
}
}
Name nameNodeType = new NameBuilder().setValueName("Node Type")
.setValue(OpenroadmNodeType.ROADM.getName()).build();
Set<LayerProtocolName> nodeLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA);
-
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiPhotonicNodes
= pruneTapiPhotonicNodes();
+ //At that stage, there is no Roadm in the tapiPhotonicNodes Map / only the transponders
Map<String, String> photonicNepUuisMap = convertListNodeWithListNepToMapForUuidAndName(tapiPhotonicNodes);
// nep creation for rdm infra abstraction node
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = createNepForRdmNode(photonicNepUuisMap.size());
// node rule group creation
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList
= createNodeRuleGroupForRdmNode(nodeUuid, onepMap.values());
+ // Empty random creation of mandatory fields for avoiding errors....
+ CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
+ .setCostAlgorithm("Restricted Shortest Path - RSP")
+ .setCostName("HOP_COUNT")
+ .setCostValue(TapiStringConstants.COST_HOP_VALUE)
+ .build();
+ LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
+ .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
+ .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
+ .setTrafficPropertyName("FIXED_LATENCY")
+ .build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
// build RDM infra node abstraction
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node rdmNode = new NodeBuilder()
.setUuid(nodeUuid)
.setLifecycleState(LifecycleState.INSTALLED)
.setOwnedNodeEdgePoint(onepMap)
.setNodeRuleGroup(nodeRuleGroupList)
+ .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
+ .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskParameterPac(riskParamPac)
.build();
tapiNodes.put(rdmNode.key(), rdmNode);
-
- // OMS link creation between photonoci nodes and RDM infra abstraction node
+ // OTS link creation between photonic nodes and RDM infra abstraction node :
+ //onepMap is a list of nep which Uuid is formed from THE ROADM node name, "nep" and an integer (order of the nep)
+ // It has absolutely no relationship with the real ROADM infrastructure (SRG ports)
+ //rdmInfraNepUuisMap is a Map <ROADMnodeUuuid--NepUuid; ROADMnodeName--nepName> built from onepMap
+ //photonicNepUuisMap is a Map <TSPnodeUuuid--eNepUuid; TSPnodeName--nepName> built from TapiPhotonicNode
Map<String, String> rdmInfraNepUuisMap = convertListNodeWithListNepToMapForUuidAndName(List.of(rdmNode));
if (photonicNepUuisMap.size() != rdmInfraNepUuisMap.size()) {
- LOG.warn("Unable to build OMS links between photonics nodes and RDM infrasctructure abstraction");
+ LOG.warn("Unable to build OTS links between photonics nodes and RDM infrasctructure abstraction");
} else {
- createTapiOmsLinks(photonicNepUuisMap, rdmInfraNepUuisMap);
+ //Tapi OtsLinks are created between Neps corresponding to the eNEPs of transponders (existing network ports)
+ //and Generic NEPS with abstracted names created in the ROADM infrastructure corresponding to tps mirroring
+ //transponders NETWORK PORTs. There is a simplification here considering that any network port of
+ //transponders will have a mirroring SRG client port in the ROADM infrastructure.
+ // TODO: Do not understand that we build OTS link without checking that existing transponder ports
+ //are effectively connected. Need some consolidation
+ createTapiOtsLinks(photonicNepUuisMap, rdmInfraNepUuisMap);
}
}
prunedTapiPhotonicNodes = new ArrayList<>();
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiPhotonicNodes
= this.tapiNodes.values().stream()
- .filter(n -> LayerProtocolName.PHOTONICMEDIA.equals(n.getLayerProtocolName().stream().findFirst()
- .orElseThrow()))
- .collect(Collectors.toList());
+ .filter(n -> n.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
+ .collect(Collectors.toList());
for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node
: tapiPhotonicNodes) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepM = new HashMap<>();
.setRuleType(ruleTypes)
.build();
ruleList.put(rule.key(), rule);
- if (layerProtocols.contains(LayerProtocolName.DSR)) {
+ if (layerProtocols.contains(LayerProtocolName.DSR)
+ || layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
- } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
- nodeUuid = getNodeUuid4Photonic(onepl, nodeRuleGroupList, ruleList);
} else {
LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
.getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
}
+ // Empty random creation of mandatory fields for avoiding errors....
+ CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
+ .setCostAlgorithm("Restricted Shortest Path - RSP")
+ .setCostName("HOP_COUNT")
+ .setCostValue(TapiStringConstants.COST_HOP_VALUE)
+ .build();
+ LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
+ .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
+ .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
+ .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
+ .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
+ .setTrafficPropertyName("FIXED_LATENCY")
+ .build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(nodeNames)
.setLifecycleState(LifecycleState.INSTALLED)
.setOwnedNodeEdgePoint(onepl)
.setNodeRuleGroup(nodeRuleGroupList)
+ .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
+ .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
+ .setRiskParameterPac(riskParamPac)
.build();
}
- private Uuid getNodeUuid4Photonic(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList,
- Map<RuleKey, Rule> ruleList) {
- Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI));
- // iNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, TapiStringConstants.I_OTSI));
- onepl.put(onep.key(), onep);
- }
- // eNep creation on otsi node
- for (int i = 0; i < oorNetworkPortList.size(); i++) {
- Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
- .toString());
- this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
- Name onedName = new NameBuilder()
- .setValueName("eNodeEdgePoint")
- .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- oorNetworkPortList.get(i).getTpId().getValue()))
- .build();
-
- OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
- LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
- String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI));
- onepl.put(onep.key(), onep);
- }
- // create NodeRuleGroup
- int count = 1;
- for (TerminationPoint tp : this.oorNetworkPortList) {
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
- nepList = new HashMap<>();
- 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.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)))
- .setNodeEdgePointUuid(
- this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.E_OTSI,
- tp.getTpId().getValue())))
- .build();
- nepList.put(inep.key(), inep);
- nepList.put(enep.key(), enep);
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(("otsi node rule group " + count).getBytes(Charset.forName("UTF-8")))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .build();
- nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeUuid;
- }
-
private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
Uuid nodeUuid;
- nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.DSR));
+ nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR));
// client nep creation on DSR/ODU node
for (int i = 0; i < oorClientPortList.size(); i++) {
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
TapiStringConstants.I_ODU));
onepl.put(onep.key(), onep);
}
+ // eNep creation on otsi node
+ for (int i = 0; i < oorNetworkPortList.size(); i++) {
+ Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
+ (String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
+ oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
+ .toString());
+ this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
+ oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
+ Name onedName = new NameBuilder()
+ .setValueName("eNodeEdgePoint")
+ .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
+ oorNetworkPortList.get(i).getTpId().getValue()))
+ .build();
+
+ OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
+ LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
+ String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS));
+ onepl.put(onep.key(), onep);
+ }
// create NodeRuleGroup
int count = 1;
for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) {
.NodeEdgePointBuilder()
.setTopologyUuid(tapiTopoUuid)
.setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
- TapiStringConstants.DSR)))
+ TapiStringConstants.XPDR)))
.setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
qual, tp.getValue())))
.build();
.setAdministrativeState(adminState)
.setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED);
-// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
-// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
if (withSip) {
onepBldr.setMappedServiceInterfacePoint(createSIP(1, oorTp, keyword));
}
.setDirection(Direction.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
.setAdministrativeState(AdministrativeState.UNLOCKED).setOperationalState(OperationalState.ENABLED)
.setLifecycleState(LifecycleState.INSTALLED)
-// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
-// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
.build();
onepMap.put(onep.key(), onep);
}
String nodeId) {
Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
for (int i = 0; i < nb; i++) {
+ //TODO : verify why i is not included to proceed Uuid
MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
.setServiceInterfacePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", nodeId,
tp.getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString()))
private List<SupportedCepLayerProtocolQualifierInstances> createSupportedCepLayerProtocolQualifier(
TerminationPoint tp, LayerProtocolName lpn) {
List<SupportedCepLayerProtocolQualifierInstances> 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);
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
- .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE)
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
}
break;
}
}
- return sclpqiList;
+ return sclpqiList.stream().distinct().toList();
}
- private void createTapiOmsLinks(Map<String, String> photonicNepUuisMap, Map<String, String> rdmInfraNepUuisMap) {
+ private void createTapiOtsLinks(Map<String, String> photonicNepUuisMap, Map<String, String> rdmInfraNepUuisMap) {
Iterator<Entry<String, String>> it1 = photonicNepUuisMap.entrySet().iterator();
Iterator<Entry<String, String>> it2 = rdmInfraNepUuisMap.entrySet().iterator();
while (it1.hasNext()) {
.setNodeEdgePointUuid(destUuidTp)
.build();
nepMap.put(destNep.key(), destNep);
- Name linkName = new NameBuilder().setValueName("OMS link name")
+ Name linkName = new NameBuilder().setValueName("OTS link name")
.setValue(String.join(" and ", photonicEntry.getValue(), rdmEntry.getValue()))
.build();
- Link omsLink = new LinkBuilder()
+ Link otsLink = new LinkBuilder()
.setUuid(new Uuid(
UUID.nameUUIDFromBytes((String.join(" and ", photonicEntry.getValue(), rdmEntry.getValue()))
.getBytes(Charset.forName("UTF-8")))
.setNodeEdgePoint(nepMap)
.setDirection(ForwardingDirection.BIDIRECTIONAL)
.build();
- this.tapiLinks.put(omsLink.key(), omsLink);
+ this.tapiLinks.put(otsLink.key(), otsLink);
}
}
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.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.NodeEdgePointRef;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODEEDGEPOINT;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPac;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey;
Map<Integer, String> xpdrMap = new HashMap<>();
for (Mapping mapping : networkMappings) {
Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- String nodeId = node.getNodeId() + TapiStringConstants.XPDR + xpdrNb;
+ String nodeId = node.getNodeId() + TapiStringConstants.XXPDR + xpdrNb;
if (!xpdrMap.containsKey(xpdrNb)) {
List<Mapping> xpdrNetMaps = node.nonnullMapping().values()
.stream().filter(k -> k.getLogicalConnectionPoint()
.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)
+ .setTargetObjectType(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE)
.setChangedAttributes(getChangedAttributes(changedOneps, mapping))
.setUuid(tapiTopoUuid)
.build();
LOG.error("Could not update TAPI links");
return;
}
+ int nbAffectedLinks = 0;
+ LOG.info("UUIDofAffectedONEPS = {} ", changedOneps.toString());
for (Link link : optTopology.orElseThrow().nonnullLink().values()) {
List<Uuid> linkNeps = Objects.requireNonNull(link.getNodeEdgePoint()).values().stream()
.map(NodeEdgePointRef::getNodeEdgePointUuid).collect(Collectors.toList());
+ LOG.info("LinkEndPointsUUID = {} for link Name {}", linkNeps.toString(), link.getName().toString());
if (!Collections.disjoint(changedOneps, linkNeps)) {
InstanceIdentifier<Link> linkIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.setAdministrativeState(transformAdminState(mapping.getPortAdminState()))
.setOperationalState(transformOperState(mapping.getPortOperState())).build();
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, linkIID, linkblr);
+ nbAffectedLinks++ ;
}
}
+ LOG.info("AffectedLinksNb = {} ", nbAffectedLinks);
this.networkTransactionService.commit().get();
} catch (InterruptedException | ExecutionException e) {
LOG.error("Could not update TAPI links");
.setAdministrativeState(transformAdminState(mapping.getPortAdminState()))
.setOperationalState(transformOperState(mapping.getPortOperState())).build();
this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, onepIID, onepblr);
+ LOG.info("UpdatedNEP {} of UUID {} to ADMIN {} OPER {}",
+ onep.getName().toString(), onep.getUuid(),
+ transformAdminState(mapping.getPortAdminState()),
+ transformOperState(mapping.getPortOperState()));
}
this.networkTransactionService.commit().get();
}
if (nodeId.contains("ROADM")) {
uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA))
.getBytes(StandardCharsets.UTF_8)).toString()));
- } else if (nodeId.contains("PDR") && mapping.getLogicalConnectionPoint().contains("CLIENT")) {
+ } else if (nodeId.contains("PDR")) {
+ LOG.debug("ANALYSING change in {}", nodeId);
int xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- String xpdrNodeId = nodeId + TapiStringConstants.XPDR + xpdrNb;
- uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.DSR))
- .getBytes(StandardCharsets.UTF_8)).toString()));
- } else if (nodeId.contains("PDR") && mapping.getLogicalConnectionPoint().contains("NETWORK")) {
- int xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
- String xpdrNodeId = nodeId + TapiStringConstants.XPDR + xpdrNb;
- uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.DSR))
- .getBytes(StandardCharsets.UTF_8)).toString()));
- uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.OTSI))
+ String xpdrNodeId = nodeId + TapiStringConstants.XXPDR + xpdrNb;
+ uuids.add(new Uuid(UUID.nameUUIDFromBytes((String.join("+", xpdrNodeId, TapiStringConstants.XPDR))
.getBytes(StandardCharsets.UTF_8)).toString()));
} else {
LOG.error("Updating this device is currently not supported");
OduSwitchingPools oorOduSwitchingPool) {
Map<NodeKey, Node> nodeMap = new HashMap<>();
LOG.info("creation of a DSR/ODU node for {}", nodeId);
- Uuid nodeUuidDsr = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.DSR))
+ Uuid nodeUuidDsr = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.XPDR))
.getBytes(StandardCharsets.UTF_8)).toString());
Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(
- String.join("+", nodeId, TapiStringConstants.DSR)).build();
+ String.join("+", nodeId, TapiStringConstants.XPDR)).build();
+ Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(
+ String.join("+", nodeId, TapiStringConstants.XPDR)).build();
Name nameNodeType = new NameBuilder().setValueName("Node Type")
.setValue(getNodeType(xponderType)).build();
- Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU);
- Node dsrNode = createTapiXpdrNode(Map.of(nameDsr.key(), nameDsr, nameNodeType.key(), nameNodeType),
- dsrLayerProtocols, nodeId, nodeUuidDsr, xpdrClMaps, xpdrNetMaps, xponderType, oorOduSwitchingPool);
+ Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU,
+ LayerProtocolName.DIGITALOTN, LayerProtocolName.PHOTONICMEDIA);
+ Node dsrNode = createTapiXpdrNode(Map.of(nameDsr.key(), nameDsr, nameOtsi.key(), nameOtsi, nameNodeType.key(),
+ nameNodeType), dsrLayerProtocols, nodeId, nodeUuidDsr, xpdrClMaps, xpdrNetMaps, xponderType,
+ oorOduSwitchingPool);
nodeMap.put(dsrNode.key(), dsrNode);
-
- // node creation [otsi]
- LOG.info("creation of an OTSi node for {}", nodeId);
- Uuid nodeUuidOtsi = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.OTSI))
- .getBytes(StandardCharsets.UTF_8)).toString());
- Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(
- String.join("+", nodeId, TapiStringConstants.OTSI)).build();
- Set<LayerProtocolName> otsiLayerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA);
- Node otsiNode = createTapiXpdrNode(Map.of(nameOtsi.key(), nameOtsi, nameNodeType.key(), nameNodeType),
- otsiLayerProtocols, nodeId, nodeUuidOtsi, xpdrClMaps, xpdrNetMaps, xponderType, null);
-
- nodeMap.put(otsiNode.key(), otsiNode);
-
- // transitional link cration between network nep of DSR/ODU node and iNep of otsi node
- LOG.info("creation of transitional links between DSR/ODU and OTSi nodes");
- Map<LinkKey, Link> linkMap = createTapiTransitionalLinks(nodeId, xpdrNetMaps);
- mergeLinkinTopology(linkMap);
-
return nodeMap;
}
private Node createTapiXpdrNode(Map<NameKey, Name> nameMap, Set<LayerProtocolName> layerProtocols,
String nodeId, Uuid nodeUuid, List<Mapping> xpdrClMaps, List<Mapping> xpdrNetMaps,
XpdrNodeTypes xponderType, OduSwitchingPools oorOduSwitchingPool) {
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
+
Map<RuleKey, Rule> ruleList = new HashMap<>();
Set<RuleType> ruleTypes = new HashSet<>();
ruleTypes.add(RuleType.FORWARDING);
.setRuleType(ruleTypes)
.build();
ruleList.put(rule.key(), rule);
- if (layerProtocols.contains(LayerProtocolName.DSR)) {
- // neps for dsr/odu layer
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> dsroduNeps =
- createXpdrDsrOduNeps(nodeId, xpdrClMaps, xpdrNetMaps, xponderType);
- onepl.putAll(dsroduNeps);
- nodeRuleGroupList = createNodeRuleGroupForDsrNode(nodeId, oorOduSwitchingPool, ruleList, onepl);
- } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
- // neps for photonic layer
- Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> phtmdNeps =
- createXpdrPhtnMdNeps(nodeId, xpdrNetMaps);
- onepl.putAll(phtmdNeps);
- nodeRuleGroupList = createNodeRuleGroupForOtsiNode(nodeId, xpdrNetMaps, ruleList);
- } else {
+ if (!(layerProtocols.contains(LayerProtocolName.DSR)
+ && layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA))) {
LOG.error("Undefined LayerProtocolName for {} node {}", nameMap.get(nameMap.keySet().iterator().next())
- .getValueName(), nameMap.get(nameMap.keySet().iterator().next()).getValue());
+ .getValueName(), nameMap.get(nameMap.keySet().iterator().next()).getValue());
}
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
+ onepl.putAll(createXpdrDsrOduNeps(nodeId, xpdrClMaps, xpdrNetMaps, xponderType));
+ Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = createNodeRuleGroupForDsrNode(
+ nodeId, oorOduSwitchingPool, ruleList, onepl);
+ onepl.putAll(createXpdrPhtnMdNeps(nodeId, xpdrNetMaps));
+
// Empty random creation of mandatory fields for avoiding errors....
CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
.setCostAlgorithm("Restricted Shortest Path - RSP")
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(nameMap)
.setDeliveryOrderCharacteristic("delivery order")
.setUnavailableTimeCharacteristic("unavailable time")
.setServerIntegrityProcessCharacteristic("server integrity process")
+ .setRiskParameterPac(riskParamPac)
.build();
}
List<Mapping> xpdrNetMaps) {
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
- // iNep creation on otsi node
- for (int i = 0; i < xpdrNetMaps.size(); i++) {
- Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.I_OTSI,
- xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString());
- Name onedName = new NameBuilder()
- .setValueName("iNodeEdgePoint")
- .setValue(String.join("+", nodeId, TapiStringConstants.I_OTSI,
- xpdrNetMaps.get(i).getLogicalConnectionPoint()))
- .build();
-
- List<SupportedIfCapability> newSupIfCapList =
- new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability());
-
- OwnedNodeEdgePoint onep = createNep(nepUuid1, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
- Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- true, String.join("+", nodeId, TapiStringConstants.I_OTSI), newSupIfCapList,
- transformOperState(xpdrNetMaps.get(i).getPortOperState()),
- transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
- onepl.put(onep.key(), onep);
- }
// eNep creation on otsi node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.E_OTSI,
+ (String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString());
Name onedName = new NameBuilder()
.setValueName("eNodeEdgePoint")
- .setValue(String.join("+", nodeId, TapiStringConstants.E_OTSI,
+ .setValue(String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
xpdrNetMaps.get(i).getLogicalConnectionPoint()))
.build();
OwnedNodeEdgePoint onep = createNep(nepUuid2, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- false, String.join("+", nodeId, TapiStringConstants.E_OTSI), newSupIfCapList,
+ true, String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS), newSupIfCapList,
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
}
- // Photonic Media Nep creation on otsi node
+ // OTSi_MC Nep creation on otsi node
for (int i = 0; i < xpdrNetMaps.size(); i++) {
Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA,
+ (String.join("+", nodeId, TapiStringConstants.OTSI_MC,
xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString());
Name onedName = new NameBuilder()
.setValueName("PhotMedNodeEdgePoint")
- .setValue(String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA,
+ .setValue(String.join("+", nodeId, TapiStringConstants.OTSI_MC,
xpdrNetMaps.get(i).getLogicalConnectionPoint()))
.build();
OwnedNodeEdgePoint onep = createNep(nepUuid3, xpdrNetMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA,
- false, String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA), newSupIfCapList,
+ false, String.join("+", nodeId, TapiStringConstants.OTSI_MC), newSupIfCapList,
transformOperState(xpdrNetMaps.get(i).getPortOperState()),
transformAdminState(xpdrNetMaps.get(i).getPortAdminState()));
onepl.put(onep.key(), onep);
OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(),
Map.of(onedName.key(), onedName),
- LayerProtocolName.ODU, LayerProtocolName.DSR, false,
+ LayerProtocolName.ODU, LayerProtocolName.DSR, true,
String.join("+", nodeId, TapiStringConstants.E_ODU), newSupIfCapList,
transformOperState(xpdrClMaps.get(i).getPortOperState()),
transformAdminState(xpdrClMaps.get(i).getPortAdminState()));
onepBldr.setDirection(Direction.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
.setAdministrativeState(adminState).setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED);
-// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
-// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
return onepBldr.build();
}
Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
// PHOTONIC MEDIA nep
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId,
- TapiStringConstants.PHTNC_MEDIA, tpId)).getBytes(StandardCharsets.UTF_8)).toString());
+ nepPhotonicSublayer, tpId)).getBytes(StandardCharsets.UTF_8)).toString());
Name nepName = new NameBuilder()
.setValueName(TapiStringConstants.PHTNC_MEDIA + "NodeEdgePoint")
- .setValue(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA, tpId))
+ .setValue(String.join("+", orNodeId, nepPhotonicSublayer, tpId))
.build();
List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
sclpqiList.add(
.setLinkPortRole(PortRole.SYMMETRIC)
.setAdministrativeState(adminState).setOperationalState(operState)
.setLifecycleState(LifecycleState.INSTALLED)
-// .setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
-// .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
.build();
onepMap.put(onep.key(), onep);
return onepMap;
ServiceInterfacePoint sip = createSIP(sipUuid, layerProtocol, tpid, nodeid, supportedInterfaceCapability,
operState, adminState);
this.sipMap.put(sip.key(), sip);
- LOG.info("SIP created {}", sip.getUuid());
// this.tapiSips.put(sip.key(), sip);
msipl.put(msip.key(), msip);
+ LOG.info("SIP created {}", sip.getUuid());
+ LOG.info("This SIP corresponds to SIP+nodeId {} + TpId {}", nodeid, tpid);
}
return msipl;
}
.setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
.setTrafficPropertyName("FIXED_LATENCY")
.build();
+ RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
+ .setRiskCharacteristicName("risk characteristic")
+ .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
+ .build();
+ RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
+ .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
+ .build();
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(Map.of(nodeNames.key(), nodeNames, nameNodeType.key(), nameNodeType))
.setDeliveryOrderCharacteristic("delivery order")
.setUnavailableTimeCharacteristic("unavailable time")
.setServerIntegrityProcessCharacteristic("server integrity process")
+ .setRiskParameterPac(riskParamPac)
.build();
}
return nodeRuleGroupMap;
}
- private Map<LinkKey, Link> createTapiTransitionalLinks(String nodeId, List<Mapping> xpdrNetMaps) {
- Map<LinkKey, Link> linkMap = new HashMap<>();
- for (Mapping mapping : xpdrNetMaps) {
- Link transiLink = tapiLink.createTapiLink(nodeId, mapping.getLogicalConnectionPoint(), nodeId,
- mapping.getLogicalConnectionPoint(), TapiStringConstants.TRANSITIONAL_LINK, TapiStringConstants.DSR,
- TapiStringConstants.OTSI, TapiStringConstants.I_ODU, TapiStringConstants.I_OTSI,
- "inService", "inService", Set.of(LayerProtocolName.ODU, LayerProtocolName.PHOTONICMEDIA),
- Set.of(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()),
- this.tapiTopoUuid);
- linkMap.put(transiLink.key(), transiLink);
- }
- // return a map of links and then we can do merge the corresponding link map into the topology context
- return linkMap;
- }
-
private OduSwitchingPools createTpdrSwitchPool(List<Mapping> xpdrNetMaps) {
Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
int count = 1;
.build();
}
- private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForOtsiNode(String nodeId,
- List<Mapping> xpdrNetMaps,
- Map<RuleKey, Rule> ruleList) {
- Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
- // create NodeRuleGroup
- int count = 1;
- for (Mapping tpMapping : xpdrNetMaps) {
- Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
- NodeEdgePoint inep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
- TapiStringConstants.OTSI)).getBytes(StandardCharsets.UTF_8)).toString()))
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
- TapiStringConstants.I_OTSI, tpMapping.getLogicalConnectionPoint()))
- .getBytes(StandardCharsets.UTF_8)).toString()))
- .build();
- NodeEdgePoint enep = new NodeEdgePointBuilder()
- .setTopologyUuid(this.tapiTopoUuid)
- .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId,
- TapiStringConstants.OTSI)).getBytes(StandardCharsets.UTF_8)).toString()))
- .setNodeEdgePointUuid(new Uuid(UUID.nameUUIDFromBytes(
- (String.join("+", nodeId, TapiStringConstants.E_OTSI,
- tpMapping.getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString()))
- .build();
- nepList.put(inep.key(), inep);
- nepList.put(enep.key(), enep);
- // Empty random creation of mandatory fields for avoiding errors....
- CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
- .setCostAlgorithm("Restricted Shortest Path - RSP")
- .setCostName("HOP_COUNT")
- .setCostValue(TapiStringConstants.COST_HOP_VALUE)
- .build();
- LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
- .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
- .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
- .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
- .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
- .setTrafficPropertyName("FIXED_LATENCY")
- .build();
- RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
- .setRiskCharacteristicName("risk characteristic")
- .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
- .build();
- NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
- .setUuid(new Uuid(
- UUID.nameUUIDFromBytes(("otsi node rule group " + count).getBytes(StandardCharsets.UTF_8))
- .toString()))
- .setRule(ruleList)
- .setNodeEdgePoint(nepList)
- .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
- .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
- .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
- .build();
- nodeRuleGroupMap.put(nodeRuleGroup.key(), nodeRuleGroup);
- count++;
- }
- return nodeRuleGroupMap;
- }
-
private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForDsrNode(String nodeId,
OduSwitchingPools oorOduSwitchingPool,
Map<RuleKey, Rule> ruleList,
.build());
sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
.service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
- .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE)
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
}
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
- .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROMS.VALUE)
+ .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
.setNumberOfCepInstances(Uint64.valueOf(0))
.build());
}
String destTp = input.getDegZTp();
Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
TapiStringConstants.OMS_RDM_RDM_LINK, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp),
this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
String sourceTp = input.getNetworkTp();
Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp,
TapiStringConstants.OMS_XPDR_RDM_LINK, TapiStringConstants.OTSI, TapiStringConstants.PHTNC_MEDIA,
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp),
this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
String destTp = link.getDestination().getDestTp().getValue();
putTapiLinkInTopology(this.tapiLink.createTapiLink(srcNode, srcTp, destNode, destTp,
TapiStringConstants.OMS_XPDR_RDM_LINK, getQual(srcNode), getQual(destNode),
- TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
+ TapiStringConstants.PHTNC_MEDIA_OTS, TapiStringConstants.PHTNC_MEDIA_OTS,
link1.getAdministrativeState().getName(), link1.getOperationalState().getName(),
Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()),
tapiTopoUuid));
if (node.contains("ROADM")) {
return TapiStringConstants.PHTNC_MEDIA;
}
- return TapiStringConstants.OTSI;
+ return TapiStringConstants.XPDR;
}
private boolean oppositeLinkExists(LinkId oppositeLink) {
this.tapiLink = tapiLink;
}
- public ImmutableClassToInstanceMap<Rpc<?, ?>> registerRPCs() {
- return ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
- .put(GetNodeDetails.class, this::getNodeDetails)
- .put(GetTopologyDetails.class, this::getTopologyDetails)
- .put(GetNodeEdgePointDetails.class, this::getNodeEdgePointDetails)
- .put(GetLinkDetails.class, this::getLinkDetails)
- .put(GetTopologyList.class, this::getTopologyList)
- .put(GetServiceInterfacePointDetails.class, this::getServiceInterfacePointDetails)
- .put(GetServiceInterfacePointList.class, this::getServiceInterfacePointList)
- .put(UpdateServiceInterfacePoint.class, this::updateServiceInterfacePoint)
- .build();
- }
-
@Override
public ListenableFuture<RpcResult<GetNodeDetailsOutput>> getNodeDetails(GetNodeDetailsInput input) {
// TODO Auto-generated method stub
@Override
public ListenableFuture<RpcResult<GetTopologyDetailsOutput>> getTopologyDetails(GetTopologyDetailsInput input) {
// TODO -> Add check for Full T0 Multilayer
- List<String> topoNameList = null;
- try {
- topoNameList = topologyUtils.readTopologyName(input.getTopologyId());
- } catch (TapiTopologyException e) {
- LOG.error("Topology {} not found in datastore", input.getTopologyId());
- return RpcResultBuilder.<GetTopologyDetailsOutput>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<TopologyKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology>
- topologyMap = context.augmentation(Context1.class).getTopologyContext().getTopology();
- if (!(topologyMap != null && topologyMap.containsKey(new TopologyKey(topoUuid)))) {
- LOG.error("Topology {} not found in datastore", input.getTopologyId());
- return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
- .withError(ErrorType.RPC, "Invalid Topology name")
- .buildFuture();
- }
- 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()
- .setTopology(this.topologyUtils.transformTopology(topology))
- .build())
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
+ Charset.forName("UTF-8"))).toString());
+ if (input.getTopologyId().equals(topologyUuid)) {
+ Context context = this.tapiContext.getTapiContext();
+ Map<TopologyKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology>
+ topologyMap = context.augmentation(Context1.class).getTopologyContext().getTopology();
+ if (topologyMap == null || !topologyMap.containsKey(new TopologyKey(topologyUuid))) {
+ LOG.error("Topology {} not found in datastore", input.getTopologyId());
+ return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
+ .withError(ErrorType.RPC, "Invalid Topology name")
.buildFuture();
}
- LOG.error("Invalid TAPI topology name");
- return RpcResultBuilder.<GetTopologyDetailsOutput>failed()
- .withError(ErrorType.RPC, "Invalid Topology name")
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology
+ topology = topologyMap.get(new TopologyKey(topologyUuid));
+ return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder()
+ .setTopology(this.topologyUtils.transformTopology(topology))
+ .build())
.buildFuture();
}
- Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes(
+ topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes(
Charset.forName("UTF-8"))).toString());
try {
LOG.info("Building TAPI Topology abstraction for {}", input.getTopologyId());
}
}
+ @Override
+ public ListenableFuture<RpcResult<GetTopologyListOutput>> getTopologyList(GetTopologyListInput input) {
+ // TODO Auto-generated method stub
+ // TODO -> maybe we get errors when having CEPs?
+ Map<TopologyKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology>
+ topologyMap = this.tapiContext.getTopologyContext();
+ if (topologyMap.isEmpty()) {
+ LOG.error("No topologies exist in tapi context");
+ return RpcResultBuilder.<GetTopologyListOutput>failed()
+ .withError(ErrorType.APPLICATION, "No topologies exist in tapi context")
+ .buildFuture();
+ }
+ Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.TopologyKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.Topology>
+ newTopoMap = new HashMap<>();
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology
+ topo:topologyMap.values()) {
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.Topology
+ newTopo = new org.opendaylight.yang.gen.v1.urn
+ .onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.TopologyBuilder(topo).build();
+ newTopoMap.put(newTopo.key(), newTopo);
+ }
+ return RpcResultBuilder.success(new GetTopologyListOutputBuilder().setTopology(newTopoMap).build())
+ .buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<GetServiceInterfacePointListOutput>>
+ getServiceInterfacePointList(GetServiceInterfacePointListInput input) {
+ Map<ServiceInterfacePointKey, ServiceInterfacePoint> sips =
+ this.tapiContext.getTapiContext().getServiceInterfacePoint();
+ if (sips == null || sips.isEmpty()) {
+ return RpcResultBuilder.<GetServiceInterfacePointListOutput>failed()
+ .withError(ErrorType.RPC, "No sips in datastore")
+ .buildFuture();
+ }
+ Map<SipKey, Sip> outSipMap = new HashMap<>();
+ for (ServiceInterfacePoint sip : sips.values()) {
+ Sip si = new SipBuilder(sip).build();
+ outSipMap.put(si.key(), si);
+ }
+ return RpcResultBuilder
+ .success(new GetServiceInterfacePointListOutputBuilder().setSip(outSipMap).build())
+ .buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<UpdateServiceInterfacePointOutput>>
+ updateServiceInterfacePoint(UpdateServiceInterfacePointInput input) {
+ return RpcResultBuilder.<UpdateServiceInterfacePointOutput>failed()
+ .withError(ErrorType.RPC, ErrorTag.OPERATION_NOT_SUPPORTED, "RPC not implemented yet")
+ .buildFuture();
+ }
+
@Override
public ListenableFuture<RpcResult<GetNodeEdgePointDetailsOutput>> getNodeEdgePointDetails(
GetNodeEdgePointDetailsInput input) {
.withError(ErrorType.RPC, "Invalid Link name")
.buildFuture();
}
+ LOG.info("debug link is : {}", link.getName().toString());
return RpcResultBuilder.success(new GetLinkDetailsOutputBuilder().setLink(new LinkBuilder(link).build())
.build()).buildFuture();
}
- @Override
- public ListenableFuture<RpcResult<GetTopologyListOutput>> getTopologyList(GetTopologyListInput input) {
- // TODO Auto-generated method stub
- // TODO -> maybe we get errors when having CEPs?
- Map<TopologyKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology>
- topologyMap = this.tapiContext.getTopologyContext();
- if (topologyMap.isEmpty()) {
- LOG.error("No topologies exist in tapi context");
- return RpcResultBuilder.<GetTopologyListOutput>failed()
- .withError(ErrorType.APPLICATION, "No topologies exist in tapi context")
- .buildFuture();
- }
- Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.TopologyKey,
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.Topology>
- newTopoMap = new HashMap<>();
- for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology
- topo:topologyMap.values()) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.Topology
- newTopo = new org.opendaylight.yang.gen.v1.urn
- .onf.otcc.yang.tapi.topology.rev221121.get.topology.list.output.TopologyBuilder(topo).build();
- newTopoMap.put(newTopo.key(), newTopo);
- }
- return RpcResultBuilder.success(new GetTopologyListOutputBuilder().setTopology(newTopoMap).build())
- .buildFuture();
- }
-
@Override
public ListenableFuture<RpcResult<GetServiceInterfacePointDetailsOutput>>
getServiceInterfacePointDetails(GetServiceInterfacePointDetailsInput input) {
.buildFuture();
}
- @Override
- public ListenableFuture<RpcResult<GetServiceInterfacePointListOutput>>
- getServiceInterfacePointList(GetServiceInterfacePointListInput input) {
- Map<ServiceInterfacePointKey, ServiceInterfacePoint> sips =
- this.tapiContext.getTapiContext().getServiceInterfacePoint();
- if (sips == null || sips.isEmpty()) {
- return RpcResultBuilder.<GetServiceInterfacePointListOutput>failed()
- .withError(ErrorType.RPC, "No sips in datastore")
- .buildFuture();
- }
- Map<SipKey, Sip> outSipMap = new HashMap<>();
- for (ServiceInterfacePoint sip : sips.values()) {
- Sip si = new SipBuilder(sip).build();
- outSipMap.put(si.key(), si);
- }
- return RpcResultBuilder
- .success(new GetServiceInterfacePointListOutputBuilder().setSip(outSipMap).build())
- .buildFuture();
- }
-
- @Override
- public ListenableFuture<RpcResult<UpdateServiceInterfacePointOutput>>
- updateServiceInterfacePoint(UpdateServiceInterfacePointInput input) {
- return RpcResultBuilder.<UpdateServiceInterfacePointOutput>failed()
- .withError(ErrorType.RPC, ErrorTag.OPERATION_NOT_SUPPORTED, "RPC not implemented yet")
- .buildFuture();
+ public ImmutableClassToInstanceMap<Rpc<?, ?>> registerRPCs() {
+ return ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
+ .put(GetNodeDetails.class, this::getNodeDetails)
+ .put(GetTopologyDetails.class, this::getTopologyDetails)
+ .put(GetNodeEdgePointDetails.class, this::getNodeEdgePointDetails)
+ .put(GetLinkDetails.class, this::getLinkDetails)
+ .put(GetTopologyList.class, this::getTopologyList)
+ .put(GetServiceInterfacePointDetails.class, this::getServiceInterfacePointDetails)
+ .put(GetServiceInterfacePointList.class, this::getServiceInterfacePointList)
+ .put(UpdateServiceInterfacePoint.class, this::updateServiceInterfacePoint)
+ .build();
}
private Topology createAbstracted100GTpdrTopology(Topology topology) {
}
List<String> nameList = new ArrayList<>();
for (Map.Entry<NameKey, Name> entry : topology.getName().entrySet()) {
- nameList.add(entry.getValue().getValueName());
+ nameList.add(entry.getValue().getValue());
}
+ LOG.debug("Topology nameList {} = ", nameList.toString());
return nameList;
}
connectivityContext);
this.networkTransactionService.commit().get();
LOG.info("TAPI connectivity merged successfully.");
+ LOG.debug("TAPI connectivity merged successfully for services {}", connServMap.entrySet().iterator()
+ .next().getKey().toString());
} catch (InterruptedException | ExecutionException e) {
LOG.error("Failed to merge TAPI connectivity", e);
}
.build();
}
+ @Override
public AdministrativeState setTapiAdminState(String adminState) {
if (adminState == null) {
return null;
: AdministrativeState.LOCKED;
}
+ @Override
public AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2) {
if (adminState1 == null || adminState2 == null) {
return null;
? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED;
}
+ @Override
public OperationalState setTapiOperationalState(String operState) {
if (operState == null) {
return null;
? OperationalState.ENABLED : OperationalState.DISABLED;
}
+ @Override
public OperationalState setTapiOperationalState(State operState1, State operState2) {
if (operState1 == null || operState2 == null) {
return null;
? OperationalState.ENABLED : OperationalState.DISABLED;
}
+ @Override
public String getOperState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) {
Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
- TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
- TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onep1IID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid))
}
}
+ @Override
public String getAdminState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) {
Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId,
- TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString());
Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId,
- TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
+ TapiStringConstants.PHTNC_MEDIA_OTS, destTpId).getBytes(Charset.forName("UTF-8"))).toString());
InstanceIdentifier<OwnedNodeEdgePoint> onep1IID = InstanceIdentifier.builder(Context.class)
.augmentation(Context1.class).child(TopologyContext.class)
.child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid))
import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.transportpce.test.utils.TopologyDataUtils;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommon;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.CreateConnectivityServiceInput;
}, executorService);
endSignal.await();
-
+ LOG.info("INPUT= {}", input.toString());
RpcResult<CreateConnectivityServiceOutput> rpcResult = result.get();
assertTrue(rpcResult.isSuccessful());
}
OrgOpenroadmServiceService serviceHandler = new ServicehandlerImpl(rpcProviderService, pathComputationService,
rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl,
networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations);
-
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils,
tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService);
ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> result =
@Test
void deleteConnServiceShouldBeSuccessForExistingService() throws ExecutionException, InterruptedException {
- when(rendererServiceOperations.serviceDelete(any(), any())).thenReturn(Futures.immediateFuture(any()));
+ ConfigurationResponseCommon crc = new ConfigurationResponseCommonBuilder()
+ .setRequestId("request 1")
+ .setResponseCode("OK")
+ .setAckFinalIndicator("requestProcessed").build();
+ ServiceDeleteOutput sdo = new ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(crc)
+ .build();
+ when(rendererServiceOperations.serviceDelete(any(), any()))
+ .thenReturn(Futures.immediateFuture(sdo));
OrgOpenroadmServiceService serviceHandler = new ServicehandlerImpl(rpcProviderService, pathComputationService,
rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl,
TapiConnectivityImpl tapiConnectivity = new TapiConnectivityImpl(serviceHandler, tapiContext, connectivityUtils,
tapipceNotificationHandler, tapirendererNotificationHandler, networkTransactionService);
-
ServiceCreateInput createInput = TapiConnectivityDataUtils.buildServiceCreateInput();
serviceDataStoreOperations.createService(createInput);
tapiContext.updateConnectivityContext(TapiConnectivityDataUtils.createConnService(), new HashMap<>());
-
DeleteConnectivityServiceInput input = TapiConnectivityDataUtils.buildConnServiceDeleteInput();
ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> result =
tapiConnectivity.deleteConnectivityService(input);
}, executorService);
endSignal.await();
-
+ LOG.debug("RESULT = {}", result.toString());
RpcResult<DeleteConnectivityServiceOutput> rpcResult = result.get();
assertTrue(rpcResult.isSuccessful());
}
-}
\ No newline at end of file
+}
import 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.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.dsr.rev221121.DIGITALSIGNALTYPE100GigE;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
OwnedNodeEdgePoint inepN = dsrNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inetworkNepUuid));
assertNull(inepN.getAdministrativeState(), "Administrative State should not be present");
assertNull(inepN.getOperationalState(), "Operational State should not be present");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- 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());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertNull(enep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(enep.getOperationalState(), "Operational State should not be present");
-
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertNull(inep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(inep.getOperationalState(), "Operational State should not be present");
-
- Uuid photnepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint photnep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(photnepUuid));
- assertNull(photnep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(photnep.getOperationalState(), "Operational State should not be present");
}
@Test
ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
assertEquals(AdministrativeState.LOCKED, inepN.getAdministrativeState(),
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, inepN.getOperationalState(), "Operational State should be Disabled");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- 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());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid photnepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint photnep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(photnepUuid));
- assertEquals(AdministrativeState.LOCKED, photnep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, photnep.getOperationalState(), "Operational State should be Disabled");
}
@Test
ConvertORTopoToTapiFullTopo tapiFactory = new ConvertORTopoToTapiFullTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, inepN.getOperationalState(), "Operational State should be Disabled");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- 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());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
-
- Uuid photnepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint photnep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(photnepUuid));
- assertEquals(AdministrativeState.LOCKED, photnep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, photnep.getOperationalState(), "Operational State should be Disabled");
}
@Test
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(tapiNodes.get(1), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "tpdr", "XPDR-A1-XPDR1");
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> tapiLinks
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(1), dsrNodeUuid, otsiNodeUuid,
- "XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1", "XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1", "XPDR-A1-XPDR1");
+ checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1");
}
@Test
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "mux", "SPDR-SA1-XPDR1");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "mux", "SPDR-SA1-XPDR1");
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> tapiLinks
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR1+iODU+XPDR1-NETWORK1", "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1", "SPDR-SA1-XPDR1");
}
@Test
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(4, tapiFactory.getTapiLinks().size(), "Link list size should be 4");
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "switch", "SPDR-SA1-XPDR2");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "switch", "SPDR-SA1-XPDR2");
-
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> tapiLinks
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(2), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR2+iODU+XPDR2-NETWORK4", "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK4", "SPDR-SA1-XPDR2");
}
@Test
= tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList());
Uuid roadmNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkOtsiNode(tapiNodes.get(0), roadmNodeUuid, "roadm", "ROADM-A1");
+ checkOtsiNode(tapiNodes.get(getNodeRank("ROADM-A1", tapiNodes)), roadmNodeUuid, "roadm", "ROADM-A1");
}
@Test
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
= tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList());
+ int myInt = 0;
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node : tapiNodes) {
+ if (node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && !node.getLayerProtocolName().contains(LayerProtocolName.DSR)) {
+ LOG.info("LOOP ROADM node found at rank {}, with Name {} and Uuid {}",
+ myInt, node.getName().toString(), node.getUuid());
+ }
+ myInt++;
+ }
Uuid roadmaNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkOtsiNode(tapiNodes.get(1), roadmaNodeUuid, "roadm", "ROADM-A1");
+ LOG.info("ROADM node found at rank {} from getrank", getNodeRank("ROADM-A1", tapiNodes));
+ checkOtsiNode(tapiNodes.get(getNodeRank("ROADM-A1", tapiNodes)), roadmaNodeUuid, "roadm", "ROADM-A1");
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> links
= tapiFactory.getTapiLinks().values().stream()
.toString());
Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-C1+PHOTONIC_MEDIA".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX"
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-A1+PHOTONIC_MEDIA_OTS+DEG2-TTP-TXRX"
.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRX")
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-C1+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid linkUuid =
new Uuid(UUID.nameUUIDFromBytes(
- "ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX"
+ "ROADM-C1+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA_OTS+DEG2-TTP-TXRX"
.getBytes(Charset.forName("UTF-8"))).toString());
checkOmsLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "ROADM-C1+PHOTONIC_MEDIA+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA+DEG2-TTP-TXRX");
+ "ROADM-C1+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRXtoROADM-A1+PHOTONIC_MEDIA_OTS+DEG2-TTP-TXRX");
}
@Test
.collect(Collectors.toList());
xponderInLinkList.addAll(xponderOutLinkList);
tapiFactory.convertXpdrToRdmLinks(xponderInLinkList);
- assertEquals(3, tapiFactory.getTapiNodes().size(), "Node list size should be 3");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
+ assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2 (XPDR, DSR-ODU merged; ROADM)");
+ assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1 : no more transitional link");
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
= tapiFactory.getTapiNodes().values().stream()
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
Uuid roadmNodeUuid = new Uuid(UUID.nameUUIDFromBytes((roadmA.getNodeId().getValue() + "+PHOTONIC_MEDIA")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkOtsiNode(tapiNodes.get(1), roadmNodeUuid, "roadm", "ROADM-A1");
+ checkOtsiNode(tapiNodes.get(getNodeRank("ROADM-A1", tapiNodes)), roadmNodeUuid, "roadm", "ROADM-A1");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> links
- = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-A1+PHOTONIC_MEDIA".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1"
+ LOG.info("ROADM-A1+PHOTONIC_MEDIA UUID is {}", node2Uuid);
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRX")
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("ROADM-A1+PHOTONIC_MEDIA_OTS+SRG1-PP2-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid linkUuid =
new Uuid(UUID.nameUUIDFromBytes(
- "ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1"
+ "ROADM-A1+PHOTONIC_MEDIA_OTS+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
- checkXpdrRdmLink(links.get(1), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "ROADM-A1+PHOTONIC_MEDIA+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA+XPDR1-NETWORK1");
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link> links
+ = tapiFactory.getTapiLinks().values().stream()
+ .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
+ .collect(Collectors.toList());
+ checkXpdrRdmLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
+ "ROADM-A1+PHOTONIC_MEDIA_OTS+SRG1-PP2-TXRXtoSPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1");
}
private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.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(),
+ Uuid node9Uuid, String dsrNodeType, String nodeId) {
+ assertEquals(node9Uuid, node.getUuid(), "incorrect node uuid");
+ assertEquals(nodeId + "+XPONDER", node.getName().get(new NameKey("dsr/odu node name")).getValue(),
"incorrect node name");
assertEquals(AdministrativeState.UNLOCKED, node.getAdministrativeState(),
"administrative state should be UNLOCKED");
assertEquals(OperationalState.ENABLED, node.getOperationalState(), "operational state should be ENABLED");
assertThat("one value-name should be 'dsr/odu node name'",
new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("dsr/odu node name")));
- assertEquals(2, node.getLayerProtocolName().size(), "dsr node should manage 2 protocol layers : dsr and odu");
+ assertEquals(4, node.getLayerProtocolName().size(), "dsr node should manage 4 protocol layers : dsr and odu"
+ + " DIGITALOTN, PHOTONICMEDIA");
assertThat("dsr node should manage 2 protocol layers : dsr and odu",
node.getLayerProtocolName(), hasItems(LayerProtocolName.DSR, LayerProtocolName.ODU));
List<OwnedNodeEdgePoint> inepsN = node.nonnullOwnedNodeEdgePoint().values().stream()
List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForSwitchDSR(nrgList, client4NepUuid, enetworkNepUuid, nodeUuid);
+ checkNodeRuleGroupForSwitchDSR(nrgList, client4NepUuid, enetworkNepUuid, node9Uuid);
break;
case "mux":
nepsC = node.nonnullOwnedNodeEdgePoint().values().stream()
List<NodeRuleGroup> nrgList2 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForMuxDSR(nrgList2, client3NepUuid, enetworkNepUuid2, nodeUuid);
+ checkNodeRuleGroupForMuxDSR(nrgList2, client3NepUuid, enetworkNepUuid2, node9Uuid);
break;
case "tpdr":
nepsC = node.nonnullOwnedNodeEdgePoint().values().stream()
List<NodeRuleGroup> nrgList3 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForTpdrDSR(nrgList3, client1NepUuid, enetworkNepUuid3, nodeUuid);
+ checkNodeRuleGroupForTpdrDSR(nrgList3, client1NepUuid, enetworkNepUuid3, node9Uuid);
break;
default:
fail();
private void checkOtsiNode(
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node,
Uuid nodeUuid, String otsiNodeType, String nodeId) {
+ if (!node.getUuid().equals(nodeUuid)) {
+ LOG.info("ERRORUUID on Node.getNodeId {}, NodeId {}", node.getName().toString(), nodeId);
+ LOG.info("ERRORUUID TapiUuid {}, transmitted Node Uuid {}", node.getUuid(), nodeUuid);
+ }
assertEquals(nodeUuid, node.getUuid(), "incorrect node uuid");
List<OwnedNodeEdgePoint> nepsI = null;
List<OwnedNodeEdgePoint> nepsE = null;
List<OwnedNodeEdgePoint> nepsP = null;
- List<OwnedNodeEdgePoint> nepsMc = null;
- List<OwnedNodeEdgePoint> nepsOtsimc = null;
+ List<OwnedNodeEdgePoint> nepsOMS = null;
+ List<OwnedNodeEdgePoint> nepsOTS = null;
List<OwnedNodeEdgePoint> nepsPhot = null;
if (!otsiNodeType.equals("roadm")) {
- assertEquals(nodeId + "+OTSi", node.getName().get(new NameKey("otsi node name")).getValue(),
+ assertEquals(nodeId + "+XPONDER", node.getName().get(new NameKey("dsr/odu node name")).getValue(),
"incorrect node name");
assertThat("one value-name should be 'dsr/odu node name'",
- new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("otsi node name")));
+ new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("dsr/odu node name")));
nepsI = node.nonnullOwnedNodeEdgePoint().values().stream()
.filter(n -> n.getName().containsKey(new NameKey("iNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
"incorrect node name");
assertThat("one value-name should be 'dsr/odu node name'",
new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("roadm node name")));
- nepsMc = node.nonnullOwnedNodeEdgePoint().values().stream()
- .filter(n -> n.getName().containsKey(new NameKey("MEDIA_CHANNELNodeEdgePoint")))
+ nepsOMS = node.nonnullOwnedNodeEdgePoint().values().stream()
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OMSNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
.collect(Collectors.toList());
- nepsOtsimc = node.nonnullOwnedNodeEdgePoint().values().stream()
- .filter(n -> n.getName().containsKey(new NameKey("OTSi_MEDIA_CHANNELNodeEdgePoint")))
+ nepsOTS = node.nonnullOwnedNodeEdgePoint().values().stream()
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OTSNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
.collect(Collectors.toList());
nepsPhot = node.nonnullOwnedNodeEdgePoint().values().stream()
- .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIANodeEdgePoint")))
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OMSNodeEdgePoint")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
.collect(Collectors.toList());
+ nepsPhot.addAll(node.nonnullOwnedNodeEdgePoint().values().stream()
+ .filter(n -> n.getName().containsKey(new NameKey("PHOTONIC_MEDIA_OTSNodeEdgePoint")))
+ .sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
+ .collect(Collectors.toList()));
}
assertEquals(AdministrativeState.UNLOCKED, node.getAdministrativeState(),
"administrative state should be UNLOCKED");
checkNepOtsiNode(nep1, inepUuid, nodeId + "+iOTSi+XPDR2-NETWORK2", "iNodeEdgePoint", true);
OwnedNodeEdgePoint nep2 = nepsE.get(0);
Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+XPDR2-NETWORK2")
+ .getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepOtsiNode(nep2, enepUuid, nodeId + "+eOTSi+XPDR2-NETWORK2", "eNodeEdgePoint", false);
+ checkNepOtsiNode(nep2, enepUuid, nodeId + "+PHOTONIC_MEDIA_OTS+XPDR2-NETWORK2",
+ "eNodeEdgePoint", false);
OwnedNodeEdgePoint photNep = nepsP.get(1);
Uuid pnepUuid = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA+XPDR2-NETWORK2")
assertEquals(1, nepsP.size(), "Mux-OTSi node should have 1 photNEPs");
OwnedNodeEdgePoint nep3 = nepsE.get(0);
Uuid enepUuid2 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
+ .getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepOtsiNode(nep3, enepUuid2, nodeId + "+eOTSi+XPDR1-NETWORK1", "eNodeEdgePoint", false);
+ checkNepOtsiNode(nep3, enepUuid2, nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1",
+ "eNodeEdgePoint", false);
OwnedNodeEdgePoint nep4 = nepsI.get(0);
Uuid inepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
assertEquals(2, nepsP.size(), "Tpdr-OTSi node should have 2 photNEPs");
OwnedNodeEdgePoint nep5 = nepsE.get(0);
Uuid enepUuid3 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
+ .getBytes(Charset.forName("UTF-8")))
.toString());
- checkNepOtsiNode(nep5, enepUuid3, nodeId + "+eOTSi+XPDR1-NETWORK1", "eNodeEdgePoint", false);
+ checkNepOtsiNode(nep5, enepUuid3, nodeId + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1",
+ "eNodeEdgePoint", false);
OwnedNodeEdgePoint nep6 = nepsI.get(0);
Uuid inepUuid3 = new Uuid(
UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
checkNodeRuleGroupForTpdrOTSi(nrgList3, enepUuid3, inepUuid3, nodeUuid);
break;
case "roadm":
- assertEquals(10, nepsMc.size(), "Roadm node should have 10 MC NEPs");
- assertEquals(10, nepsOtsimc.size(), "Roadm node should have 10 OTSiMC NEPs");
- assertEquals(10, nepsPhot.size(), "Roadm node should have 10 PHOT_MEDIA NEPs");
+// assertEquals(0, nepsMc.size(), "MC NEP no more configured, Roadm node should have 0 MC NEPs");
+// assertEquals(0, nepsOtsimc.size(), "Roadm node should have 10 OTSiMC NEPs");
+ assertEquals(12, nepsPhot.size(), "Roadm node should have 12 PHOT_MEDIA NEPs (2x4 OTS +2x(OTS+OMS)");
// For Degree node
- OwnedNodeEdgePoint nep7 = nepsMc.get(6);
+ OwnedNodeEdgePoint nep7 = nepsOMS.get(getRank("DEG1-TTP", nepsOMS));
Uuid mcnepUuid3 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+MEDIA_CHANNEL+DEG1-TTP-TXRX").getBytes(Charset.forName("UTF-8")))
- .toString());
- checkNepOtsiRdmNode(nep7, mcnepUuid3, nodeId + "+MEDIA_CHANNEL+DEG1-TTP-TXRX",
- "MEDIA_CHANNELNodeEdgePoint", false);
- OwnedNodeEdgePoint nep8 = nepsOtsimc.get(0);
- Uuid otmcnepUuid3 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+OTSi_MEDIA_CHANNEL+DEG1-TTP-TXRX")
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX").getBytes(Charset
+ .forName("UTF-8"))).toString());
+ checkNepOtsiRdmNode(nep7, mcnepUuid3, nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX",
+ "PHOTONIC_MEDIA_OMSNodeEdgePoint", false);
+ OwnedNodeEdgePoint nep8 = nepsOTS.get(getRank("DEG1-TTP", nepsOTS));
+ Uuid otmcnepUuid3 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(nep8, otmcnepUuid3, nodeId + "+OTSi_MEDIA_CHANNEL+DEG1-TTP-TXRX",
- "OTSi_MEDIA_CHANNELNodeEdgePoint", false);
- OwnedNodeEdgePoint photNep3 = nepsPhot.get(3);
- Uuid pnep3Uuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA+DEG1-TTP-TXRX")
+ checkNepOtsiRdmNode(nep8, otmcnepUuid3, nodeId + "+PHOTONIC_MEDIA_OTS+DEG1-TTP-TXRX",
+ "PHOTONIC_MEDIA_OTSNodeEdgePoint", false);
+ OwnedNodeEdgePoint omsNep3 = nepsOMS.get(getRank("DEG1-TTP", nepsOMS));
+ Uuid omsNep3Uuid = new Uuid(
+ UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(photNep3, pnep3Uuid, nodeId + "+PHOTONIC_MEDIA+DEG1-TTP-TXRX",
- "PHOTONIC_MEDIANodeEdgePoint", false);
+ checkNepOtsiRdmNode(omsNep3, omsNep3Uuid, nodeId + "+PHOTONIC_MEDIA_OMS+DEG1-TTP-TXRX",
+ "PHOTONIC_MEDIA_OMSNodeEdgePoint", false);
// For srg node
- OwnedNodeEdgePoint nep9 = nepsMc.get(0);
- Uuid mcnepUuid4 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+MEDIA_CHANNEL+SRG1-PP1-TXRX")
- .getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(nep9, mcnepUuid4, nodeId + "+MEDIA_CHANNEL+SRG1-PP1-TXRX",
- "MEDIA_CHANNELNodeEdgePoint", true);
- OwnedNodeEdgePoint nep10 = nepsOtsimc.get(9);
- Uuid otmcnepUuid4 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+OTSi_MEDIA_CHANNEL+SRG1-PP1-TXRX")
+ OwnedNodeEdgePoint nep10 = nepsOTS.get(getRank("SRG1-PP1", nepsOTS));
+ Uuid otsnepUuid4 = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP1-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(nep10, otmcnepUuid4, nodeId + "+OTSi_MEDIA_CHANNEL+SRG1-PP1-TXRX",
- "OTSi_MEDIA_CHANNELNodeEdgePoint", false);
- OwnedNodeEdgePoint photNep4 = nepsPhot.get(4);
- Uuid pnep4Uuid = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA+SRG1-PP1-TXRX")
+ checkNepOtsiRdmNode(nep10, otsnepUuid4, nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP1-TXRX",
+ "PHOTONIC_MEDIA_OTSNodeEdgePoint", false);
+ OwnedNodeEdgePoint otsNep4 = nepsOTS.get(getRank("SRG1-PP3", nepsOTS));
+ Uuid otsNep4Uuid = new Uuid(UUID.nameUUIDFromBytes((nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP3-TXRX")
.getBytes(Charset.forName("UTF-8"))).toString());
- checkNepOtsiRdmNode(photNep4, pnep4Uuid, nodeId + "+PHOTONIC_MEDIA+SRG1-PP1-TXRX",
- "PHOTONIC_MEDIANodeEdgePoint", false);
+ checkNepOtsiRdmNode(otsNep4, otsNep4Uuid, nodeId + "+PHOTONIC_MEDIA_OTS+SRG1-PP3-TXRX",
+ "PHOTONIC_MEDIA_OTSNodeEdgePoint", false);
List<NodeRuleGroup> nrgList4 = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
- checkNodeRuleGroupForRdm(nrgList4, 30);
+ checkNodeRuleGroupForRdm(nrgList4, 12);
break;
default:
fail();
assertEquals(portName, name.getValue(), "value of client nep should be '" + portName + "'");
assertEquals(nepName, name.getValueName(),
"value-name of client nep for '" + portName + "' should be '" + nepName + "'");
+ LOG.info("checkNEPClient10G-NEP {} has following supported CEP {}", nepName, nep
+ .getSupportedCepLayerProtocolQualifierInstances().toString());
assertEquals(3, nep.getSupportedCepLayerProtocolQualifierInstances()
.size(), "Client nep should support 3 kind of cep");
List<LAYERPROTOCOLQUALIFIER> lpql = new ArrayList<>();
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForMuxDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForSwitchDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForRdm(List<NodeRuleGroup> nrgList, int nbNeps) {
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForTpdrOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForMuxOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForSwitchOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
assertEquals("forward", ruleList0.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList0.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType().stream().findFirst().orElseThrow(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNepClient100GSwitch(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
for (SupportedCepLayerProtocolQualifierInstances entry : lsclpqi) {
lpql.add(entry.getLayerProtocolQualifier());
}
+ LOG.info("checkNEPClient100G-NEP {} has following supported CEP {}", nepName, nep
+ .getSupportedCepLayerProtocolQualifierInstances().toString());
assertEquals(2, lpql.size(), "Client nep should support 2 kind of cep");
assertThat("client nep should support 2 kind of cep", lpql,
hasItems(ODUTYPEODU4.VALUE, DIGITALSIGNALTYPE100GigE.VALUE));
private void checkNepOtsiRdmNode(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
boolean withSip) {
+ if (!nep.getUuid().equals(nepUuid)) {
+ LOG.info("ERRORUUIDNEP on Nep {}, expected {}", nep.getName().toString(), portName);
+ }
assertEquals(nepUuid, nep.getUuid(), "bad uuid for " + portName);
List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
assertEquals(portName, nameList.get(0).getValue(),
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");
+ if (nepName.contains("OMS")) {
+ assertEquals(1, lpql.size(), "OTSi nep of RDM infra node should support only 1 kind of cep");
+ assertThat("OTSi nep should support 1 kind of cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROMS.VALUE));
+ assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
+ "OTSi nep should be of PHOTONIC_MEDIA protocol type");
+ } else if (nepName.contains("OTS")) {
+ assertEquals(1, lpql.size(), "OTSi nep of RDM infra node should support only 1 kind of cep");
+ assertThat("OTSi nep should support 1 kind of cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROTS.VALUE));
+ assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
+ "OTSi nep should be of PHOTONIC_MEDIA protocol type");
+ }
checkCommonPartOfNep(nep, withSip);
}
"link-port-role of client nep should be SYMMETRIC");
}
- private void checkTransitionalLink(
- 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(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");
- assertEquals(2, link.getTransitionedLayerProtocolName().size(),
- "transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA");
- assertThat("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
- link.getTransitionedLayerProtocolName(),
- hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()));
- assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),
- "transitional link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
- .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
- assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertEquals(topologyUuid, nodeEdgePointList.get(1).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(0).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(tp1.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nep2Uuid = new Uuid(UUID.nameUUIDFromBytes(tp2.getBytes(Charset.forName("UTF-8"))).toString());
- assertThat("transitional links should terminate on " + tp1 + " and " + tp2 + " neps",
- nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- }
-
private void checkOmsLink(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.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");
tpdr1Bldr.setTerminationPoint(tps);
return new NodeBuilder(initialNode).addAugmentation(tpdr1Bldr.build()).build();
}
-}
\ No newline at end of file
+
+ private int getRank(String searchedChar, List<OwnedNodeEdgePoint> onepList) {
+ int foundAtRank = 0;
+ int rank = 0;
+ for (OwnedNodeEdgePoint onep: onepList) {
+ for (Map.Entry<NameKey, Name> entry: onep.getName().entrySet()) {
+ if (entry.getValue().getValue().contains(searchedChar)) {
+ foundAtRank = rank;
+ }
+ }
+ rank++;
+ }
+ LOG.info("searched Char {} found at rank {}", searchedChar, foundAtRank);
+ return foundAtRank;
+ }
+
+ private int getNodeRank(String searchedChar,
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeList) {
+ int foundAtRank = 0;
+ int rank = 0;
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node: nodeList) {
+ for (Map.Entry<NameKey, Name> entry: node.getName().entrySet()) {
+ if (entry.getValue().getValue().contains(searchedChar)) {
+ foundAtRank = rank;
+ }
+ }
+ rank++;
+ }
+ LOG.info("searched Char {} found at rank {}", searchedChar, foundAtRank);
+ return foundAtRank;
+ }
+}
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROMS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Decimal64;
import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
assertNull(nepN.getAdministrativeState(), "Administrative State should not be present");
assertNull(nepN.getOperationalState(), "Operational State should not be present");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- 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());
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertNull(enep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(enep.getOperationalState(), "Operational State should not be present");
-
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertNull(inep.getAdministrativeState(), "Administrative State should not be present");
- assertNull(inep.getOperationalState(), "Operational State should not be present");
}
@Test
ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
assertEquals(AdministrativeState.LOCKED, nepN.getAdministrativeState(),
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, nepN.getOperationalState(), "Operational State should be Disabled");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- 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());
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
}
@Test
ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid, tapiLink);
tapiFactory.convertNode(tpdr, networkPortList);
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node dsrNode = tapiFactory
.getTapiNodes().get(new
assertEquals(AdministrativeState.LOCKED, nepN.getAdministrativeState(),
"Administrative State should be Locked");
assertEquals(OperationalState.DISABLED, nepN.getOperationalState(), "Operational State should be Disabled");
-
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node otsiNode = tapiFactory
- .getTapiNodes().get(new
- 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());
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes(("XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- OwnedNodeEdgePoint enep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(enepUuid));
- assertEquals(AdministrativeState.LOCKED, enep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, enep.getOperationalState(), "Operational State should be Disabled");
-
- OwnedNodeEdgePoint inep = otsiNode.nonnullOwnedNodeEdgePoint().get(new OwnedNodeEdgePointKey(inepUuid));
- assertEquals(AdministrativeState.LOCKED, inep.getAdministrativeState(),
- "Administrative State should be Locked");
- assertEquals(OperationalState.DISABLED, inep.getOperationalState(), "Operational State should be Disabled");
}
@Test
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull(tapiLinks.get(3).getAdministrativeState(), "Administrative State should not be present");
+ assertNull(tapiLinks.get(1).getAdministrativeState(), "Administrative State should not be present");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertNull(tapiLinks.get(3).getOperationalState(), "Operational State should not be present");
+ assertNull(tapiLinks.get(1).getOperationalState(), "Operational State should not be present");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
}
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertNull(tapiLinks.get(3).getAdministrativeState(), "Administrative State should not be present");
+ assertNull(tapiLinks.get(1).getAdministrativeState(), "Administrative State should not be present");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertNull(tapiLinks.get(3).getOperationalState(), "Operational State should not be present");
+ assertNull(tapiLinks.get(1).getOperationalState(), "Operational State should not be present");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
}
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState(),
+ LOG.info("TapiLinks are as follow : {}", tapiLinks.toString());
+ assertEquals(AdministrativeState.LOCKED, tapiLinks.get(1).getAdministrativeState(),
"Administrative state should be LOCKED");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertEquals(OperationalState.DISABLED, tapiLinks.get(3).getOperationalState(),
+ assertEquals(OperationalState.DISABLED, tapiLinks.get(1).getOperationalState(),
"Operational state should be DISABLED");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState(),
+ assertEquals(AdministrativeState.LOCKED, tapiLinks.get(1).getAdministrativeState(),
"Administrative state should be LOCKED");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertEquals(OperationalState.DISABLED, tapiLinks.get(3).getOperationalState(),
+ assertEquals(OperationalState.DISABLED, tapiLinks.get(1).getOperationalState(),
"Operational state should be DISABLED");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(AdministrativeState.LOCKED, tapiLinks.get(3).getAdministrativeState(),
+ assertEquals(AdministrativeState.LOCKED, tapiLinks.get(1).getAdministrativeState(),
"Administrative state should be LOCKED");
assertEquals(AdministrativeState.UNLOCKED, tapiLinks.get(0).getAdministrativeState(),
"Administrative state should be UNLOCKED");
- assertEquals(OperationalState.DISABLED, tapiLinks.get(3).getOperationalState(),
+ assertEquals(OperationalState.DISABLED, tapiLinks.get(1).getOperationalState(),
"Operational state should be DISABLED");
assertEquals(OperationalState.ENABLED, tapiLinks.get(0).getOperationalState(),
"Operational state should be ENABLED");
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR-ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 (no more transitional links)");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- checkDsrNode(tapiNodes.get(1), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1+DSR");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "tpdr", "XPDR-A1-XPDR1+OTSi");
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(1), dsrNodeUuid, otsiNodeUuid,
- "XPDR-A1-XPDR1+iODU+XPDR1-NETWORK1", "XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1", "XPDR-A1-XPDR1");
+ checkDsrNode(tapiNodes.get(getNodeRank("SPDR-SA1", tapiNodes)), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1+XPONDER");
}
@Test
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR & ODU merged");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0, no more transitional links");
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "mux", "SPDR-SA1-XPDR1+DSR");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "mux", "SPDR-SA1-XPDR1+OTSi");
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR1+iODU+XPDR1-NETWORK1", "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1", "SPDR-SA1-XPDR1");
+ checkDsrNode(tapiNodes.get(getNodeRank("SPDR-SA1", tapiNodes)), dsrNodeUuid, "mux", "SPDR-SA1-XPDR1+XPONDER");
}
@Test
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
- assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
- assertEquals(4, tapiFactory.getTapiLinks().size(), "Link list size should be 4");
+ assertEquals(1, tapiFactory.getTapiNodes().size(), "Node list size should be 1 (DSR/ODU merged)");
+ assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be 0 : no more transitional link");
- Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "switch", "SPDR-SA1-XPDR2+DSR");
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "switch", "SPDR-SA1-XPDR2+OTSi");
-
- List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(tapiLinks.get(2), dsrNodeUuid, otsiNodeUuid,
- "SPDR-SA1-XPDR2+iODU+XPDR2-NETWORK4", "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK4", "SPDR-SA1-XPDR2");
+ //get(0)
+ checkDsrNode(tapiNodes.get(getNodeRank("SPDR-SA1", tapiNodes)), dsrNodeUuid, "switch",
+ "SPDR-SA1-XPDR2+XPONDER");
}
@Test
}
tapiFactory.convertNode(otnMuxC, networkPortListC);
tapiFactory.convertLinks(otnLinks);
- assertEquals(4, tapiFactory.getTapiLinks().size(), "Link list size should be 4");
+ assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2 : no transitional link");
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
List<Link> links = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkOtnLink(links.get(3), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
+ LOG.info("Node3 {}, Node4 = {},", node3Uuid.toString(), node4Uuid.toString());
+ checkOtnLink(links.get(1), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
"SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
- checkOtnLink(links.get(2), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
+ checkOtnLink(links.get(0), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
"SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
+ LOG.info("The link we check has name {}", links.get(0).getName().toString());
}
@Test
assertEquals(0, tapiFactory.getTapiLinks().size(), "Link list size should be empty");
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
= tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList());
- Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
+ Uuid photNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
.toString());
- checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "infra", "ROADM-infra");
+ checkOtsiNode(tapiNodes.get(0), photNodeUuid, "infra", "ROADM-infra");
}
@Test
tapiFactory.convertNode(otnMuxA, networkPortListA);
tapiFactory.convertRoadmInfrastructure();
- assertEquals(3, tapiFactory.getTapiNodes().size(), "Node list size should be 3");
- assertEquals(2, tapiFactory.getTapiLinks().size(), "Link list size should be 2");
+ assertEquals(2, tapiFactory.getTapiNodes().size(), "Node list size should be 2");
+ assertEquals(1, tapiFactory.getTapiLinks().size(), "Link list size should be 1 : no more transitional links");
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> tapiNodes
= tapiFactory.getTapiNodes().values().stream()
.sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
.collect(Collectors.toList());
Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
.toString());
- checkOtsiNode(tapiNodes.get(2), otsiNodeUuid, "infra", "ROADM-infra");
+ //get (2)
+ checkOtsiNode(tapiNodes.get(getNodeRank("ROADM", tapiNodes)), otsiNodeUuid, "infra", "ROADM-infra");
List<Link> links = tapiFactory.getTapiLinks().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(Charset.forName("UTF-8")))
.toString());
Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
.toString());
- Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1"
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1"
.getBytes(Charset.forName("UTF-8"))).toString());
Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("roadm node+nep+1")
.getBytes(Charset.forName("UTF-8"))).toString());
+ String str1 = "SPDR-SA1-XPDR1+XPONDER--SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1 and ROADM-infra-"
+ + "-NodeEdgePoint_1";
Uuid linkUuid =
- new Uuid(UUID.nameUUIDFromBytes(
- "SPDR-SA1-XPDR1+OTSi--SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1"
- .getBytes(Charset.forName("UTF-8"))).toString());
- checkOmsLink(links.get(1), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
- "SPDR-SA1-XPDR1+OTSi--SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1");
+ new Uuid(UUID.nameUUIDFromBytes(str1.getBytes(Charset.forName("UTF-8"))).toString());
+ LOG.info("LinksCheck 0 = {} ", links.get(0).getName().toString());
+ checkOmsLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid, str1);
}
private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node,
assertEquals(OperationalState.ENABLED, node.getOperationalState(), "operational state should be ENABLED");
assertThat("one value-name should be 'dsr/odu node name'",
new ArrayList<>(node.nonnullName().keySet()), hasItem(new NameKey("dsr/odu node name")));
- assertEquals(2, node.getLayerProtocolName().size(),
- "dsr node should manage 2 protocol layers : dsr and odu");
- assertThat("dsr node should manage 2 protocol layers : dsr and odu",
- node.getLayerProtocolName(), hasItems(LayerProtocolName.DSR, LayerProtocolName.ODU));
+ assertEquals(4, node.getLayerProtocolName().size(),
+ "dsr node should manage 4 protocol layers : dsr, odu, DIGITALOTN and photonic");
+ assertThat("dsr node should manage 3 protocol layers : dsr, odu and photonic",
+ node.getLayerProtocolName(), hasItems(LayerProtocolName.DSR, LayerProtocolName.ODU,
+ LayerProtocolName.PHOTONICMEDIA));
List<OwnedNodeEdgePoint> nepsN = node.nonnullOwnedNodeEdgePoint().values().stream()
.filter(n -> n.getName().containsKey(new NameKey("iNodeEdgePoint_N")))
.sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
otnSwitch.getNodeId().getValue(), TapiStringConstants.I_OTSI);
OwnedNodeEdgePoint nep2 = nepsE.get(0);
Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+eOTSi+XPDR2-NETWORK2")
+ UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+PHOTONIC_MEDIA_OTS+XPDR2-NETWORK2")
.getBytes(Charset.forName("UTF-8"))).toString());
checkNepOtsiNode(nep2, enepUuid, "XPDR2-NETWORK2", "eNodeEdgePoint",
- otnSwitch.getNodeId().getValue(), TapiStringConstants.E_OTSI);
+ otnSwitch.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA_OTS);
List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
.sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
.collect(Collectors.toList());
assertEquals(1, nepsI.size(), "Mux-OTSi node should have 1 iNEPs");
OwnedNodeEdgePoint nep3 = nepsE.get(0);
Uuid enepUuid2 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+eOTSi+XPDR1-NETWORK1")
+ UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
.getBytes(Charset.forName("UTF-8"))).toString());
checkNepOtsiNode(nep3, enepUuid2, "XPDR1-NETWORK1", "eNodeEdgePoint",
- otnMuxA.getNodeId().getValue(), TapiStringConstants.E_OTSI);
+ otnMuxA.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA_OTS);
OwnedNodeEdgePoint nep4 = nepsI.get(0);
Uuid inepUuid2 = new Uuid(
UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+iOTSi+XPDR1-NETWORK1")
assertEquals(2, nepsI.size(), "Tpdr-OTSi node should have 2 iNEPs");
OwnedNodeEdgePoint nep5 = nepsE.get(0);
Uuid enepUuid3 = new Uuid(
- UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+eOTSi+XPDR1-NETWORK1")
+ UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1")
.getBytes(Charset.forName("UTF-8"))).toString());
checkNepOtsiNode(nep5, enepUuid3, "XPDR1-NETWORK1", "eNodeEdgePoint",
- tpdr100G.getNodeId().getValue(), TapiStringConstants.E_OTSI);
+ tpdr100G.getNodeId().getValue(), TapiStringConstants.PHTNC_MEDIA_OTS);
OwnedNodeEdgePoint nep6 = nepsI.get(0);
Uuid inepUuid3 = new Uuid(
UUID.nameUUIDFromBytes((nodeId.split("\\+")[0] + "+iOTSi+XPDR1-NETWORK1")
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForMuxDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
assertEquals("forward", rule.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, rule.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, rule.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForSwitchDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForRdmInfra(List<NodeRuleGroup> nrgList, int nbNeps) {
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForTpdrOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForMuxOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNodeRuleGroupForSwitchOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
assertEquals("forward", ruleList0.get(0).getLocalId(),"local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList0.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList0.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
private void checkNepClient100GSwitch(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName,
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));
+ assertThat("OTSi nep should support OTS cep", lpql, hasItems(PHOTONICLAYERQUALIFIEROTS.VALUE));
assertEquals(LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName(),
"OTSi nep should be of PHOTONIC_MEDIA protocol type");
assertEquals(0, nep.nonnullMappedServiceInterfacePoint().size(), "OTSi nep of RDM infra should support no SIP");
assertEquals(PortRole.SYMMETRIC, nep.getLinkPortRole(), "link-port-role of client nep should be SYMMETRIC");
}
- private void checkTransitionalLink(Link link, Uuid node1Uuid, Uuid node2Uuid, String tp1, String tp2,
- String ietfNodeId) {
- Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((tp1 + "to" + tp2)
- .getBytes(Charset.forName("UTF-8"))).toString());
- assertEquals(linkUuid, link.getUuid(), "bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2);
- assertEquals(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");
- assertEquals(2, link.getTransitionedLayerProtocolName().size(),
- "transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA");
- assertThat("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
- link.getTransitionedLayerProtocolName(),
- hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()));
- assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(),
- "transitional link should be BIDIRECTIONAL");
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
- .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
- assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertEquals(topologyUuid, nodeEdgePointList.get(1).getTopologyUuid(),
- "topology uuid should be the same for the two termination point of the link");
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(0).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(tp1.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nep2Uuid = new Uuid(UUID.nameUUIDFromBytes(tp2.getBytes(Charset.forName("UTF-8"))).toString());
- assertThat("transitional links should terminate on " + tp1 + " and " + tp2 + " neps",
- nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- }
-
private void checkOtnLink(Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid,
String linkName) {
assertEquals(linkName, link.getName().get(new NameKey("otn link name")).getValue(), "bad name for the link");
}
assertEquals(CAPACITYUNITGBPS.VALUE, link.getTotalPotentialCapacity().getTotalSize().getUnit(),
"Total capacity unit should be GBPS");
- assertEquals(Uint64.valueOf(100), link.getTotalPotentialCapacity().getTotalSize().getValue(),
+ assertEquals(Decimal64.valueOf("100"), link.getTotalPotentialCapacity().getTotalSize().getValue(),
"Total capacity -total size value should be 100");
if ("OTU4".equals(prefix)) {
assertEquals(
assertEquals(ForwardingDirection.BIDIRECTIONAL, link.getDirection(), "otn tapi link should be BIDIRECTIONAL");
List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
.link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
+ LOG.info("OUTPUT: Node1UUID = {}, Node2UU2D = {},", node1Uuid.toString(), node2Uuid.toString());
+ LOG.info("NEPLIST = {}", nodeEdgePointList.toString());
assertEquals(topologyUuid, nodeEdgePointList.get(0).getTopologyUuid(),
"topology uuid should be the same for the two termination point of the link");
assertEquals(topologyUuid, nodeEdgePointList.get(1).getTopologyUuid(),
private void checkOmsLink(Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid,
String linkName) {
- assertEquals(linkName, link.getName().get(new NameKey("OMS link name")).getValue(), "bad name for the link");
+ assertEquals(linkName, link.getName().get(new NameKey("OTS link name")).getValue(), "bad name for the link");
assertEquals(linkUuid, link.getUuid(), "bad uuid for link");
assertEquals(
LayerProtocolName.PHOTONICMEDIA.getName(),
linkBldr.addAugmentation(link1Bldr.build());
return linkBldr.build();
}
+
+ private int getNodeRank(String searchedChar,
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> nodeList) {
+ int foundAtRank = 0;
+ int rank = 0;
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node node: nodeList) {
+ for (Map.Entry<NameKey, Name> entry: node.getName().entrySet()) {
+ if (entry.getValue().getValue().contains(searchedChar)) {
+ foundAtRank = rank;
+ }
+ }
+ rank++;
+ }
+ LOG.info("searched Char {} found at rank {}", searchedChar, foundAtRank);
+ return foundAtRank;
+ }
}
\ No newline at end of file
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
+import org.opendaylight.yangtools.yang.common.Decimal64;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
throws ExecutionException, InterruptedException {
Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.TPDR_100G.getBytes(
Charset.forName("UTF-8"))).toString());
+ LOG.info("TPDR100GUuid = {}", topologyUuid);
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
+ LOG.info("RESULT of getTopoDetailsTopo/name = {}", result.get().getResult().getTopology().getName().toString());
result.addListener(new Runnable() {
@Override
public void run() {
assertEquals("forward", ruleList.get(0).getLocalId(), "local-id of the rule should be 'forward'");
assertEquals(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE, ruleList.get(0).getForwardingRule(),
"the forwarding rule should be 'MAYFORWARDACROSSGROUP'");
- assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType(), "the rule type should be 'FORWARDING'");
+ assertEquals(RuleType.FORWARDING, ruleList.get(0).getRuleType().iterator().next(),
+ "the rule type should be 'FORWARDING'");
}
@Test
throws ExecutionException, InterruptedException {
Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
Charset.forName("UTF-8"))).toString());
+ LOG.info("T0MultilayerUuid = {}", topologyUuid);
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
@Nullable
Topology topology = rpcResult.getResult().getTopology();
assertNotNull(topology, "Topology should not be null");
- assertEquals(13, topology.getNode().size(), "Node list size should be 13");
+ for (Map.Entry<
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey,
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node> entry :
+ topology.getNode().entrySet()) {
+ LOG.debug("NODESDETECTED = {}",entry.getValue().getName().toString());
+ }
+ assertEquals(7, topology.getNode().size(), "Node list size should be 7");
long nb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))))
.count();
long nb2 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
long nb3 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
long nb4 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
long nb5 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
.filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
assertEquals(2, nb5, "SPDR-SA1-XPDR2 (switch) should have 2 network neps");
- assertEquals(18, topology.getLink().size(), "Link list size should be 18");
+ long nb7 = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("otsi node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
+ .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .count();
+ assertEquals(1, nb7, "XPDR-A1-XPDR1 should only have 1 OTSI network nep");
+ long nb8 = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("otsi node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
+ .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .count();
+ assertEquals(1, nb8, "SPDR-SA1-XPDR1 (mux) should have a single OTSI network nep");
+ long nb9 = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("otsi node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
+ .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .count();
+ assertEquals(2, nb9, "SPDR-SA1-XPDR2 (switch) should have 2 OTSI network nep");
+
+ assertEquals(10, topology.getLink().size(), "Link list size should be 10, no more transitionnal links");
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes("T0 - Multi-layer topology".getBytes()).toString());
assertEquals(topoUuid, topology.getUuid(), "incorrect topology uuid");
assertEquals(
long nbPhotonicNodes = topology.nonnullNode().values().stream()
.filter(n -> n.getName().containsKey(new NameKey("otsi node name"))).count();
assertEquals(6, nbDsrOduNodes, "Node list should contain 6 DSR-ODU nodes");
- assertEquals(7, nbPhotonicNodes, "Node list should contain 7 Photonics nodes");
- long nbTransititionalLinks = topology.getLink().values().stream()
- .filter(l -> l.getName().containsKey(new NameKey("transitional link name"))).count();
- long nbOmsLinks = topology.getLink().values().stream()
- .filter(l -> l.getName().containsKey(new NameKey("OMS link name"))).count();
+ assertEquals(7, nbPhotonicNodes, "Node list should contain 7 Photonics node");
+ long nbOtsLinks = topology.getLink().values().stream()
+ .filter(l -> l.getName().containsKey(new NameKey("OTS link name"))).count();
long nbOtnLinks = topology.getLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("otn link name"))).count();
- assertEquals(8, nbTransititionalLinks, "Link list should contain 8 transitional links");
- assertEquals(8, nbOmsLinks, "Link list should contain 8 transitional links");
+ assertEquals(8, nbOtsLinks, "Link list should contain 8 OTS links");
assertEquals(2, nbOtnLinks, "Link list should contain 2 OTN links");
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(StandardCharsets.UTF_8))
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
- Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR".getBytes(StandardCharsets.UTF_8))
+ Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
- Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(StandardCharsets.UTF_8))
+ Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
- Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+OTSi".getBytes(StandardCharsets.UTF_8))
+ Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+XPONDER".getBytes(StandardCharsets.UTF_8))
.toString());
Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1"
.getBytes(StandardCharsets.UTF_8)).toString());
"SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1toSPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1");
checkOtnLink(links.get(1), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link2Uuid,
"SPDR-SA1-XPDR1+eODU+XPDR1-NETWORK1toSPDR-SC1-XPDR1+eODU+XPDR1-NETWORK1");
+
}
@Test
void getTopologyDetailsForFullTapiTopologyWithLinksWhenSuccessful()
throws ExecutionException, InterruptedException {
- Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
Charset.forName("UTF-8"))).toString());
+ LOG.info("T0FullMultilayerUuid = {}", topologyUuid);
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
@Nullable
Topology topology = rpcResult.getResult().getTopology();
assertNotNull(topology, "Topology should not be null");
- // 2 Nodes per Xpdr/Spdr node (DSR-ODU & PHOT) + 1 Node per Roadm
- assertEquals(18, topology.getNode().size(), "Node list size should be 18");
+ // 2 Nodes per Xpdr/Spdr node (DSR-ODU & PHOT) + 3 Node per Roadm
+ assertEquals(10, topology.getNode().size(), "Node list size should be 10");
+ List<Map<NameKey, Name>> nodeNames = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
+ .map(Node::getName).collect(Collectors.toList());
+ LOG.info("TopologyNodes = {}", nodeNames.toString());
+ Node nodeTsp = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
+ .findAny().orElseThrow();
+ LOG.debug("XPDRA1 NEPs = {}", nodeTsp.getOwnedNodeEdgePoint().toString());
long nb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))))
.count();
// 2 client ports in configuration -> removed the checkTp so we have 2 NEPs
- assertEquals(2, nb1, "XPDR-A1-XPDR1+DSR should only have two client neps");
+ assertEquals(2, nb1, "XPDR-A1-XPDR1+XPONDER should only have two client neps");
long inb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(2, inb1, "XPDR-A1-XPDR1+DSR should only have two internal network neps");
+ assertEquals(2, inb1, "XPDR-A1-XPDR1+XPONDER should only have two internal network neps");
long enb1 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(2, enb1, "XPDR-A1-XPDR1+DSR should only have two external network neps");
+ assertEquals(2, enb1, "XPDR-A1-XPDR1+XPONDER should only have two external network neps");
long nb2 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
- assertEquals(4, nb2, "SPDR-SA1-XPDR1+DSR (mux) should have 4 client neps");
+ assertEquals(4, nb2, "SPDR-SA1-XPDR1+XPONDER (mux) should have 4 client neps");
long inb3 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(1, inb3, "SPDR-SA1-XPDR1+DSR (mux) should have a single internal network nep");
+ assertEquals(1, inb3, "SPDR-SA1-XPDR1+XPONDER (mux) should have a single internal network nep");
long enb3 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(4, enb3, "SPDR-SA1-XPDR1+DSR (mux) should have 4 external network nep");
+ assertEquals(4, enb3, "SPDR-SA1-XPDR1+XPONDER (mux) should have 4 external network nep");
long nb4 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
.count();
- assertEquals(4, nb4, "SPDR-SA1-XPDR2+DSR (switch) should have 4 client neps");
+ assertEquals(4, nb4, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 client neps");
long inb5 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(4, inb5, "SPDR-SA1-XPDR2+DSR (switch) should have 4 internal network neps");
+ assertEquals(4, inb5, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 internal network neps");
long enb5 = topology.getNode().values().stream()
.filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+DSR"))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(4, enb5, "SPDR-SA1-XPDR2+DSR (switch) should have 4 external network neps");
+ assertEquals(4, enb5, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 external network neps");
- // Now lets check for the Photonic media nodes (same nodes as for DSR + 1 Roadm node)
- nb1 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint"))))
- .count();
- // 2 client ports in configuration -> removed the checkTp so we have 2 NEPs
- assertEquals(2, nb1, "XPDR-A1-XPDR1+OTSi should only have two internal network neps");
inb1 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
+ .filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint_N"))))
.count();
- assertEquals(2, inb1, "XPDR-A1-XPDR1+OTSi should only have two external network neps");
+ assertEquals(2, inb1, "XPDR-A1-XPDR1+XPONDER should only have two external network neps");
enb1 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("XPDR-A1-XPDR1+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("PhotMedNodeEdgePoint"))))
- .count();
- assertEquals(2, enb1, "XPDR-A1-XPDR1+OTSi should only have two photonic network neps");
- nb2 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("XPDR-A1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint"))))
+ .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint_N"))))
.count();
- assertEquals(1, nb2, "SPDR-SA1-XPDR1+OTSi (mux) should have a single internal network nep");
+ assertEquals(2, enb1, "XPDR-A1-XPDR1+XPONDER should only have two photonic network neps");
inb3 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR1+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
.count();
- assertEquals(1, inb3, "SPDR-SA1-XPDR1+OTSi (mux) should have a single external network nep");
- enb3 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR1+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("PhotMedNodeEdgePoint"))))
- .count();
- assertEquals(1, enb3, "SPDR-SA1-XPDR1+OTSi (mux) should have a single photonic network nep");
- nb4 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("iNodeEdgePoint"))))
- .count();
- assertEquals(4, nb4, "SPDR-SA1-XPDR2+OTSi (switch) should have 4 internal network neps");
+ assertEquals(1, inb3, "SPDR-SA1-XPDR1+XPONDER (mux) should have a single external network nep");
inb5 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+OTSi"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("dsr/odu node name")).getValue()
+ .equals("SPDR-SA1-XPDR2+XPONDER"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getName().containsKey(new NameKey("eNodeEdgePoint"))))
.count();
- assertEquals(4, inb5, "SPDR-SA1-XPDR2+OTSi (switch) should have 4 external network neps");
- enb5 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue()
- .equals("SPDR-SA1-XPDR2+OTSi"))
- .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().containsKey(new NameKey("PhotMedNodeEdgePoint"))))
- .count();
- assertEquals(4, enb5, "SPDR-SA1-XPDR2+OTSi (switch) should have 4 photonic network neps");
- // We should have 3 neps per DEGREE-TTP port and 3 neps per SRG-PP port
+ assertEquals(4, inb5, "SPDR-SA1-XPDR2+XPONDER (switch) should have 4 external network neps");
+ Node nodeRoadm = topology.getNode().values().stream()
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && !node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("roadm node name")).getValue()
+ .equals("ROADM-A1+PHOTONIC_MEDIA"))
+ .findAny().orElseThrow();
long inb6 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue().equals(
- "ROADM-A1+PHOTONIC_MEDIA"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && !node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("roadm node name")).getValue()
+ .equals("ROADM-A1+PHOTONIC_MEDIA"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().values().stream().findFirst().orElseThrow().getValue().contains("DEG")))
+ .filter(nep -> nep.getName().values().stream().findAny().orElseThrow().getValue().contains("DEG")))
.count();
- assertEquals(6, inb6, "ROADM-A1+PHOTONIC_MEDIA (DEGREE) should have 6 network neps");
+ assertEquals(4, inb6, "ROADM-A1+PHOTONIC_MEDIA (DEGREE) should have 4 network neps");
long enb6 = topology.getNode().values().stream()
- .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA))
- .filter(node -> node.getName().values().stream().findFirst().orElseThrow().getValue().equals(
- "ROADM-A1+PHOTONIC_MEDIA"))
+ .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.PHOTONICMEDIA)
+ && !node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+ .filter(node -> node.getName().get(new NameKey("roadm node name")).getValue()
+ .equals("ROADM-A1+PHOTONIC_MEDIA"))
.flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
- .filter(nep -> nep.getName().values().stream().findFirst().orElseThrow().getValue().contains("SRG")))
+ .filter(nep -> nep.getName().values().stream().findAny().orElseThrow().getValue().contains("SRG")))
.count();
- assertEquals(24, enb6, "ROADM-A1+PHOTONIC_MEDIA (SRG) should have 24 network neps");
+ assertEquals(8, enb6, "ROADM-A1+PHOTONIC_MEDIA (SRG) should have 8 network neps (OTS)");
// Links in openroadm topology which include Roadm-to-Roadm and Xpdr-to-Roadm (ortopo / 2)
- // + transitional links -> 1 per network port of Xpdr + OTN links / 2
- assertEquals(25, topology.getLink().size(), "Link list size should be 25");
+ // + transitional links -> 0 per network port of Xpdr + OTN links / 2
+ List<String> linkList = new ArrayList<>();
+ for (Map.Entry<LinkKey, Link> entry : topology.getLink().entrySet()) {
+ linkList.add(entry.getValue().getName().entrySet().iterator().next().getValue().toString());
+ }
+ assertEquals(9, topology.getLink().size(), "Link list size should be 8 XPDR To SRG and 1 DEG2A-DEG1C");
Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes("T0 - Full Multi-layer topology".getBytes()).toString());
assertEquals(topoUuid, topology.getUuid(), "incorrect topology uuid");
assertEquals(
assertEquals(8, nbDsrOduNodes, "Node list should contain 8 DSR-ODU nodes");
// We need to add the Roadms as Photonic nodes. Instead of 1 node as roadm infra we have 2 roadm nodes
assertEquals(8, nbPhotonicNodes, "Node list should contain 8 Photonics nodes");
- long nbTransititionalLinks = topology.getLink().values().stream()
- .filter(l -> l.getName().containsKey(new NameKey("transitional link name"))).count();
// Roadm-to-Roadm
long nbOmsLinks = topology.getLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("OMS link name"))).count();
// Xpdr-to-Roadm
long nbOmsLinks1 = topology.getLink().values().stream()
.filter(l -> l.getName().containsKey(new NameKey("XPDR-RDM link name"))).count();
- // 1 transitional link per NETWORK port
- assertEquals(16, nbTransititionalLinks, "Link list should contain 16 transitional links");
// 1 OMS per ROADM-to-ROADM link + Existing XPDR-tp-ROADM link in openroadm topology
assertEquals(9, nbOmsLinks + nbOmsLinks1, "Link list should contain 9 OMS links");
}
@Test
void getNodeAndNepsDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
- Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
Charset.forName("UTF-8"))).toString());
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
@Test
void getLinkDetailsWhenSuccessful()
throws ExecutionException, InterruptedException {
- Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes(
+ Uuid topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes(
Charset.forName("UTF-8"))).toString());
GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput(topologyUuid);
TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker(), tapiContext, topologyUtils, tapiLink);
}
assertEquals(CAPACITYUNITGBPS.VALUE, link.getTotalPotentialCapacity().getTotalSize().getUnit(),
"Total capacity unit should be GBPS");
- assertEquals(Uint64.valueOf(100), link.getTotalPotentialCapacity().getTotalSize().getValue(),
+ assertEquals(Decimal64.valueOf("100"), link.getTotalPotentialCapacity().getTotalSize().getValue(),
"Total capacity -total size value should be 100");
if ("OTU4".equals(prefix)) {
assertEquals("otn link should be between 2 nodes of protocol layers PHOTONIC_MEDIA",
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointBuilder;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.TopologyConstraintKey;
import org.opendaylight.yangtools.yang.common.Decimal64;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.common.Uint8;
.setEndPoint(endPointMap)
.setLayerProtocolName(LayerProtocolName.DSR)
.setConnectivityConstraint(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121
- .create.connectivity.service.input.ConnectivityConstraintBuilder()
+ .create.connectivity.service.input.ConnectivityConstraintBuilder()
.setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).setServiceLevel("some service-level")
- .setRequestedCapacity(new RequestedCapacityBuilder()
+ .setRequestedCapacity(new RequestedCapacityBuilder()
.setTotalSize(new TotalSizeBuilder().setUnit(CAPACITYUNITGBPS.VALUE)
.setValue(Decimal64.valueOf("10")).build()).build()).build())
.setState(AdministrativeState.UNLOCKED)
+ .setTopologyConstraint(getTopoConstraintMap())
.build();
}
.build());
}
+ private static Map<TopologyConstraintKey, TopologyConstraint> getTopoConstraintMap() {
+ Map<TopologyConstraintKey, TopologyConstraint> topoConstraintMap = new HashMap<>();
+ TopologyConstraint topoConstraint = new TopologyConstraintBuilder()
+ .setLocalId("localIdTopoConstraint").build();
+ topoConstraintMap.put(topoConstraint.key(), topoConstraint);
+ return topoConstraintMap;
+ }
+
public static Map<ConnectivityServiceKey, ConnectivityService> createConnService() {
EndPoint endPoint1 = getEndPoint1Builder().build();
EndPoint endPoint2 = getEndPoint2Builder().build();
T100GE = 'Transponder 100GE'
T0_MULTILAYER_TOPO = 'T0 - Multi-layer topology'
T0_FULL_MULTILAYER_TOPO = 'T0 - Full Multi-layer topology'
+T100GE_UUID = 'cf51c729-3699-308a-a7d0-594c6a62ebbb'
+T0_MULTILAYER_TOPO_UUID = '747c670e-7a07-3dab-b379-5b1cd17402a3'
+T0_FULL_MULTILAYER_TOPO_UUID = '393f09a4-0a0b-3d82-a4f6-1fbbc14ca1a7'
SIM_LOG_DIRECTORY = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'log')
"tail-retention": "no"}
}
- tapi_topo = {"topology-id-or-name": "TBD"}
+ tapi_topo = {"topology-id": "TBD"}
@classmethod
def setUpClass(cls):
print("execution of {}".format(self.id().split(".")[-1]))
def test_01_get_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
'node should contain 1 node rule group')
def test_02_get_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
def test_04_check_tapi_topos(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(len(response["output"]["topology"]["node"]), 1, 'Topology should contain 1 node')
self.assertNotIn("link", response["output"]["topology"], 'Topology should contain no link')
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
def test_07_check_tapi_topos(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
def test_10_check_tapi_topos(self):
self.test_01_get_tapi_topology_T100G()
-
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(1, len(response["output"]["topology"]["node"]), 'Topology should contain 1 node')
self.assertNotIn("link", response["output"]["topology"], 'Topology should contain no link')
- self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# 'node name should be: ROADM-infra')
+ nodes = response["output"]["topology"]["node"]
+ self.assertEqual("ROADM-infra",
+ response["output"]["topology"]["node"][0]["name"][count_position_name_from_value_name(
+ response["output"]["topology"]["node"][0]["name"], "otsi node name")]["value"],
'node name should be: ROADM-infra')
+ self.assertEqual(1, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
+ 'Topology should contain 1 otsi nodes')
self.assertIn("PHOTONIC_MEDIA", response["output"]["topology"]["node"][0]["layer-protocol-name"],
'Node layer protocol should contain PHOTONIC_MEDIA')
self.assertEqual(1, len(response["output"]["topology"]["node"][0]["node-rule-group"]),
time.sleep(2)
def test_13_check_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
'name of owned-node-edge-points should be XPDR-A1-XPDR1+DSR+XPDR1-CLIENT1')
def test_14_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(3, len(nodes), 'Topology should contain 3 nodes')
- self.assertEqual(2, len(links), 'Topology should contain 2 links')
+ self.assertEqual(2, len(nodes), 'Topology should contain 2 nodes')
+ self.assertEqual(1, len(links), 'Topology should contain 1 link')
self.assertEqual(2, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 2 otsi nodes')
self.assertEqual(1, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
'Topology should contain 1 dsr node')
- self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 1 transitional link')
- self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 1 oms link')
+ self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 1 ots link')
def test_15_connect_xpdrc(self):
response = test_utils.mount_device("XPDR-C1", ('xpdrc', self.NODE_VERSION))
time.sleep(2)
def test_18_check_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
'name of owned-node-edge-points should be XPDR-A1-XPDR1+DSR+XPDR1-CLIENT1')
def test_19_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
- self.assertEqual(4, len(links), 'Topology should contain 4 links')
+ self.assertEqual(3, len(nodes), 'Topology should contain 3 nodes')
+ self.assertEqual(2, len(links), 'Topology should contain 2 links')
self.assertEqual(3, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 3 otsi nodes')
self.assertEqual(2, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
'Topology should contain 2 dsr nodes')
- self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 2 transitional links')
- self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 2 oms links')
+ self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 2 ots links')
def test_20_connect_spdr_sa1(self):
response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
self.test_18_check_tapi_topology_T100G()
def test_29_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(9, len(nodes), 'Topology should contain 9 nodes')
- self.assertEqual(8, len(links), 'Topology should contain 8 links')
+ self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
+ self.assertEqual(4, len(links), 'Topology should contain 4 links')
self.assertEqual(5, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 5 otsi nodes')
self.assertEqual(4, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
'Topology should contain 4 dsr nodes')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 4 transitional links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 4 oms links')
+ self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 4 ots links')
def test_30_add_oms_attributes(self):
# Config ROADMA-ROADMC oms-attributes
time.sleep(self.WAITING)
def test_32_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(9, len(nodes), 'Topology should contain 9 nodes')
- self.assertEqual(9, len(links), 'Topology should contain 9 links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 4 transitional links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 4 oms links')
+ self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
+ self.assertEqual(5, len(links), 'Topology should contain 5 links')
+ self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 4 ots links')
self.assertEqual(1, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 1 otn link')
for link in links:
if link["name"][0]["value"] == "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1":
self.assertEqual(100000, int(link["available-capacity"]["total-size"]["value"]),
'OTU4 link should have an available capacity of 100 000 Mbps')
- elif link["name"][0]["value-name"] == "transitional link name":
- self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
- 'link should have an available capacity of 100 Gbps')
+# elif link["name"][0]["value-name"] == "transitional link name":
+# self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
+# 'link should have an available capacity of 100 Gbps')
self.assertEqual(2, len(link["node-edge-point"]), 'link should have 2 neps')
def test_33_create_ODU4_service(self):
time.sleep(self.WAITING)
def test_34_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(9, len(nodes), 'Topology should contain 9 nodes')
- self.assertEqual(10, len(links), 'Topology should contain 10 links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 4 transitional links')
- self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 4 oms links')
+ self.assertEqual(5, len(nodes), 'Topology should contain 5 nodes')
+ self.assertEqual(6, len(links), 'Topology should contain 6 links')
+ self.assertEqual(4, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 4 ots links')
self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 2 otn links')
for link in links:
elif link["name"][0]["value"] == "ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1":
self.assertEqual(100000, int(link["available-capacity"]["total-size"]["value"]),
'ODU4 link should have an available capacity of 100 000 Mbps')
- elif link["name"][0]["value-name"] == "transitional link name":
- self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
- 'link should have an available capacity of 100 Gbps')
+# elif link["name"][0]["value-name"] == "transitional link name":
+# self.assertEqual(100, int(link["available-capacity"]["total-size"]["value"]),
+# 'link should have an available capacity of 100 Gbps')
self.assertEqual(2, len(link["node-edge-point"]), 'link should have 2 neps')
def test_35_connect_sprda_2_n2_to_roadma_pp3(self):
time.sleep(2)
def test_37_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(11, len(nodes), 'Topology should contain 11 nodes')
- self.assertEqual(12, len(links), 'Topology should contain 12 links')
+ self.assertEqual(6, len(nodes), 'Topology should contain 6 nodes')
+ self.assertEqual(7, len(links), 'Topology should contain 7 links')
self.assertEqual(6, count_object_with_double_key(nodes, "name", "value-name", "otsi node name"),
'Topology should contain 6 otsi nodes')
- self.assertEqual(5, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
- 'Topology should contain 5 dsr nodes')
- self.assertEqual(5, count_object_with_double_key(links, "name", "value-name", "transitional link name"),
- 'Topology should contain 5 transitional links')
- self.assertEqual(5, count_object_with_double_key(links, "name", "value-name", "OMS link name"),
- 'Topology should contain 5 oms links')
+ self.assertEqual(5, count_object_with_double_key(links, "name", "value-name", "OTS link name"),
+ 'Topology should contain 5 ots links')
self.assertEqual(2, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 2 otn links')
+ self.assertEqual(5, count_object_with_double_key(nodes, "name", "value-name", "dsr/odu node name"),
+ 'Topology should contain 5 dsr nodes')
def test_38_delete_ODU4_service(self):
self.del_serv_input_data["service-delete-req-info"]["service-name"] = "service1-ODU4"
time.sleep(self.WAITING)
def test_40_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
nodes = response["output"]["topology"]["node"]
links = response["output"]["topology"]["link"]
- self.assertEqual(11, len(nodes), 'Topology should contain 11 nodes')
- self.assertEqual(10, len(links), 'Topology should contain 10 links')
+ self.assertEqual(6, len(nodes), 'Topology should contain 6 nodes')
+ self.assertEqual(5, len(links), 'Topology should contain 5 links')
self.assertEqual(0, count_object_with_double_key(links, "name", "value-name", "otn link name"),
'Topology should contain 0 otn link')
self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content))
def test_42_check_tapi_topology_T0(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(1, len(response["output"]["topology"]["node"]), 'Topology should contain 1 node')
self.assertNotIn("link", response["output"]["topology"], 'Topology should contain no link')
- self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# self.assertEqual("ROADM-infra", response["output"]["topology"]["node"][0]["name"][0]["value"],
+# 'node name should be: ROADM-infra')
+ self.assertEqual("ROADM-infra",
+ response["output"]["topology"]["node"][0]["name"][count_position_name_from_value_name(
+ response["output"]["topology"]["node"][0]["name"], "otsi node name")]["value"],
'node name should be: ROADM-infra')
def test_43_get_tapi_topology_T100G(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T100GE
+ self.tapi_topo["topology-id"] = test_utils.T100GE
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content))
+# def count_object_with_double_key(list_dicts, key1, key2, value):
+# nb = 0
+# for dictio in list_dicts:
+# print(dictio)
+# if dictio[key1][0][key2] == value:
+# nb += 1
+# return nb
+
def count_object_with_double_key(list_dicts, key1, key2, value):
nb = 0
for dictio in list_dicts:
- if dictio[key1][0][key2] == value:
- nb += 1
+ for name in dictio[key1]:
+ if name[key2] == value:
+ nb += 1
return nb
+def count_position_name_from_value_name(name, valuename):
+ nb = 0
+ index = 0
+ for names in name:
+ if names["value-name"] == valuename:
+ index = nb
+ nb += 1
+ return index
+
+
if __name__ == "__main__":
unittest.main(verbosity=2)
WAITING = 20 # nominal value is 300
NODE_VERSION = '2.2.1'
uuid_services = UuidServices()
+ uuidTpAiOTSI = "f4c370be-e307-380d-a31b-7edc2b431e5d"
+ uuidTpZiOTSI = "febb4502-6b27-3701-990b-3aa4941f48c4"
+ uuidTpADSR = "3aca9b37-bc46-335d-b147-2423690dee18"
+ uuidTpZDSR = "709d3595-6d56-3ad6-a3cd-5a4a09ce6f9d"
+# SIP uuids
+ # SIP+SPDR-SA1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1 UUID IS
+ sAOTS = "38d81f55-1798-3520-ba16-08efa56630c4"
+ # SIP+SPDR-SC1-XPDR1+PHOTONIC_MEDIA_OTS+XPDR1-NETWORK1 UUID IS
+ sZOTS = "97d9ba27-0efa-3010-8b98-b4d73240120c"
+ # SIP+SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1 UUID IS
+ sAeOTS = "f4dbce65-6191-3c84-b351-29ccb0629221"
+ # SIP+SPDR-SC1-XPDR1+eOTSi+XPDR1-NETWORK1 UUID IS
+ sZeOTS = "faabebd3-d7af-3389-96a7-261672744591"
+ # SIP+SPDR-SA1-XPDR1+DSR+XPDR1-CLIENT1 UUID IS
+ sADSR = "c14797a0-adcc-3875-a1fe-df8949d1a2d7"
+ # SIP+SPDR-SC1-XPDR1+DSR+XPDR1-CLIENT1 UUID IS
+ sZDSR = "25812ef2-625d-3bf8-af55-5e93946d1c22"
+ # SIP+SPDR-SA1-XPDR1+eODU+XPDR1-CLIENT1 UUID IS
+ sAeODU = "b6421484-531f-3444-adfc-e11c503f1fab"
+ # SIP+SPDR-SC1-XPDR1+eODU+XPDR1-CLIENT1 UUID IS
+ sZeODU = "4511fca7-0cf7-3b27-a128-3b372d5e1fa8"
+ # uuid_A = uuid.UUID(bytes("SPDR-SA1-XPDR1+DSR+eOTSI+XPDR1-NETWORK1", 'utf-8'))
+ # uuid_C = uuid.UUID(bytes("SPDR-SC1-XPDR1+DSR+eOTSI+XPDR1-NETWORK1", 'utf-8'))
cr_serv_input_data = {
"end-point": [
{
"layer-protocol-name": "PHOTONIC_MEDIA",
"service-interface-point": {
- "service-interface-point-uuid": "b1a0d883-32b8-3b0b-93d6-7ed074f6f107"
+ "service-interface-point-uuid": "c14797a0-adcc-3875-a1fe-df8949d1a2d7"
},
"administrative-state": "UNLOCKED",
"operational-state": "ENABLED",
{
"layer-protocol-name": "PHOTONIC_MEDIA",
"service-interface-point": {
- "service-interface-point-uuid": "d1d6305e-179b-346f-b02d-8260aebe1ce8"
+ "service-interface-point-uuid": "25812ef2-625d-3bf8-af55-5e93946d1c22"
},
"administrative-state": "UNLOCKED",
"operational-state": "ENABLED",
}
],
"connectivity-constraint": {
- "service-layer": "PHOTONIC_MEDIA",
"service-type": "POINT_TO_POINT_CONNECTIVITY",
"service-level": "Some service-level",
"requested-capacity": {
"total-size": {
"value": "100",
- "unit": "GB"
+ "unit": "tapi-common:CAPACITY_UNIT_GBPS"
}
}
},
- "state": "Some state"}
+ "topology-constraint": [
+ {
+ "local-id": "localIdTopoConstraint",
+ "name": [
+ {
+ "value-name": "Dumb constraint",
+ "value": "for debug1"
+ }
+ ]
+ }
+ ],
+ "state": "LOCKED",
+ "layer-protocol-name": "PHOTONIC_MEDIA"}
- del_serv_input_data = {"service-id-or-name": "TBD"}
+ del_serv_input_data = {"uuid": "TBD"}
- tapi_topo = {"topology-id-or-name": "TBD"}
+ tapi_topo = {"topology-id": "TBD"}
@classmethod
def setUpClass(cls):
'There should be 22 openroadm links')
def test_13_get_tapi_topology_details(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
self.assertEqual(response['status_code'], requests.codes.ok)
- self.assertEqual(len(response['output']['topology']['node']), 14, 'There should be 14 TAPI nodes')
- self.assertEqual(len(response['output']['topology']['link']), 15, 'There should be 15 TAPI links')
+ self.assertEqual(len(response['output']['topology']['node']), 8, 'There should be 8 TAPI nodes')
+ self.assertEqual(len(response['output']['topology']['link']), 3, 'There should be 3 TAPI links')
+ print(response['output']['topology']['node'][0])
+ print(response['output']['topology']['node'][1])
+ print(response['output']['topology']['node'][2])
def test_14_check_sip_details(self):
response = test_utils.transportpce_api_rpc_request(
'tapi-common', 'get-service-interface-point-list', None)
- self.assertEqual(len(response['output']['sip']), 60, 'There should be 60 service interface point')
+ self.assertEqual(len(response['output']['sip']), 72, 'There should be 72 service interface point')
# test create connectivity service from spdrA to spdrC for Photonic_media
def test_15_create_connectivity_service_PhotonicMedia(self):
+ self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = self.sAOTS
+ self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = self.sZOTS
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'create-connectivity-service', self.cr_serv_input_data)
time.sleep(self.WAITING)
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'PHOTONIC_MEDIA',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ # 'service-layer': 'PHOTONIC_MEDIA',
+ 'layer-protocol-name': 'PHOTONIC_MEDIA',
+ # 'connectivity-direction': 'BIDIRECTIONAL'
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'SPDR-SC1-XPDR1'}
# test create connectivity service from spdrA to spdrC for odu
def test_17_create_connectivity_service_ODU(self):
# pylint: disable=line-too-long
+ self.cr_serv_input_data["layer-protocol-name"] = "ODU"
self.cr_serv_input_data["end-point"][0]["layer-protocol-name"] = "ODU"
- self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = "5efda776-f8de-3e0b-9bbd-2c702e210946"
+ self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = self.sAeODU
self.cr_serv_input_data["end-point"][1]["layer-protocol-name"] = "ODU"
- self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = "8116d0af-39fa-3df5-bed2-dd2cd5e8217d"
- self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "ODU"
+ self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = self.sZeODU
+# self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "ODU"
self.cr_serv_input_data["connectivity-constraint"]["service-level"] = self.uuid_services.pm
response = test_utils.transportpce_api_rpc_request(
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'ODU',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ 'layer-protocol-name': 'ODU',
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'SPDR-SC1-XPDR1'}
# test create connectivity service from spdrA to spdrC for dsr
def test_19_create_connectivity_service_DSR(self):
# pylint: disable=line-too-long
+ self.cr_serv_input_data["layer-protocol-name"] = "DSR"
self.cr_serv_input_data["end-point"][0]["layer-protocol-name"] = "DSR"
- self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = "c14797a0-adcc-3875-a1fe-df8949d1a2d7"
+ self.cr_serv_input_data["end-point"][0]["service-interface-point"]["service-interface-point-uuid"] = self.sADSR
self.cr_serv_input_data["end-point"][1]["layer-protocol-name"] = "DSR"
- self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = "25812ef2-625d-3bf8-af55-5e93946d1c22"
- self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "DSR"
+ self.cr_serv_input_data["end-point"][1]["service-interface-point"]["service-interface-point-uuid"] = self.sZDSR
+# self.cr_serv_input_data["connectivity-constraint"]["service-layer"] = "DSR"
self.cr_serv_input_data["connectivity-constraint"]["requested-capacity"]["total-size"]["value"] = "10"
self.cr_serv_input_data["connectivity-constraint"]["service-level"] = self.uuid_services.odu
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'DSR',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ 'layer-protocol-name': 'DSR',
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'SPDR-SC1-XPDR1'}
for ele in liste_service:
if ele['uuid'] == self.uuid_services.pm:
self.assertEqual(ele['operational-state'], 'ENABLED')
- self.assertEqual(ele['service-layer'], 'PHOTONIC_MEDIA')
+# self.assertEqual(ele['service-layer'], 'PHOTONIC_MEDIA')
+ self.assertEqual(ele['layer-protocol-name'], 'PHOTONIC_MEDIA')
nbconnection = len(ele['connection'])
self.assertEqual(nbconnection, 3, 'There should be 3 connections')
elif ele['uuid'] == self.uuid_services.odu:
self.assertEqual(ele['operational-state'], 'ENABLED')
- self.assertEqual(ele['service-layer'], 'ODU')
+# self.assertEqual(ele['service-layer'], 'ODU')
+ self.assertEqual(ele['layer-protocol-name'], 'ODU')
nbconnection = len(ele['connection'])
self.assertEqual(nbconnection, 1, 'There should be 1 connections')
elif ele['uuid'] == self.uuid_services.dsr:
self.assertEqual(ele['operational-state'], 'ENABLED')
- self.assertEqual(ele['service-layer'], 'DSR')
+# self.assertEqual(ele['service-layer'], 'DSR')
+ self.assertEqual(ele['layer-protocol-name'], 'DSR')
nbconnection = len(ele['connection'])
self.assertEqual(nbconnection, 2, 'There should be 2 connections')
else:
time.sleep(2)
def test_22_delete_connectivity_service_DSR(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.dsr)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.dsr)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response["status_code"], (requests.codes.ok, requests.codes.no_content))
time.sleep(self.WAITING)
def test_23_delete_connectivity_service_ODU(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.odu)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.odu)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response["status_code"], (requests.codes.ok, requests.codes.no_content))
time.sleep(self.WAITING)
def test_24_delete_connectivity_service_PhotonicMedia(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.pm)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.pm)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response["status_code"], (requests.codes.ok, requests.codes.no_content))
self.odu = None
self.dsr = None
self.eth = None
+# XPDR-A1-XPDR1+XPONDER Uuid is:
+# 4378fc29-6408-39ec-8737-5008c3dc49e5
+# XPDR-C1-XPDR1+XPONDER Uuid is:
+# 1770bea4-b1da-3b20-abce-7d182c0ec0df
+# ROADM-A1+PHOTONIC_MEDIA Uuid is:
+# 3b726367-6f2d-3e3f-9033-d99b61459075
class TransportPCEFulltesting(unittest.TestCase):
}
],
"connectivity-constraint": {
- "service-layer": "ETH",
+ # "service-layer": "ETH",
"service-type": "POINT_TO_POINT_CONNECTIVITY",
"service-level": "Some service-level",
"requested-capacity": {
"total-size": {
"value": "100",
- "unit": "GB"
+ "unit": "tapi-common:CAPACITY_UNIT_GBPS"
}
}
},
- "state": "Some state"
+ "topology-constraint": [
+ {
+ "local-id": "localIdTopoConstraint",
+ "name": [
+ {
+ "value-name": "Dumb constraint",
+ "value": "for debug1"
+ }
+ ]
+ }
+ ],
+ "state": "LOCKED",
+ "layer-protocol-name": "ETH"
}
- del_serv_input_data = {"service-id-or-name": "TBD"}
+ del_serv_input_data = {"uuid": "TBD"}
- tapi_topo = {"topology-id-or-name": "TBD"}
+ tapi_topo = {"topology-id": "TBD"}
node_details = {
- "topology-id-or-name": "TBD",
- "node-id-or-name": "TBD"
+ "topology-id": "TBD",
+ "node-id": "TBD"
}
- tapi_serv_details = {"service-id-or-name": "TBD"}
+ tapi_serv_details = {"uuid": "TBD"}
processes = []
uuid_services = UuidServices()
input_dict_1 = {'administrative-state': 'LOCKED',
'lifecycle-state': 'PLANNED',
'operational-state': 'DISABLED',
- 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
- 'service-layer': 'ETH',
- 'connectivity-direction': 'BIDIRECTIONAL'
+ # 'service-type': 'POINT_TO_POINT_CONNECTIVITY',
+ # 'service-layer': 'ETH',
+ 'layer-protocol-name': 'ETH',
+ # 'connectivity-direction': 'BIDIRECTIONAL'
+ 'direction': 'BIDIRECTIONAL'
}
input_dict_2 = {'value-name': 'OpenROADM node id',
'value': 'XPDR-C1-XPDR1'}
time.sleep(1)
def test_13_get_connectivity_service_Ethernet(self):
- self.tapi_serv_details["service-id-or-name"] = str(self.uuid_services.eth)
+ self.tapi_serv_details["uuid"] = str(self.uuid_services.eth)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'get-connectivity-service-details', self.tapi_serv_details)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(link['org-openroadm-common-network:operational-state'], 'inService')
self.assertEqual(link['org-openroadm-common-network:administrative-state'], 'inService')
self.assertEqual(nb_updated_link, 2, "Only two xponder-output/input links should have been modified")
- time.sleep(1)
+ time.sleep(10)
def test_17_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["node-id"] = "1770bea4-b1da-3b20-abce-7d182c0ec0df"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+DSR"
- response = test_utils.transportpce_api_rpc_request(
- 'tapi-topology', 'get-node-details', self.node_details)
- self.assertEqual(response['status_code'], requests.codes.ok)
- nep_list = response['output']['node']['owned-node-edge-point']
- for nep in nep_list:
- if 'XPDR1-NETWORK1' in nep['name'][0]['value']:
- self.assertEqual(nep['operational-state'], 'DISABLED',
- "Operational State should be 'DISABLED'")
- self.assertEqual(nep['administrative-state'], 'LOCKED',
- "Administrative State should be 'LOCKED'")
- nb_updated_neps += 1
- else:
- self.assertEqual(nep['operational-state'], 'ENABLED',
- "Operational State should be 'ENABLED'")
- self.assertEqual(nep['administrative-state'], 'UNLOCKED',
- "Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 4, "Only two xponder neps should have been modified")
+ self.node_details["node-id"] = "XPDR-C1-XPDR1+DSR"
+# response = test_utils.transportpce_api_rpc_request(
+# 'tapi-topology', 'get-node-details', self.node_details)
+# self.assertEqual(response['status_code'], requests.codes.ok)
+# nep_list = response['output']['node']['owned-node-edge-point']
+# for nep in nep_list:
+# if 'XPDR1-NETWORK1' in nep['name'][0]['value']:
+# self.assertEqual(nep['operational-state'], 'DISABLED',
+# "Operational State should be 'DISABLED'")
+# self.assertEqual(nep['administrative-state'], 'LOCKED',
+# "Administrative State should be 'LOCKED'")
+# nb_updated_neps += 1
+# else:
+# self.assertEqual(nep['operational-state'], 'ENABLED',
+# "Operational State should be 'ENABLED'")
+# self.assertEqual(nep['administrative-state'], 'UNLOCKED',
+# "Administrative State should be 'UNLOCKED'")
+ self.assertEqual(nb_updated_neps, 3, "3 xponder neps (OTS, OTSI_MC, eODU) should have been modified")
time.sleep(1)
def test_18_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
self.assertEqual(response['status_code'], requests.codes.ok)
link_list = response['output']['topology']['link']
+ print(response['output']['topology']['link'])
nb_updated_link = 0
for link in link_list:
if all(x in link['name'][0]['value'] for x in ['XPDR-C1-XPDR1', 'XPDR1-NETWORK1']):
else:
self.assertEqual(link['operational-state'], 'ENABLED')
self.assertEqual(link['administrative-state'], 'UNLOCKED')
- self.assertEqual(nb_updated_link, 2,
- "Only two xponder-output/input & xponder-transi links should have been modified")
+ self.assertEqual(nb_updated_link, 1,
+ "Only one xponder-output/input bidirectional link should have been modified")
time.sleep(1)
def test_19_check_update_service_Ethernet(self):
self.assertEqual(response['services'][0]['administrative-state'], 'inService')
def test_20_check_update_connectivity_service_Ethernet(self):
- self.tapi_serv_details["service-id-or-name"] = str(self.uuid_services.eth)
+ self.tapi_serv_details["uuid"] = str(self.uuid_services.eth)
+ print(str(self.uuid_services.eth))
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'get-connectivity-service-details', self.tapi_serv_details)
self.assertEqual(response['status_code'], requests.codes.ok)
time.sleep(1)
def test_24_check_update_tapi_neps_ok(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "XPDR-C1-XPDR1+OTSi"
+ self.node_details["node-id"] = "1770bea4-b1da-3b20-abce-7d182c0ec0df"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.node_details["node-id-or-name"] = "XPDR-C1-XPDR1+DSR"
- response = test_utils.transportpce_api_rpc_request(
- 'tapi-topology', 'get-node-details', self.node_details)
- self.assertEqual(response['status_code'], requests.codes.ok)
- nep_list = response['output']['node']['owned-node-edge-point']
- for nep in nep_list:
- self.assertEqual(nep['operational-state'], 'ENABLED',
- "Operational State should be 'ENABLED'")
- self.assertEqual(nep['administrative-state'], 'UNLOCKED',
- "Administrative State should be 'UNLOCKED'")
+# self.node_details["node-id"] = "XPDR-C1-XPDR1+DSR"
+# response = test_utils.transportpce_api_rpc_request(
+# 'tapi-topology', 'get-node-details', self.node_details)
+# self.assertEqual(response['status_code'], requests.codes.ok)
+# nep_list = response['output']['node']['owned-node-edge-point']
+# for nep in nep_list:
+# self.assertEqual(nep['operational-state'], 'ENABLED',
+# "Operational State should be 'ENABLED'")
+# self.assertEqual(nep['administrative-state'], 'UNLOCKED',
+# "Administrative State should be 'UNLOCKED'")
time.sleep(1)
def test_25_check_update_tapi_links_ok(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
time.sleep(1)
def test_31_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 3, "Only three roadm neps should have been modified")
+ self.assertEqual(nb_updated_neps, 2, "Only 2 roadm SRG-PP nep (OTS/MC)should have been modified")
time.sleep(1)
def test_32_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
self.test_23_check_update_openroadm_topo_ok()
def test_38_check_update_tapi_neps_ok(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
time.sleep(1)
def test_45_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 3, "Only three roadm neps should have been modified")
+ self.assertEqual(nb_updated_neps, 4, "4 roadm NEPS should have been modified (OTS/OMS/MC/OTSI_MC")
time.sleep(1)
def test_46_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
time.sleep(1)
def test_59_check_update_tapi_neps(self):
- self.node_details["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
- self.node_details["node-id-or-name"] = "ROADM-A1+PHOTONIC_MEDIA"
+ self.node_details["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
+# self.node_details["node-id"] = uuid.UUID(bytes="ROADM-A1+PHOTONIC_MEDIA".bytes)
+ self.node_details["node-id"] = "3b726367-6f2d-3e3f-9033-d99b61459075"
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-node-details', self.node_details)
self.assertEqual(response['status_code'], requests.codes.ok)
"Operational State should be 'ENABLED'")
self.assertEqual(nep['administrative-state'], 'UNLOCKED',
"Administrative State should be 'UNLOCKED'")
- self.assertEqual(nb_updated_neps, 3, "Only three roadm neps should have been modified")
+ self.assertEqual(nb_updated_neps, 1, "Only 1 roadm neps OTS should have been modified for SRG2PP")
time.sleep(1)
def test_60_check_update_tapi_links(self):
- self.tapi_topo["topology-id-or-name"] = test_utils.T0_FULL_MULTILAYER_TOPO
+ self.tapi_topo["topology-id"] = test_utils.T0_FULL_MULTILAYER_TOPO_UUID
response = test_utils.transportpce_api_rpc_request(
'tapi-topology', 'get-topology-details', self.tapi_topo)
time.sleep(2)
self.test_13_get_connectivity_service_Ethernet()
def test_63_delete_connectivity_service_Ethernet(self):
- self.del_serv_input_data["service-id-or-name"] = str(self.uuid_services.eth)
+ self.del_serv_input_data["uuid"] = str(self.uuid_services.eth)
response = test_utils.transportpce_api_rpc_request(
'tapi-connectivity', 'delete-connectivity-service', self.del_serv_input_data)
self.assertIn(response['status_code'], (requests.codes.ok, requests.codes.no_content))