Fix CI Cent OS 8 configuration issue (workaround)
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / ModelMappingUtils.java
index 5e19d1a831cf8816c676c293141bed1e2ff0cf78..1ecb8114021a4174bac5b45031fa7fcf6504f933 100644 (file)
@@ -7,20 +7,29 @@
  */
 package org.opendaylight.transportpce.servicehandler;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ListenableFuture;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.path.computation.request.input.ServiceAEnd;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.path.computation.request.input.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.path.computation.request.input.ServiceZEnd;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.path.computation.request.input.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.service.path.rpc.result.PathDescription;
+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.rev240205.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.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.node.types.rev210528.NodeIdType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ServiceEndpoint;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.response.parameters.ResponseParametersBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.TransportAssignmentBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.transport.assignment.McTtpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.transport.assignment.NmcCtp;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.transport.assignment.NmcCtpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.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;
@@ -45,33 +54,42 @@ 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.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;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteOutputBuilder;
-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.rev230526.AddOpenroadmOperationalModesToCatalogInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.temp.service.list.services.SupportingServiceHierarchy;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.temp.service.list.services.SupportingServiceHierarchyBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.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;
@@ -89,6 +107,33 @@ import org.slf4j.LoggerFactory;
 public final class ModelMappingUtils {
     private static final Logger LOG = LoggerFactory.getLogger(ModelMappingUtils.class);
 
+    private static final ImmutableMap<String, OduRateIdentity> ODU_RATE_MAP =
+        ImmutableMap.<String, OduRateIdentity>builder()
+            .put("ODU0", ODU0.VALUE)
+            .put("ODU1", ODU1.VALUE)
+            .put("ODU2", ODU2.VALUE)
+            .put("ODU2e", ODU2e.VALUE)
+            .put("ODU3", ODU3.VALUE)
+            .put("ODU4", ODU4.VALUE)
+            .put("ODUCn", ODUCn.VALUE)
+            .put("ODUflexCbr", ODUflexCbr.VALUE)
+            .put("ODUflexFlexe", ODUflexFlexe.VALUE)
+            .put("ODUflexGfp", ODUflexGfp.VALUE)
+            .put("ODUflexImp", ODUflexImp.VALUE)
+            .build();
+
+    private static final ImmutableMap<String, OtuRateIdentity> OTU_RATE_MAP =
+        ImmutableMap.<String, OtuRateIdentity>builder()
+            .put("OTU0", OTU0.VALUE)
+            .put("OTU1", OTU1.VALUE)
+            .put("OTU2", OTU2.VALUE)
+            .put("OTU2e", OTU2e.VALUE)
+            .put("OTU3", OTU3.VALUE)
+            .put("OTU4", OTU4.VALUE)
+            .put("OTUCn", OTUCn.VALUE)
+            .put("OTUflex", OTUflex.VALUE)
+            .build();
+
     private ModelMappingUtils() {
     }
 
@@ -114,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(
@@ -136,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())
@@ -157,74 +206,20 @@ public final class ModelMappingUtils {
             .build();
     }
 
-    private static Class<? extends OduRateIdentity> getOduServiceRate(
-            Class<? extends org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OduRateIdentity>
-                oduServiceRate) {
-        if (oduServiceRate == null) {
+    private static OduRateIdentity getOduServiceRate(OduRateIdentity oduServiceRate) {
+        if (oduServiceRate == null || !ODU_RATE_MAP.containsKey(oduServiceRate.toString())) {
+            LOG.error("ODU rate {} not recognized", oduServiceRate);
             return null;
         }
-        String oduRate = oduServiceRate.getSimpleName();
-        LOG.info("ODU rate = {}", oduRate);
-        //TODO a Map would probably be more indicated here
-        switch (oduRate) {
-            case "ODU0":
-                return ODU0.class;
-            case "ODU1":
-                return ODU1.class;
-            case "ODU2":
-                return ODU2.class;
-            case "ODU2e":
-                return ODU2e.class;
-            case "ODU3":
-                return ODU3.class;
-            case "ODU4":
-                return ODU4.class;
-            case "ODUCn":
-                return ODUCn.class;
-            case "ODUflexCbr":
-                return ODUflexCbr.class;
-            case "ODUflexFlexe":
-                return ODUflexFlexe.class;
-            case "ODUflexGfp":
-                return ODUflexGfp.class;
-            case "ODUflexImp":
-                return ODUflexImp.class;
-            default:
-                LOG.error("OTU rate {} not recognized", oduRate);
-        }
-        return null;
+        return ODU_RATE_MAP.get(oduServiceRate.toString());
     }
 
-    private static Class<? extends OtuRateIdentity> getOtuServiceRate(
-            Class<? extends org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OtuRateIdentity>
-                otuServiceRate) {
-        if (otuServiceRate == null) {
+    private static OtuRateIdentity getOtuServiceRate(OtuRateIdentity otuServiceRate) {
+        if (otuServiceRate == null || !OTU_RATE_MAP.containsKey(otuServiceRate.toString())) {
+            LOG.error("OTU rate {} not recognized", otuServiceRate);
             return null;
         }
-        String otuRate = otuServiceRate.getSimpleName();
-        LOG.info("OTU rate = {}", otuRate);
-        //TODO a Map would probably be more indicated here
-        switch (otuRate) {
-            case "OTU0":
-                return OTU0.class;
-            case "OTU1":
-                return OTU1.class;
-            case "OTU2":
-                return OTU2.class;
-            case "OTU2e":
-                return OTU2e.class;
-            case "OTU3":
-                return OTU3.class;
-            case "OTU4":
-                return OTU4.class;
-            case "OTUCn":
-                return OTUCn.class;
-            case "OTUflex":
-                return OTUflex.class;
-            default:
-                LOG.error("OTU rate {} not recognized", otuRate);
-        }
-        return null;
+        return OTU_RATE_MAP.get(otuServiceRate.toString());
     }
 
     public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
@@ -278,32 +273,62 @@ 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();
     }
 
+    public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
+            .path.computation.reroute.request.input.ServiceAEnd createServiceAEndReroute(ServiceEndpoint serviceAEnd) {
+        return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
+                    .path.computation.reroute.request.input.ServiceAEndBuilder()
+                .setClli(serviceAEnd.getClli())
+                .setNodeId(serviceAEnd.getNodeId().getValue())
+                .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst()
+                        .orElseThrow()))
+                .setServiceFormat(serviceAEnd.getServiceFormat())
+                .setServiceRate(serviceAEnd.getServiceRate())
+                .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst()
+                        .orElseThrow()))
+                .build();
+    }
+
     public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) {
         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();
     }
 
