Migrate OLM module to Aluminium 84/92184/10
authormanuedelf <emmanuelle.delfour@orange.com>
Tue, 18 Aug 2020 07:03:07 +0000 (09:03 +0200)
committerguillaume.lambert <guillaume.lambert@orange.com>
Thu, 17 Sep 2020 08:28:01 +0000 (10:28 +0200)
JIRA: TRNSPRTPCE-292 TRNSPRTPCE-301
Signed-off-by: guillaume.lambert <guillaume.lambert@orange.com>
Change-Id: I1d7a9cbc18399c1e211b07aaafd64057d52bb0f0

olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java
olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java
olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils121.java
olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils22.java
olm/src/test/java/org/opendaylight/transportpce/olm/OlmPowerServiceRpcImplTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/power/PowerMgmtPowerMockTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImplSpanLossBaseTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmPowerServiceRpcImplUtil.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmTransactionUtils.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java

index 4f771c0a8009e9e176c1ad2c7dcb2cc944ebd86e..7fef99ba0182287482434233daa979682efcd953 100644 (file)
@@ -76,11 +76,13 @@ public class PowerMgmtImpl implements PowerMgmt {
                 Nodes inputNode = inputNodeOptional.get();
                 OpenroadmVersion openroadmVersion = inputNode.getNodeInfo().getOpenroadmVersion();
                 LOG.info("Getting data from input node {}", inputNode.getNodeInfo().getNodeType());
-                LOG.info("Getting mapping data for node is {}", inputNode.getMapping().stream().filter(o -> o.key()
+                LOG.info("Getting mapping data for node is {}",
+                        inputNode.nonnullMapping().values().stream().filter(o -> o.key()
                          .equals(new MappingKey(destTpId))).findFirst().toString());
                 // If its A-End transponder
                 if (destTpId.toLowerCase().contains("network")) {
-                    java.util.Optional<Mapping> mappingObject = inputNode.getMapping().stream().filter(o -> o.key()
+                    java.util.Optional<Mapping> mappingObject = inputNode.nonnullMapping()
+                            .values().stream().filter(o -> o.key()
                             .equals(new MappingKey(destTpId))).findFirst();
                     if (mappingObject.isPresent()) {
                         String circuitPackName = mappingObject.get().getSupportingCircuitPackName();
@@ -99,7 +101,7 @@ public class PowerMgmtImpl implements PowerMgmt {
                             String nextNodeId = input.getNodes().get(i + 1).getNodeId();
                             Map<String, Double> rxSRGPowerRangeMap = new HashMap<>();
                             Optional<Mapping> mappingObjectSRG = OlmUtils.getNode(nextNodeId, db)
-                                    .flatMap(node -> node.getMapping()
+                                    .flatMap(node -> node.nonnullMapping().values()
                                             .stream().filter(o -> o.key()
                                                     .equals(new MappingKey(srgId))).findFirst());
                             if (mappingObjectSRG.isPresent()) {
@@ -188,7 +190,8 @@ public class PowerMgmtImpl implements PowerMgmt {
                 String connectionNumber = srcTpId + "-" + destTpId + "-" + input.getWaveNumber();
                 LOG.info("Connection number is {}", connectionNumber);
                 if (destTpId.toLowerCase().contains("deg")) {
-                    Optional<Mapping> mappingObjectOptional = inputNode.getMapping().stream().filter(o -> o.key()
+                    Optional<Mapping> mappingObjectOptional = inputNode.nonnullMapping()
+                            .values().stream().filter(o -> o.key()
                             .equals(new MappingKey(destTpId))).findFirst();
                     if (mappingObjectOptional.isPresent()) {
                         BigDecimal spanLossTx = null;
index bbf19a18c09116220e9ac6f2c7ad0f98940303f1..1ec57e79f784b242d8adaf784a12fafb05a4d414 100644 (file)
@@ -23,6 +23,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.stream.Collectors;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -318,12 +319,12 @@ public class OlmPowerServiceImpl implements OlmPowerService {
             return Collections.emptyList();
         }
 
-        List<Link> networkLinks = networkOptional.get().getLink();
+        @Nullable Map<LinkKey, Link> networkLinks = networkOptional.get().getLink();
         if ((networkLinks == null) || networkLinks.isEmpty()) {
             LOG.warn("Links are not present in {} topology.", NetworkUtils.OVERLAY_NETWORK_ID);
             return Collections.emptyList();
         }
-        return networkLinks;
+        return new ArrayList<>(networkLinks.values());
     }
 
     /**
@@ -418,7 +419,7 @@ public class OlmPowerServiceImpl implements OlmPowerService {
                     } else {
                         otsBuilder.setSpanLossTransmit(spanLossTx).setSpanLossReceive(new RatioDB(spanLoss));
                     }
-                    interfaceBuilder.addAugmentation(Interface1.class, intf1Builder.setOts(otsBuilder.build()).build());
+                    interfaceBuilder.addAugmentation(intf1Builder.setOts(otsBuilder.build()).build());
                     openRoadmInterfaces.postInterface(realNodeId,interfaceBuilder);
                     LOG.info("Spanloss Value update completed successfully");
                     return true;
@@ -477,9 +478,7 @@ public class OlmPowerServiceImpl implements OlmPowerService {
                             new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.RatioDB(spanLoss)
                         );
                     }
-                    interfaceBuilder.addAugmentation(org.opendaylight.yang.gen.v1.http
-                        .org.openroadm.optical.transport.interfaces.rev181019.Interface1.class,
-                        intf1Builder.setOts(otsBuilder.build()).build());
+                    interfaceBuilder.addAugmentation(intf1Builder.setOts(otsBuilder.build()).build());
                     openRoadmInterfaces.postInterface(realNodeId,interfaceBuilder);
                     LOG.info("Spanloss Value update completed successfully");
                     return true;
@@ -513,7 +512,7 @@ public class OlmPowerServiceImpl implements OlmPowerService {
      * @return map with list of spans with their spanloss value
      */
     private Map<LinkId, BigDecimal> getLinkSpanloss(List<RoadmLinks> roadmLinks) {
-        Map<LinkId, BigDecimal> map = new HashMap<LinkId, BigDecimal>();
+        Map<LinkId, BigDecimal> map = new HashMap<>();
         LOG.info("Executing GetLinkSpanLoss");
         BigDecimal spanLoss;
         for (RoadmLinks link : roadmLinks) {
@@ -527,7 +526,7 @@ public class OlmPowerServiceImpl implements OlmPowerService {
                 LOG.warn("OTS is not present for the link {}", link);
                 continue;
             }
-            spanLoss = new BigDecimal(srcOtsPmHoler.getOtsParameterVal() - destOtsPmHoler.getOtsParameterVal())
+            spanLoss = BigDecimal.valueOf(srcOtsPmHoler.getOtsParameterVal() - destOtsPmHoler.getOtsParameterVal())
                 .setScale(1, RoundingMode.HALF_UP);
             LOG.info("Spanloss Calculated as :{}={}-{}",
                 spanLoss, srcOtsPmHoler.getOtsParameterVal(), destOtsPmHoler.getOtsParameterVal());
@@ -562,7 +561,7 @@ public class OlmPowerServiceImpl implements OlmPowerService {
             throw new IllegalArgumentException(
                 String.format("Could not find node %s, or supporting node is not present", mappedNodeId));
         }
-        List<SupportingNode> collect = realNode.get().getSupportingNode().stream()
+        List<SupportingNode> collect = realNode.get().nonnullSupportingNode().values().stream()
             .filter(node -> (node.getNetworkRef() != null)
                 && NetworkUtils.UNDERLAY_NETWORK_ID.equals(node.getNetworkRef().getValue())
                 && (node.getNodeRef() != null) && !Strings.isNullOrEmpty(node.getNodeRef().getValue()))
index eca25bd183d63c2f2851312cb45b87b43cd2d366..a8c85d4a3ae94cbd75ff425401600ac299f89e9d 100644 (file)
@@ -132,7 +132,7 @@ final class OlmUtils121 {
             location, org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.Direction direction) {
         List<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.get.pm.output.Measurements>
             measurements = new ArrayList<>();
-        for (CurrentPm pm : currentPmList.getCurrentPm()) {
+        for (CurrentPm pm : currentPmList.nonnullCurrentPm().values()) {
             ResourceTypeEnum currentResourceType = pm.getResource().getResourceType().getType();
             if (currentResourceType.equals(resourceTypeEnum)) {
                 Resource currentResource = pm.getResource().getResource().getResource();
index 9bb42e6a804507f7bb3170ef1d36b0d3db457be3..ebeda1d67c2a4167e2e69c38a5902df6ec690c9c 100644 (file)
@@ -10,10 +10,11 @@ package org.opendaylight.transportpce.olm.util;
 import com.google.common.base.Strings;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
@@ -51,6 +52,7 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615
 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.PmNamesEnum;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.get.pm.input.ResourceIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint16;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -95,15 +97,16 @@ final class OlmUtils22 {
         if (currentPmListOpt.isPresent()) {
             CurrentPmList  currentPmList = currentPmListOpt.get();
 
-            @Nullable
-            List<CurrentPmEntry> currentPmEntryList = currentPmList.getCurrentPmEntry();
+            @NonNull
+            Map<CurrentPmEntryKey, CurrentPmEntry> currentPmEntryList = currentPmList.nonnullCurrentPmEntry();
             LOG.info("Current PM list exists for node {} and contains {} entries.", input.getNodeId(),
                 currentPmEntryList.size());
-            for (CurrentPmEntry cpe : currentPmEntryList) {
+            for (Map.Entry<CurrentPmEntryKey, CurrentPmEntry> entry : currentPmEntryList.entrySet()) {
+                CurrentPmEntry cpe = entry.getValue();
                 CurrentPmEntryKey cpek = new CurrentPmEntryKey(cpe.getPmResourceInstance(), cpe.getPmResourceType(),
                     cpe.getPmResourceTypeExtension());
                 if (resourceKey.equals(cpek)) {
-                    List<CurrentPm> currentPMList = cpe.getCurrentPm();
+                    List<CurrentPm> currentPMList = new ArrayList<>(cpe.nonnullCurrentPm().values());
                     Stream<CurrentPm> currentPMStream = currentPMList.stream();
                     if (input.getPmNameType() != null) {
                         currentPMStream = currentPMStream.filter(pm -> pm.getType().getIntValue()
@@ -162,7 +165,7 @@ final class OlmUtils22 {
         org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity wantedGranularity) {
         List<Measurements> olmMeasurements = new ArrayList<>();
         for (CurrentPm pm : currentPmList) {
-            for (Measurement measurements: pm.getMeasurement()) {
+            for (Measurement measurements: pm.nonnullMeasurement().values()) {
                 if (measurements.getGranularity().getIntValue() == org.opendaylight.yang.gen.v1.http.org.openroadm.pm
                     .types.rev171215.PmGranularity.forValue(wantedGranularity.getIntValue()).getIntValue()) {
                     MeasurementsBuilder pmMeasureBuilder = new MeasurementsBuilder();
@@ -182,11 +185,11 @@ final class OlmUtils22 {
                 return InstanceIdentifier.create(OrgOpenroadmDevice.class);
             case Degree:
                 return InstanceIdentifier.create(OrgOpenroadmDevice.class)
-                    .child(Degree.class, new DegreeKey(Integer.parseInt(wantedResourceIdentifier.getResourceName())));
+                    .child(Degree.class, new DegreeKey(Uint16.valueOf(wantedResourceIdentifier.getResourceName())));
             case SharedRiskGroup:
                 return InstanceIdentifier.create(OrgOpenroadmDevice.class)
                     .child(SharedRiskGroup.class,
-                        new SharedRiskGroupKey(Integer.parseInt(wantedResourceIdentifier.getResourceName())));
+                        new SharedRiskGroupKey(Uint16.valueOf(wantedResourceIdentifier.getResourceName())));
             case Connection:
                 return InstanceIdentifier.create(OrgOpenroadmDevice.class)
                     .child(RoadmConnections.class, new RoadmConnectionsKey(wantedResourceIdentifier.getResourceName()));
index 3b21afe7afcabb70dd5f34c254e3bbf34e1d6db4..f950d43e87ac9380c7060832c2a7032b74ba99e7 100644 (file)
@@ -10,7 +10,9 @@ package org.opendaylight.transportpce.olm;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import org.junit.Assert;
@@ -61,6 +63,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.M
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.measurements.MeasurementBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPm;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPmBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPmKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmDataType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmNamesEnum;
@@ -172,8 +175,8 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
             .setRetrievalTime(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715
                 .DateAndTime("2018-11-01T12:00:31.456449+06:00")).build();
 
-        List<CurrentPm> currentPmList = new ArrayList<>();
-        currentPmList.add(currentPm);
+        Map<CurrentPmKey, CurrentPm> currentPmList = new HashMap<>();
+        currentPmList.put(currentPm.key(),currentPm);
 
         Optional<CurrentPmlist> currentPmlistOptional = Optional.of(new CurrentPmlistBuilder()
             .setCurrentPm(currentPmList).build());
index 126b6db41e4878745ad097d3179243b189671d6c..ab71b96261a28d20163a9ce9287ba5d4d18cc863 100644 (file)
@@ -9,7 +9,6 @@
 package org.opendaylight.transportpce.olm.power;
 
 import java.math.BigDecimal;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -59,7 +58,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Op
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.Interface1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.Interface1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.ots.container.Ots;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.ots.container.OtsBuilder;
@@ -221,7 +219,7 @@ public class PowerMgmtPowerMockTest extends AbstractTest {
         Ots ots = new OtsBuilder().setSpanLossTransmit(new RatioDB(new BigDecimal(23))).build();
         Interface1Builder intf1Builder = new Interface1Builder();
         Mockito.when(openRoadmInterfacesImpl121Spy.getInterface(Mockito.anyString(), Mockito.anyString())).thenReturn(
-                Optional.of(new InterfaceBuilder().addAugmentation(Interface1.class, intf1Builder.setOts(ots).build())
+                Optional.of(new InterfaceBuilder().addAugmentation(intf1Builder.setOts(ots).build())
                         .build()));
         CrossConnect crossConnectMock = Mockito.mock(CrossConnectImpl.class);
         Mockito.when(crossConnectMock
@@ -243,30 +241,32 @@ public class PowerMgmtPowerMockTest extends AbstractTest {
 
     private Nodes getXpdrNodesFromNodesBuilderDeg() {
         MappingBuilder mappingBuilder = getMappingBuilderDeg();
+        Mapping mapping = mappingBuilder.build();
         return new NodesBuilder().setNodeId("node 1")
                 .setNodeInfo(new NodeInfoBuilder().setNodeType(NodeTypes.Xpdr).build())
-                .setMapping(Arrays.asList(mappingBuilder.build()))
+                .setMapping(Map.of(mapping.key(),mapping))
                 .build();
     }
 
     private Nodes getXpdrNodesFromNodesBuilderNetwork() {
         MappingBuilder mappingBuilder = getMappingBuilderNetWork();
+        Mapping mapping = mappingBuilder.build();
         return new NodesBuilder().setNodeId("node 1")
                 .setNodeInfo(new NodeInfoBuilder().setNodeType(NodeTypes.Xpdr)
                         .setOpenroadmVersion(NodeInfo.OpenroadmVersion._121)
                         .build())
-                .setMapping(Arrays.asList(mappingBuilder.build()))
+                .setMapping(Map.of(mapping.key(),mapping))
                 .build();
     }
 
     private Nodes getRdmNodesFromNodesBuilder() {
         MappingBuilder mappingBuilder = getMappingBuilderDeg();
-
+        Mapping mapping = mappingBuilder.build();
         return new NodesBuilder().setNodeId("node 1").setNodeInfo(
                 new NodeInfoBuilder().setNodeType(NodeTypes.Rdm)
                         .setOpenroadmVersion(NodeInfo.OpenroadmVersion._121)
                         .build())
-                .setMapping(Arrays.asList(mappingBuilder.build()))
+                .setMapping(Map.of(mapping.key(),mapping))
                 .build();
     }
 
index ff3967b8e69be544d1576a878523810b7e19784f..528e0c34226848810c7deaedcdc46541952fdd79 100644 (file)
@@ -118,9 +118,9 @@ public class OlmPowerServiceImplSpanLossBaseTest extends AbstractTest {
                 .setSpanLossReceive(new RatioDB(new BigDecimal(25))).build();
         Interface1 ots = new Interface1Builder().setOts(otsValue).build();
         Interface interA = new InterfaceBuilder().setName("OTS-DEG2-TTP-TXRX").setType(OpticalTransport.class)
-                .addAugmentation(Interface1.class, ots).build();
+                .addAugmentation(ots).build();
         Interface interC = new InterfaceBuilder().setName("OTS-DEG1-TTP-TXRX").setType(OpticalTransport.class)
-                .addAugmentation(Interface1.class, ots).build();
+                .addAugmentation(ots).build();
         Optional<Interface> interOptA = Optional.of(interA);
         Optional<Interface> interOptC = Optional.of(interC);
         Mockito.when(this.openRoadmInterfacesImpl221.getInterface("ROADM-A1", "OTS-DEG2-TTP-TXRX"))
index f64f7bccf76a5930c768c3deb7796599fd3c8eef..3927bd22f38e4fd4c15bea50cfc7475e9eb72ce2 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615
 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.renderer.input.Nodes;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.olm.renderer.input.NodesBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public final class OlmPowerServiceRpcImplUtil {
 
@@ -51,7 +52,7 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Long.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1234")).build();
         return input;
     }
 
@@ -63,7 +64,7 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Long.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1234")).build();
         return input;
     }
 
@@ -75,7 +76,7 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Long.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1234")).build();
         return input;
     }
 
@@ -87,7 +88,7 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Long.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1234")).build();
         return input;
     }
 
@@ -100,7 +101,7 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Long.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1234")).build();
 
         return input;
     }
@@ -114,7 +115,7 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Long.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1234")).build();
 
         return input;
     }
@@ -128,7 +129,7 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Long.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1234")).build();
 
         return input;
     }
@@ -142,7 +143,7 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Long.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1234")).build();
 
         return input;
     }
@@ -151,7 +152,7 @@ public final class OlmPowerServiceRpcImplUtil {
         CalculateSpanlossBaseInput input = new CalculateSpanlossBaseInputBuilder()
                 .setLinkId(new LinkId("ROADM-A1-to-ROADM-C1"))
                 .setSrcType(CalculateSpanlossBaseInput.SrcType.Link)
-                .addAugmentation(null, null).build();
+                .build();
         return input;
     }
 
@@ -159,7 +160,7 @@ public final class OlmPowerServiceRpcImplUtil {
         CalculateSpanlossBaseInput input = new CalculateSpanlossBaseInputBuilder()
                 .setLinkId(new LinkId("ROADM-A1-to-ROADM-C1"))
                 .setSrcType(CalculateSpanlossBaseInput.SrcType.All)
-                .addAugmentation(null, null).build();
+                .build();
         return input;
     }
 
@@ -173,7 +174,7 @@ public final class OlmPowerServiceRpcImplUtil {
 
     public static CalculateSpanlossCurrentInput getCalculateSpanlossCurrentInput() {
         CalculateSpanlossCurrentInput input = new CalculateSpanlossCurrentInputBuilder()
-            .addAugmentation(null, null).build();
+            .build();
         return input;
     }
 
index 62b7219952cbc41417ee98864c5ab0b50623e1a8..c4f006d6e0097df24c1e9dfecf78f0b0fe71ff0d 100644 (file)
@@ -9,9 +9,8 @@
 package org.opendaylight.transportpce.olm.util;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
@@ -28,10 +27,11 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfac
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLinkKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributesBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.AmplifiedLinkBuilder;
@@ -52,6 +52,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
@@ -65,6 +66,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public final class OlmTransactionUtils {
 
@@ -83,64 +86,68 @@ public final class OlmTransactionUtils {
     public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks
             .Network getNetworkForSpanLoss() {
 
-        List<LinkConcatenation> linkConcentationValues = new ArrayList<>();
+        Map<LinkConcatenationKey,LinkConcatenation> linkConcentationValues = new HashMap<>();
         LinkConcatenation linkConcatenation = new LinkConcatenationBuilder()
                 .setFiberType(LinkConcatenation.FiberType.Truewave)
                 .setPmd(new FiberPmd(BigDecimal.ONE))
-                .setSRLGId(Long.valueOf(1))
-                .setSRLGLength(Long.valueOf(1))
+                .setSRLGId(Uint32.valueOf(1))
+                .setSRLGLength(Uint32.valueOf(1))
                 .build();
         LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
                 .setFiberType(LinkConcatenation.FiberType.Truewave)
                 .setPmd(new FiberPmd(BigDecimal.ONE))
-                .setSRLGId(Long.valueOf(1))
-                .setSRLGLength(Long.valueOf(1))
+                .setSRLGId(Uint32.valueOf(1))
+                .setSRLGLength(Uint32.valueOf(1))
                 .build();
-        linkConcentationValues.add(linkConcatenation);
-        linkConcentationValues.add(linkConcatenation2);
+        linkConcentationValues.put(linkConcatenation.key(),linkConcatenation);
+        linkConcentationValues.put(linkConcatenation2.key(),linkConcatenation2);
         // create 2 openroadm-topology degree nodes, end points of the link to be
-        // measured
-        List<SupportingNode> supportingNodeListA = new ArrayList<>();
-        supportingNodeListA.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("openroadm-network"))
-                .setNodeRef(new NodeId("ROADM-A1")).build());
-        Node ietfNodeA = new NodeBuilder().setNodeId(new NodeId("ROADM-A1-DEG2")).setSupportingNode(supportingNodeListA)
+        // measured;
+        SupportingNode supportingNode4RoadmA = new SupportingNodeBuilder()
+                .setNetworkRef(new NetworkId("openroadm-network"))
+                .setNodeRef(new NodeId("ROADM-A1")).build();
+        Node ietfNodeA = new NodeBuilder().setNodeId(new NodeId("ROADM-A1-DEG2"))
+                .setSupportingNode(Map.of(supportingNode4RoadmA.key(),supportingNode4RoadmA))
                 .build();
-        List<SupportingNode> supportingNodeListC = new ArrayList<>();
-        supportingNodeListC.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("openroadm-network"))
-                .setNodeRef(new NodeId("ROADM-C1")).build());
-        Node ietfNodeC = new NodeBuilder().setNodeId(new NodeId("ROADM-C1-DEG1")).setSupportingNode(supportingNodeListC)
+        SupportingNode supportingNode4RoadmC = new SupportingNodeBuilder()
+                .setNetworkRef(new NetworkId("openroadm-network"))
+                .setNodeRef(new NodeId("ROADM-C1")).build();
+        Node ietfNodeC = new NodeBuilder().setNodeId(new NodeId("ROADM-C1-DEG1"))
+                .setSupportingNode(Map.of(supportingNode4RoadmC.key(),supportingNode4RoadmC))
                 .build();
-        List<Node> ietfNodeList = new ArrayList<>();
-        ietfNodeList.add(ietfNodeA);
-        ietfNodeList.add(ietfNodeC);
-
-        List<AmplifiedLink>
-                amplifiedLinkValues = new ArrayList<>();
+        Map<NodeKey,Node> ietfNodeMap = new HashMap<>();
+        ietfNodeMap.put(ietfNodeA.key(),ietfNodeA);
+        ietfNodeMap.put(ietfNodeC.key(),ietfNodeC);
+        Map<AmplifiedLinkKey,AmplifiedLink>
+                amplifiedLinkValues = new HashMap<>();
         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al =
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
-                        .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
-                        .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130
-                                .amplified.link.attributes.amplified.link.section.element.section.element
-                                .SpanBuilder().setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm
-                                .link.rev181130.amplified.link.attributes.amplified.link.section.element.section
-                                .element.span.SpanBuilder().setAdministrativeState(AdminStates.InService)
-                                .setAutoSpanloss(true)
-                                .setClfi("clfi")
-                                .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
-                                .setLinkConcatenation(linkConcentationValues)
-                                .setSpanlossBase(new RatioDB(BigDecimal.ONE))
-                                .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
-                                .build())
+            new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
+            .AmplifiedLinkBuilder()
+                .setSectionElement(new SectionElementBuilder().setSectionElement(
+                            new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
+                            .amplified.link.section.element.section.element.SpanBuilder().setSpan(
+                                    new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
+                                    .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
+                                        .setAdministrativeState(AdminStates.InService)
+                                        .setAutoSpanloss(true)
+                                        .setClfi("clfi")
+                                        .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
+                                        .setLinkConcatenation(linkConcentationValues)
+                                        .setSpanlossBase(new RatioDB(BigDecimal.ONE))
+                                        .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
+                                        .build())
                                 .build())
                         .build())
-                        .setSectionEltNumber(Integer.valueOf(1)).build();
+                .setSectionEltNumber(Uint16.valueOf(1))
+                .build();
         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al2 =
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
-                    .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
-                    .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
-                            .attributes.amplified.link.section.element.section.element.SpanBuilder()
-                            .setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
-                                        .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
+            new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
+            .AmplifiedLinkBuilder()
+                .setSectionElement(new SectionElementBuilder().setSectionElement(
+                            new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
+                            .amplified.link.section.element.section.element.SpanBuilder().setSpan(
+                                    new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
+                                    .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
                                         .setAdministrativeState(AdminStates.InService)
                                         .setAutoSpanloss(true)
                                         .setClfi("clfi")
@@ -151,60 +158,58 @@ public final class OlmTransactionUtils {
                                         .build())
                                 .build())
                         .build())
-                        .setSectionEltNumber(Integer.valueOf(1)).build();
-        amplifiedLinkValues.add(al);
-        amplifiedLinkValues.add(al2);
+                .setSectionEltNumber(Uint16.valueOf(1))
+                .build();
+        amplifiedLinkValues.put(al.key(),al);
+        amplifiedLinkValues.put(al2.key(),al2);
         Map<Class<? extends Augmentation<Link>>, Augmentation<Link>> map = Collections.emptyMap();
-        Augmentation<Link> aug11 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123))
+        Augmentation<Link> aug11 = new Link1Builder().setAdministrativeGroup(Uint32.valueOf(123))
                 .setAdministrativeState(State.InService)
                 .setAmplified(true)
-                .setLinkLatency(Long.valueOf(123))
+                .setLinkLatency(Uint32.valueOf(123))
                 .setLinkLength(BigDecimal.valueOf(123))
                 .setOMSAttributes(new OMSAttributesBuilder()
                         .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
                         .setOppositeLink(new LinkId("link 1"))
                         .setSpan(new SpanBuilder().build())
-                        .setTEMetric(Long.valueOf(123)).build())
+                        .setTEMetric(Uint32.valueOf(123)).build())
                 .setOperationalState(State.InService).build();
         org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1 aug12 =
             new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder()
                 .setLinkType(OpenroadmLinkType.ROADMTOROADM).build();
         Augmentation<Link> aug21 = new Link1Builder()
-                .setAdministrativeGroup(Long.valueOf(123))
+                .setAdministrativeGroup(Uint32.valueOf(123))
                 .setAdministrativeState(State.InService)
                 .setAmplified(true)
-                .setLinkLatency(Long.valueOf(123))
+                .setLinkLatency(Uint32.valueOf(123))
                 .setLinkLength(BigDecimal.valueOf(123))
                 .setOMSAttributes(new OMSAttributesBuilder()
                         .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
                         .setOppositeLink(new LinkId("link 1"))
                         .setSpan(new SpanBuilder().build())
-                        .setTEMetric(Long.valueOf(123)).build())
+                        .setTEMetric(Uint32.valueOf(123)).build())
                 .setOperationalState(State.InService).build();
         org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1 aug22 =
             new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder()
                 .setLinkType(OpenroadmLinkType.ROADMTOROADM).build();
         // create the roadm-to-roadm link to be measured
-        List<Link> ietfLinkList = new ArrayList<>();
         Link roadm2roadmLink = new LinkBuilder().setLinkId(new LinkId("ROADM-A1-to-ROADM-C1"))
             .setSource(new SourceBuilder().setSourceNode(ietfNodeA.getNodeId()).setSourceTp("DEG2-TTP-TXRX").build())
             .setDestination(
                 new DestinationBuilder().setDestNode(ietfNodeC.getNodeId()).setDestTp("DEG1-TTP-TXRX").build())
-            .addAugmentation(Link1.class, aug11)
-            .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class,
-                aug12)
-            .addAugmentation(Link1.class, aug21)
-            .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class,
-                aug22)
+            .addAugmentation(aug11)
+            .addAugmentation(aug12)
+            .addAugmentation(aug21)
+            .addAugmentation(aug22)
             .build();
-        ietfLinkList.add(roadm2roadmLink);
         // create the ietf network
-        Network1 openroadmAugmToIetfNetwork = new Network1Builder().setLink(ietfLinkList).build();
+        Network1 openroadmAugmToIetfNetwork = new Network1Builder()
+                .setLink(Map.of(roadm2roadmLink.key(),roadm2roadmLink)).build();
         // openroadm Topology builder
         NetworkBuilder ietfNetworkBldr = new NetworkBuilder()
                 .setNetworkId(new NetworkId("openroadm-topology"))
-                .setNode(ietfNodeList)
-                .addAugmentation(Network1.class, openroadmAugmToIetfNetwork);
+                .setNode(ietfNodeMap)
+                .addAugmentation(openroadmAugmToIetfNetwork);
 
         return ietfNetworkBldr.build();
     }
@@ -225,27 +230,22 @@ public final class OlmTransactionUtils {
                 .setPmParameterValue(new PmDataType(new BigDecimal("-3.5")))
                 .setValidity(Validity.Complete)
                 .build();
-        List<Measurement> measurementListA = new ArrayList<>();
-        measurementListA.add(measurementA);
         CurrentPm cpA = new CurrentPmBuilder()
             .setType(org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmNamesEnum.OpticalPowerOutput)
-            .setMeasurement(measurementListA)
+            .setMeasurement(Map.of(measurementA.key(),measurementA))
             .build();
-        List<CurrentPm> currentPmListA = new ArrayList<>();
-        currentPmListA.add(cpA);
         InstanceIdentifier<Interface> interfaceIIDA = InstanceIdentifier.create(OrgOpenroadmDevice.class)
                 .child(Interface.class, new InterfaceKey("OTS-DEG2-TTP-TXRX"));
         CurrentPmEntry currentPmEntryA = new CurrentPmEntryBuilder()
-                .setCurrentPm(currentPmListA)
+                .setCurrentPm(Map.of(cpA.key(),cpA))
                 .setPmResourceInstance(interfaceIIDA)
                 .setPmResourceType(
                     org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev181019.ResourceTypeEnum.Interface)
                 .setPmResourceTypeExtension("")
                 .setRetrievalTime(new DateAndTime("2018-06-07T13:22:58+00:00"))
                 .build();
-        List<CurrentPmEntry> currentPmEntryListA = new ArrayList<>();
-        currentPmEntryListA.add(currentPmEntryA);
-        return Optional.of(new CurrentPmListBuilder().setCurrentPmEntry(currentPmEntryListA).build());
+        return Optional.of(new CurrentPmListBuilder()
+                .setCurrentPmEntry(Map.of(currentPmEntryA.key(),currentPmEntryA)).build());
     }
 
     public static Optional<CurrentPmList> getCurrentPmListC() {
@@ -254,26 +254,21 @@ public final class OlmTransactionUtils {
                 .setPmParameterValue(new PmDataType(new BigDecimal("-18.1")))
                 .setValidity(Validity.Complete)
                 .build();
-        List<Measurement> measurementListC = new ArrayList<>();
-        measurementListC.add(measurementC);
         CurrentPm cpC = new CurrentPmBuilder()
             .setType(org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmNamesEnum.OpticalPowerInput)
-            .setMeasurement(measurementListC)
+            .setMeasurement(Map.of(measurementC.key(),measurementC))
             .build();
-        List<CurrentPm> currentPmListC = new ArrayList<>();
-        currentPmListC.add(cpC);
         InstanceIdentifier<Interface> interfaceIIDC = InstanceIdentifier.create(OrgOpenroadmDevice.class)
                 .child(Interface.class, new InterfaceKey("OTS-DEG1-TTP-TXRX"));
         CurrentPmEntry currentPmEntryC = new CurrentPmEntryBuilder()
-                .setCurrentPm(currentPmListC)
+                .setCurrentPm(Map.of(cpC.key(),cpC))
                 .setPmResourceInstance(interfaceIIDC)
                 .setPmResourceType(
                     org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev181019.ResourceTypeEnum.Interface)
                 .setPmResourceTypeExtension("")
                 .setRetrievalTime(new DateAndTime("2018-06-07T13:22:58+00:00"))
                 .build();
-        List<CurrentPmEntry> currentPmEntryListC = new ArrayList<>();
-        currentPmEntryListC.add(currentPmEntryC);
-        return Optional.of(new CurrentPmListBuilder().setCurrentPmEntry(currentPmEntryListC).build());
+        return Optional.of(new CurrentPmListBuilder()
+                .setCurrentPmEntry(Map.of(currentPmEntryC.key(),currentPmEntryC)).build());
     }
 }
index 82e42421b7d1f606f559e59219899254e3daab63..bf6d08593249628595b576b9792793401c148c0f 100644 (file)
@@ -11,6 +11,7 @@ package org.opendaylight.transportpce.olm.util;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -24,6 +25,7 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.NodesKey;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.CpToDegree;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.CpToDegreeKey;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingKey;
@@ -34,10 +36,11 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev1811
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLinkKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributesBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.AmplifiedLinkBuilder;
@@ -55,13 +58,17 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1Builder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SupportingLink;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SupportingLinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SupportingLinkKey;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public final class TransactionUtils {
 
@@ -103,64 +110,61 @@ public final class TransactionUtils {
 //    }
 
     public static Network1 getNullNetwork() {
-        Network1 network = new Network1Builder().setLink(null).build();
+        Map<LinkKey, Link> nullMap = null;
+        Network1 network = new Network1Builder().setLink(nullMap).build();
         Optional.of(network);
         return network;
     }
 
     public static Network1 getEmptyNetwork() {
-        Network1 network = new Network1Builder().setLink(new ArrayList<>()).build();
+        Network1 network = new Network1Builder().setLink(Map.of()).build();
         Optional.of(network);
         return network;
     }
 
     public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network
             .rev180226.networks.Network getOverLayNetwork() {
-        List<SupportingNode> supportingNodes1 = new ArrayList<>();
-        supportingNodes1
-            .add(new SupportingNodeBuilder()
-                    .setNodeRef(new NodeId("node 1"))
-                    .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
-                .build());
+        SupportingNode supportingNode = new SupportingNodeBuilder()
+                .setNodeRef(new NodeId("node 1"))
+                .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .build();
         NodeBuilder node1Builder = new NodeBuilder()
                 .setNodeId(new NodeId("node 1"))
                 .withKey(new NodeKey(new NodeId("node 1")))
-                .setSupportingNode(supportingNodes1);
-        List<Node> nodes = new ArrayList<>();
-        nodes.add(node1Builder.build());
-        List<SupportingNode> supportingNodes = new ArrayList<>();
-        supportingNodes
-                .add(new SupportingNodeBuilder()
-                    .setNodeRef(new NodeId("node 2"))
-                    .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
-                .build());
+                .setSupportingNode(Map.of(supportingNode.key(),supportingNode));
+        Map<NodeKey,Node> nodes = new HashMap<>();
+        Node node1 = node1Builder.build();
+        nodes.put(node1.key(),node1);
+        SupportingNode supportingNode2 = new SupportingNodeBuilder()
+            .setNodeRef(new NodeId("node 2"))
+            .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .build();
         NodeBuilder node2Builder = new NodeBuilder()
                 .setNodeId(new NodeId("node 2"))
                 .withKey(new NodeKey(new NodeId("node 2")))
-                .setSupportingNode(supportingNodes);
-        nodes.add(node2Builder.build());
-        List<SupportingNode> supportingNodes3 = new ArrayList<>();
-        supportingNodes3
-            .add(new SupportingNodeBuilder()
-                .setNodeRef(new NodeId("node 3"))
-                .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
-            .build());
+                .setSupportingNode(Map.of(supportingNode2.key(),supportingNode2));
+        Node node2 = node2Builder.build();
+        nodes.put(node2.key(),node2);
+        SupportingNode supportingNode3 = new SupportingNodeBuilder()
+            .setNodeRef(new NodeId("node 3"))
+            .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .build();
         NodeBuilder node3Builder = new NodeBuilder()
                 .setNodeId(new NodeId("node 3"))
                 .withKey(new NodeKey(new NodeId("node 3")))
-                .setSupportingNode(supportingNodes3);
-        nodes.add(node3Builder.build());
-        List<SupportingNode> supportingNodes4 = new ArrayList<>();
-        supportingNodes4
-            .add(new SupportingNodeBuilder()
-                .setNodeRef(new NodeId("node 4"))
-                .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
-            .build());
+                .setSupportingNode(Map.of(supportingNode3.key(),supportingNode3));
+        Node node3 = node3Builder.build();
+        nodes.put(node3.key(),node3);
+        SupportingNode supportingNode4 = new SupportingNodeBuilder()
+            .setNodeRef(new NodeId("node 4"))
+            .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .build();
         NodeBuilder node4Builder = new NodeBuilder()
                 .setNodeId(new NodeId("node 4"))
                 .withKey(new NodeKey(new NodeId("node 4")))
-                .setSupportingNode(supportingNodes4);
-        nodes.add(node4Builder.build());
+                .setSupportingNode(Map.of(supportingNode4.key(),supportingNode4));
+        Node node4 = node4Builder.build();
+        nodes.put(node4.key(),node4);
         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder
             networkBuilder =
                 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks
@@ -174,7 +178,7 @@ public final class TransactionUtils {
     }
 
     public static Network1 getNetwork() {
-        List<SupportingLink> supportingLinks = new ArrayList<>();
+        Map<SupportingLinkKey,SupportingLink> supportingLinks = new HashMap<>();
         SupportingLink supportingLink1 = new SupportingLinkBuilder()
                 .setLinkRef("ref1")
                 .setNetworkRef(new NetworkId("net1"))
@@ -183,9 +187,9 @@ public final class TransactionUtils {
                 .setLinkRef("ref2")
                 .setNetworkRef(new NetworkId("net2"))
                 .build();
-        supportingLinks.add(supportingLink1);
-        supportingLinks.add(supportingLink2);
-        List<Link> links = new ArrayList<>();
+        supportingLinks.put(supportingLink1.key(),supportingLink1);
+        supportingLinks.put(supportingLink2.key(),supportingLink2);
+        Map<LinkKey,Link> links = new HashMap<>();
         Link link1 = new LinkBuilder()
                 .setLinkId(new LinkId("link 1"))
                 .setDestination(
@@ -214,31 +218,31 @@ public final class TransactionUtils {
                         .build())
                 .setSupportingLink(supportingLinks)
                 .build();
-        links.add(link1);
-        links.add(link2);
+        links.put(link1.key(),link1);
+        links.put(link2.key(),link2);
         Network1 network = new Network1Builder().setLink(links).build();
         Optional.of(network);
         return network;
     }
 
     public static Network1 getNetwork2() {
-        List<LinkConcatenation> linkConcentationValues = new ArrayList<>();
+        Map<LinkConcatenationKey,LinkConcatenation> linkConcentationValues = new HashMap<>();
         LinkConcatenation linkConcatenation = new LinkConcatenationBuilder()
             .setFiberType(LinkConcatenation.FiberType.Truewave)
             .setPmd(new FiberPmd(BigDecimal.ONE))
-            .setSRLGId(Long.valueOf(1))
-            .setSRLGLength(Long.valueOf(1))
+            .setSRLGId(Uint32.valueOf(1))
+            .setSRLGLength(Uint32.valueOf(1))
             .build();
         LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
             .setFiberType(LinkConcatenation.FiberType.Truewave)
             .setPmd(new FiberPmd(BigDecimal.ONE))
-            .setSRLGId(Long.valueOf(1))
-            .setSRLGLength(Long.valueOf(1))
+            .setSRLGId(Uint32.valueOf(1))
+            .setSRLGLength(Uint32.valueOf(1))
             .build();
-        linkConcentationValues.add(linkConcatenation);
-        linkConcentationValues.add(linkConcatenation2);
-        List<AmplifiedLink>
-            amplifiedLinkValues = new ArrayList<>();
+        linkConcentationValues.put(linkConcatenation.key(),linkConcatenation);
+        linkConcentationValues.put(linkConcatenation2.key(),linkConcatenation2);
+        Map<AmplifiedLinkKey,AmplifiedLink>
+            amplifiedLinkValues = new HashMap<>();
         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al =
             new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
                     .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
@@ -256,7 +260,7 @@ public final class TransactionUtils {
                                     .build())
                     .build())
                 .build())
-            .setSectionEltNumber(Integer.valueOf(1)).build();
+            .setSectionEltNumber(Uint16.valueOf(1)).build();
         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al2 = new
             org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
                 .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
@@ -274,51 +278,51 @@ public final class TransactionUtils {
                                     .build())
                                     .build())
             .build())
-            .setSectionEltNumber(Integer.valueOf(1)).build();
-        amplifiedLinkValues.add(al);
-        amplifiedLinkValues.add(al2);
+            .setSectionEltNumber(Uint16.valueOf(1)).build();
+        amplifiedLinkValues.put(al.key(),al);
+        amplifiedLinkValues.put(al2.key(),al2);
         Map<Class<? extends Augmentation<Link>>, Augmentation<Link>> map = Collections.emptyMap();
-        Augmentation<Link> aug1 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123))
+        Augmentation<Link> aug1 = new Link1Builder().setAdministrativeGroup(Uint32.valueOf(123))
             .setAdministrativeState(State.InService)
             .setAmplified(true)
-            .setLinkLatency(Long.valueOf(123))
+            .setLinkLatency(Uint32.valueOf(123))
             .setLinkLength(BigDecimal.valueOf(123))
             .setLinkType(OpenroadmLinkType.ROADMTOROADM)
             .setOMSAttributes(new OMSAttributesBuilder()
                 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
                 .setOppositeLink(new LinkId("link 1"))
                 .setSpan(new SpanBuilder().build())
-                .setTEMetric(Long.valueOf(123)).build())
+                .setTEMetric(Uint32.valueOf(123)).build())
             .setOperationalState(State.InService).build();
-        Augmentation<Link> aug2 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123))
+        Augmentation<Link> aug2 = new Link1Builder().setAdministrativeGroup(Uint32.valueOf(123))
             .setAdministrativeState(State.InService)
             .setAmplified(true)
-            .setLinkLatency(Long.valueOf(123))
+            .setLinkLatency(Uint32.valueOf(123))
             .setLinkLength(BigDecimal.valueOf(123))
             .setLinkType(OpenroadmLinkType.ROADMTOROADM)
             .setOMSAttributes(new OMSAttributesBuilder()
                 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
                 .setOppositeLink(new LinkId("link 1"))
                 .setSpan(new SpanBuilder().build())
-                .setTEMetric(Long.valueOf(123)).build())
+                .setTEMetric(Uint32.valueOf(123)).build())
             .setOperationalState(State.InService).build();
 
-        List<SupportingLink> supportingLinks = new ArrayList<>();
+        Map<SupportingLinkKey,SupportingLink> supportingLinks = new HashMap<>();
         SupportingLink supportingLink = new SupportingLinkBuilder().setLinkRef("ref1")
             .setNetworkRef(new NetworkId("net1")).build();
         SupportingLink supportingLink2 = new SupportingLinkBuilder().setLinkRef("ref2")
             .setNetworkRef(new NetworkId("net1")).build();
-        supportingLinks.add(supportingLink);
-        supportingLinks.add(supportingLink2);
-        List<Link> links = new ArrayList<>();
+        supportingLinks.put(supportingLink.key(),supportingLink);
+        supportingLinks.put(supportingLink2.key(),supportingLink2);
+        Map<LinkKey,Link> links = new HashMap<>();
         Link link1 = new LinkBuilder().setLinkId(new LinkId("link 1"))
             .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 1"))
                 .setDestTp("dest tp").build())
             .setSource(new SourceBuilder().setSourceNode(new NodeId("node 2"))
                 .setSourceTp("src tp").build())
             .setSupportingLink(supportingLinks)
-            .addAugmentation(Link1.class, aug1)
-            .addAugmentation(Link1.class, aug2).build();
+            .addAugmentation(aug1)
+            .addAugmentation(aug2).build();
 
         Link link2 = new LinkBuilder().setLinkId(new LinkId("link 2"))
             .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 3"))
@@ -326,8 +330,8 @@ public final class TransactionUtils {
             .setSource(new SourceBuilder().setSourceNode(new NodeId("node 4"))
                 .setSourceTp("src tp").build())
             .setSupportingLink(supportingLinks).build();
-        links.add(link1);
-        links.add(link2);
+        links.put(link1.key(),link1);
+        links.put(link2.key(),link2);
         Network1 network = new Network1Builder().setLink(links).build();
         Optional.of(network);
         return network;
@@ -347,18 +351,17 @@ public final class TransactionUtils {
     }
 
     public static Nodes getNodes(String nodeId, String mappingKey) {
-        List<CpToDegree> cpList = new ArrayList<>();
+        Map<CpToDegreeKey,CpToDegree> cpList = new HashMap<>();
         CpToDegree cp1 = new CpToDegreeBuilder()
-            .setCircuitPackName("circuit name")
-            .setDegreeNumber(Long.valueOf(123))
+            .setCircuitPackName("circuit name1")
+            .setDegreeNumber(Uint32.valueOf(123))
             .build();
         CpToDegree cp2 = new CpToDegreeBuilder()
-            .setCircuitPackName("circuit name")
-            .setDegreeNumber(Long.valueOf(123))
+            .setCircuitPackName("circuit name2")
+            .setDegreeNumber(Uint32.valueOf(123))
             .build();
-        cpList.add(cp1);
-        cpList.add(cp2);
-        List<Mapping> mappingList = new ArrayList<>();
+        cpList.put(cp1.key(),cp1);
+        cpList.put(cp2.key(),cp2);
         Mapping map1 = new MappingBuilder()
             .setLogicalConnectionPoint("point")
             .setSupportingCircuitPackName("circuit name")
@@ -367,7 +370,6 @@ public final class TransactionUtils {
             .setSupportingPort("port")
             .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
             .build();
-        mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
             .setNodeInfo(new NodeInfoBuilder()
@@ -375,24 +377,23 @@ public final class TransactionUtils {
                 .setOpenroadmVersion(OpenroadmVersion._121)
                 .build())
             .setCpToDegree(cpList)
-            .setMapping(mappingList)
+            .setMapping(Map.of(map1.key(),map1))
             .build();
         return nodes;
     }
 
     public static Nodes getNodes2(String nodeId, String mappingKey) {
-        List<CpToDegree> cpList = new ArrayList<>();
+        Map<CpToDegreeKey,CpToDegree> cpList = new HashMap<>();
         CpToDegree cp1 = new CpToDegreeBuilder()
-            .setCircuitPackName("circuit name")
-            .setDegreeNumber(Long.valueOf(123))
+            .setCircuitPackName("circuit name1")
+            .setDegreeNumber(Uint32.valueOf(123))
             .build();
         CpToDegree cp2 = new CpToDegreeBuilder()
-            .setCircuitPackName("circuit name")
-            .setDegreeNumber(Long.valueOf(123))
+            .setCircuitPackName("circuit name2")
+            .setDegreeNumber(Uint32.valueOf(123))
             .build();
-        cpList.add(cp1);
-        cpList.add(cp2);
-        List<Mapping> mappingList = new ArrayList<>();
+        cpList.put(cp1.key(),cp1);
+        cpList.put(cp2.key(),cp2);
         Mapping map1 = new MappingBuilder()
             .setLogicalConnectionPoint("point")
             .setSupportingCircuitPackName("circuit name")
@@ -401,7 +402,6 @@ public final class TransactionUtils {
             .setSupportingPort("port")
             .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
             .build();
-        mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
             .setNodeInfo(new NodeInfoBuilder()
@@ -409,24 +409,23 @@ public final class TransactionUtils {
                 .setOpenroadmVersion(OpenroadmVersion._121)
                 .build())
             .setCpToDegree(cpList)
-            .setMapping(mappingList)
+            .setMapping(Map.of(map1.key(),map1))
             .build();
         return nodes;
     }
 
     public static Nodes getNodes3(String nodeId, String mappingKey) {
-        List<CpToDegree> cpList = new ArrayList<>();
+        Map<CpToDegreeKey,CpToDegree> cpList = new HashMap<>();
         CpToDegree cp1 = new CpToDegreeBuilder()
-            .setCircuitPackName("circuit name")
-            .setDegreeNumber(Long.valueOf(123))
+            .setCircuitPackName("circuit name1")
+            .setDegreeNumber(Uint32.valueOf(123))
             .build();
         CpToDegree cp2 = new CpToDegreeBuilder()
-            .setCircuitPackName("circuit name")
-            .setDegreeNumber(Long.valueOf(123))
+            .setCircuitPackName("circuit name2")
+            .setDegreeNumber(Uint32.valueOf(123))
             .build();
-        cpList.add(cp1);
-        cpList.add(cp2);
-        List<Mapping> mappingList = new ArrayList<>();
+        cpList.put(cp1.key(),cp1);
+        cpList.put(cp2.key(),cp2);
         Mapping map1 = new MappingBuilder()
             .setLogicalConnectionPoint("point")
             .setSupportingCircuitPackName("circuit name")
@@ -435,7 +434,6 @@ public final class TransactionUtils {
             .setSupportingPort("port")
             .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
             .build();
-        mappingList.add(map1);
         Nodes nodes = new NodesBuilder()
             .setNodeId(nodeId)
             .setNodeInfo(new NodeInfoBuilder()
@@ -443,7 +441,7 @@ public final class TransactionUtils {
                 .setOpenroadmVersion(OpenroadmVersion._121)
                 .build())
             .setCpToDegree(cpList)
-            .setMapping(mappingList)
+            .setMapping(Map.of(map1.key(),map1))
             .build();
         return nodes;
     }