X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=servicehandler%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fservicehandler%2FModelMappingUtils.java;h=67051bc8c15ac48f63702306c7239f3cb60ef8a4;hb=f87e6b2c57c7c994e223708ab5625310a35200fc;hp=033dc72b123b696a7b49f810ef33ec9f6323f1eb;hpb=51ccff8b00d89eaeed91b0b46978766fb55dedf9;p=transportpce.git diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java index 033dc72b1..67051bc8c 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java @@ -9,6 +9,9 @@ package org.opendaylight.transportpce.servicehandler; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.ListenableFuture; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.util.HashMap; +import java.util.Map; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestOutput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceAEnd; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceAEndBuilder; @@ -18,10 +21,15 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ServiceEndpoint; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommonBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.response.parameters.ResponseParametersBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.TransportAssignmentBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.McTtpBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.NmcCtp; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.NmcCtpBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.NmcCtpKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.LifecycleState; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; @@ -46,6 +54,12 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev21092 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTUflex; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OduRateIdentity; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OtuRateIdentity; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogOutputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInput; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutput; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutputBuilder; @@ -73,6 +87,9 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempSer import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list.services.SupportingServiceHierarchy; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list.services.SupportingServiceHierarchyBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list.services.SupportingServiceHierarchyKey; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirection; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirection; @@ -142,13 +159,15 @@ public final class ModelMappingUtils { new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 .service.endpoint.sp.TxDirectionBuilder() .setPort( - input.getServiceAEnd().getTxDirection().values().stream().findFirst().get().getPort()) + input.getServiceAEnd().getTxDirection().values().stream().findFirst().orElseThrow() + .getPort()) .build()) .setRxDirection( new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 .service.endpoint.sp.RxDirectionBuilder() .setPort( - input.getServiceAEnd().getRxDirection().values().stream().findFirst().get().getPort()) + input.getServiceAEnd().getRxDirection().values().stream().findFirst().orElseThrow() + .getPort()) .build()) .build()) .setServiceZEnd( @@ -164,13 +183,15 @@ public final class ModelMappingUtils { new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 .service.endpoint.sp.TxDirectionBuilder() .setPort( - input.getServiceZEnd().getTxDirection().values().stream().findFirst().get().getPort()) + input.getServiceZEnd().getTxDirection().values().stream().findFirst().orElseThrow() + .getPort()) .build()) .setRxDirection( new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 .service.endpoint.sp.RxDirectionBuilder() .setPort( - input.getServiceZEnd().getRxDirection().values().stream().findFirst().get().getPort()) + input.getServiceZEnd().getRxDirection().values().stream().findFirst().orElseThrow() + .getPort()) .build()) .build()) .setConnectionType(input.getConnectionType()) @@ -252,10 +273,10 @@ public final class ModelMappingUtils { return new ServiceAEndBuilder() .setClli(serviceAEnd.getClli()) .setNodeId(serviceAEnd.getNodeId().getValue()) - .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().get())) + .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().orElseThrow())) .setServiceFormat(serviceAEnd.getServiceFormat()) .setServiceRate(serviceAEnd.getServiceRate()) - .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get())) + .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow())) .build(); } @@ -265,10 +286,12 @@ public final class ModelMappingUtils { .path.computation.reroute.request.input.ServiceAEndBuilder() .setClli(serviceAEnd.getClli()) .setNodeId(serviceAEnd.getNodeId().getValue()) - .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().get())) + .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst() + .orElseThrow())) .setServiceFormat(serviceAEnd.getServiceFormat()) .setServiceRate(serviceAEnd.getServiceRate()) - .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get())) + .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst() + .orElseThrow())) .build(); } @@ -276,10 +299,10 @@ public final class ModelMappingUtils { return new ServiceZEndBuilder() .setClli(serviceZEnd.getClli()) .setNodeId(serviceZEnd.getNodeId().getValue()) - .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().get())) + .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().orElseThrow())) .setServiceFormat(serviceZEnd.getServiceFormat()) .setServiceRate(serviceZEnd.getServiceRate()) - .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get())) + .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().orElseThrow())) .build(); } @@ -289,10 +312,12 @@ public final class ModelMappingUtils { .path.computation.reroute.request.input.ServiceZEndBuilder() .setClli(serviceZEnd.getClli()) .setNodeId(serviceZEnd.getNodeId().getValue()) - .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().get())) + .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst() + .orElseThrow())) .setServiceFormat(serviceZEnd.getServiceFormat()) .setServiceRate(serviceZEnd.getServiceRate()) - .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get())) + .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst() + .orElseThrow())) .build(); } @@ -503,7 +528,35 @@ public final class ModelMappingUtils { } public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210 - .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput) { + .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput, + PathDescription pathDescription) { + Map supportingServiceHierarchyMap = new HashMap<>(); + Map nmcCtpMap = new HashMap<>(); + SupportingServiceHierarchyKey supportingServiceHierarchyKey = new SupportingServiceHierarchyKey( + tempServiceCreateInput.getCommonId()); + // TODO: here we assume the A-Z and Z-A has parameters + LOG.info("Min and Max frequencies are {} {}", pathDescription.getAToZDirection().getAToZMinFrequency(), + pathDescription.getAToZDirection().getAToZMinFrequency()); + nmcCtpMap.put( + new NmcCtpKey("1"), + new NmcCtpBuilder() + .setId("1") + .setFrequency(pathDescription.getAToZDirection().getCentralFrequency()) + .setWidth(pathDescription.getAToZDirection().getWidth()) + .build()); + supportingServiceHierarchyMap.put( + supportingServiceHierarchyKey, + new SupportingServiceHierarchyBuilder().setServiceIdentifier(tempServiceCreateInput.getCommonId()) + .setTransportAssignment( + new TransportAssignmentBuilder() + .setMcTtp( + new McTtpBuilder() + .setMaxFreq(pathDescription.getAToZDirection().getAToZMaxFrequency()) + .setMinFreq(pathDescription.getAToZDirection().getAToZMinFrequency()) + .build()) + .setNmcCtp(nmcCtpMap) + .build()) + .build()); return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210 .temp.service.list.ServicesBuilder() .setServiceName(tempServiceCreateInput.getCommonId()) @@ -523,6 +576,7 @@ public final class ModelMappingUtils { .setServiceZEnd( new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build()) + .setSupportingServiceHierarchy(supportingServiceHierarchyMap) .build(); } @@ -551,7 +605,7 @@ public final class ModelMappingUtils { .service.endpoint.sp.TxDirectionBuilder() .setPort( serviceInput.getServiceAEnd().getTxDirection() - .values().stream().findFirst().get().getPort()) + .values().stream().findFirst().orElseThrow().getPort()) .build()) .setRxDirection( new org.opendaylight.yang.gen.v1 @@ -559,7 +613,7 @@ public final class ModelMappingUtils { .service.endpoint.sp.RxDirectionBuilder() .setPort( serviceInput.getServiceAEnd().getRxDirection() - .values().stream().findFirst().get().getPort()) + .values().stream().findFirst().orElseThrow().getPort()) .build()) .build()) .setServiceZEnd( @@ -575,7 +629,7 @@ public final class ModelMappingUtils { .service.endpoint.sp.TxDirectionBuilder() .setPort( serviceInput.getServiceZEnd().getTxDirection() - .values().stream().findFirst().get().getPort()) + .values().stream().findFirst().orElseThrow().getPort()) .build()) .setRxDirection( new org.opendaylight.yang.gen.v1 @@ -583,7 +637,7 @@ public final class ModelMappingUtils { .service.endpoint.sp.RxDirectionBuilder() .setPort( serviceInput.getServiceZEnd().getRxDirection() - .values().stream().findFirst().get().getPort()) + .values().stream().findFirst().orElseThrow().getPort()) .build()) .build()) .setServicePathName(serviceInput.getServiceName()) @@ -607,7 +661,7 @@ public final class ModelMappingUtils { } - @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( + @SuppressFBWarnings( value = "PZLA_PREFER_ZERO_LENGTH_ARRAYS", justification = "not relevant to return and zero length array as we need real pos") public static int[] findTheLongestSubstring(String s1, String s2) { @@ -632,4 +686,45 @@ public final class ModelMappingUtils { } return new int[] { endPos - maxLen, endPos }; } + + public static ListenableFuture> + addOpenroadmServiceReply(AddOpenroadmOperationalModesToCatalogInput input, String finalAck, + String message,String responseCode) { + return RpcResultBuilder + .success( + new AddOpenroadmOperationalModesToCatalogOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .build()) + .buildFuture(); + } + + public static ListenableFuture> + addSpecificOpenroadmServiceReply(AddSpecificOperationalModesToCatalogInput input, String finalAck, + String message,String responseCode) { + return RpcResultBuilder + .success( + new AddSpecificOperationalModesToCatalogOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .build()) + .buildFuture(); + } + }