+    public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
+            .path.computation.reroute.request.input.ServiceZEnd createServiceZEndReroute(ServiceEndpoint serviceZEnd) {
+        return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
+                    .path.computation.reroute.request.input.ServiceZEndBuilder()
+                .setClli(serviceZEnd.getClli())
+                .setNodeId(serviceZEnd.getNodeId().getValue())
+                .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst()
+                        .orElseThrow()))
+                .setServiceFormat(serviceZEnd.getServiceFormat())
+                .setServiceRate(serviceZEnd.getServiceRate())
+                .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst()
+                        .orElseThrow()))
+                .build();
+    }
+
     public static RxDirection createRxDirection(
-            org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+            org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                 .service.endpoint.RxDirection rxDirection) {
         return new RxDirectionBuilder().setPort(rxDirection.getPort()).build();
     }
 
     public static TxDirection createTxDirection(
-            org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+            org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                 .service.endpoint.TxDirection txDirection) {
         return new TxDirectionBuilder().setPort(txDirection.getPort()).build();
     }
@@ -417,14 +442,16 @@ public final class ModelMappingUtils {
     }
 
     public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(
-            ServiceRerouteInput input, String finalAckYes, String message) {
+            ServiceRerouteInput input, String finalAckYes, String message, String responseCode) {
         return RpcResultBuilder
             .success(
                 new ServiceRerouteOutputBuilder()
                     .setConfigurationResponseCommon(
                         new ConfigurationResponseCommonBuilder()
-                            .setResponseMessage(message)
-                            .build())
+                             .setAckFinalIndicator(finalAckYes)
+                             .setResponseCode(responseCode)
+                             .setResponseMessage(message)
+                             .build())
                     .setHardConstraints(null)
                     .setSoftConstraints(null)
                     .build())
@@ -455,16 +482,17 @@ public final class ModelMappingUtils {
                 .setConnectionType(serviceCreateInput.getConnectionType())
                 .setCustomer(serviceCreateInput.getCustomer())
                 .setCustomerContact(serviceCreateInput.getCustomerContact())
+                .setServiceResiliency(serviceCreateInput.getServiceResiliency())
                 .setHardConstraints(serviceCreateInput.getHardConstraints())
                 .setSoftConstraints(serviceCreateInput.getSoftConstraints())
                 .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader())
                 .setLifecycleState(LifecycleState.Planned)
                 .setServiceAEnd(
-                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                             .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd())
                         .build())
                 .setServiceZEnd(
-                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                             .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd())
                         .build())
                 .build();
@@ -482,11 +510,11 @@ public final class ModelMappingUtils {
                 .setSoftConstraints(serviceReconfigureInput.getSoftConstraints())
                 .setLifecycleState(LifecycleState.Planned)
                 .setServiceAEnd(
-                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                             .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd())
                         .build())
                 .setServiceZEnd(
-                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+                    new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                             .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd())
                         .build())
                 .build();
@@ -499,9 +527,37 @@ public final class ModelMappingUtils {
         return new ServicesBuilder().withKey(new ServicesKey("unknown")).build();
     }
 
-    public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
-            .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput) {
-        return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
+    public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+            .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput,
+                                                        PathDescription pathDescription) {
+        Map<SupportingServiceHierarchyKey, SupportingServiceHierarchy> supportingServiceHierarchyMap = new HashMap<>();
+        Map<NmcCtpKey, NmcCtp> 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.rev230526
                 .temp.service.list.ServicesBuilder()
             .setServiceName(tempServiceCreateInput.getCommonId())
             .setAdministrativeState(AdminStates.OutOfService)
@@ -515,11 +571,12 @@ public final class ModelMappingUtils {
             .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader())
             .setLifecycleState(LifecycleState.Planned)
             .setServiceAEnd(
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                     .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build())
             .setServiceZEnd(
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
                     .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build())
+            .setSupportingServiceHierarchy(supportingServiceHierarchyMap)
             .build();
     }
 
@@ -548,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
@@ -556,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(
@@ -572,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
@@ -580,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())
@@ -604,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) {
@@ -629,4 +686,45 @@ public final class ModelMappingUtils {
         }
         return new int[] { endPos - maxLen, endPos };
     }
+
+    public static ListenableFuture<RpcResult<AddOpenroadmOperationalModesToCatalogOutput>>
+        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<RpcResult<AddSpecificOperationalModesToCatalogOutput>>
+        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();
+    }
+
 }