Merge "Keep AvailFreqMaps when netconf session restores"
authorGuillaume Lambert <guillaume.lambert@orange.com>
Thu, 24 Feb 2022 07:31:11 +0000 (07:31 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 24 Feb 2022 07:31:11 +0000 (07:31 +0000)
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java

index 6bfdb0397cab61cb6a38c45e122be3e6c615f235..81276557cda9e5d5ffeed8de0237523aac375bfc 100644 (file)
@@ -108,6 +108,14 @@ public class NetworkModelServiceImpl implements NetworkModelService {
         try {
             LOG.info("createOpenROADMNode: {} ", nodeId);
 
+            boolean firstMount;
+            if (portMapping.getNode(nodeId) == null) {
+                firstMount = true;
+            } else {
+                LOG.info("{} already exists in portmapping but was reconnected", nodeId);
+                firstMount = false;
+            }
+
             if (!portMapping.createMappingData(nodeId, openRoadmVersion)) {
                 LOG.warn("Could not generate port mapping for {} skipping network model creation", nodeId);
                 return;
@@ -133,7 +141,8 @@ public class NetworkModelServiceImpl implements NetworkModelService {
                 openroadmNetworkNode);
 
             // nodes/links creation in openroadm-topology
-            TopologyShard topologyShard = OpenRoadmTopology.createTopologyShard(portMapping.getNode(nodeId));
+            TopologyShard topologyShard = OpenRoadmTopology.createTopologyShard(portMapping.getNode(nodeId),
+                                                                                firstMount);
             if (topologyShard != null) {
                 this.topologyShardMountedDevice.put(nodeId, topologyShard);
                 for (Node openRoadmTopologyNode : topologyShard.getNodes()) {
index 2423b9af9547e19df3ecbfcf3f8787ffd3ec2835..81e5ed563d4b3629801770b409bd4600f83f2b23 100644 (file)
@@ -76,6 +76,10 @@ public final class OpenRoadmTopology {
     }
 
     public static TopologyShard createTopologyShard(Nodes mappingNode) {
+        return createTopologyShard(mappingNode, true);
+    }
+
+    public static TopologyShard createTopologyShard(Nodes mappingNode, boolean firstMount) {
         int numOfDegrees;
         int numOfSrgs;
         List<Node> nodes = new ArrayList<>();
@@ -111,13 +115,13 @@ public final class OpenRoadmTopology {
             // create degree nodes
             for (Map.Entry<String, List<Mapping>> entry : mapDeg.entrySet()) {
                 NodeBuilder ietfNode = createDegree(entry.getKey(), entry.getValue(), mappingNode.getNodeId(),
-                    mappingNode.getNodeInfo().getNodeClli());
+                    mappingNode.getNodeInfo().getNodeClli(), firstMount);
                 nodes.add(ietfNode.build());
             }
             // create srg nodes
             for (Map.Entry<String, List<Mapping>> entry : mapSrg.entrySet()) {
                 NodeBuilder ietfNode = createSrg(entry.getKey(), entry.getValue(), mappingNode.getNodeId(),
-                    mappingNode.getNodeInfo().getNodeClli());
+                    mappingNode.getNodeInfo().getNodeClli(), firstMount);
                 nodes.add(ietfNode.build());
             }
 
@@ -243,7 +247,8 @@ public final class OpenRoadmTopology {
         return ietfNodeBldr;
     }
 
-    private static NodeBuilder createDegree(String degNb, List<Mapping> degListMap, String nodeId, String clli) {
+    private static NodeBuilder createDegree(String degNb, List<Mapping> degListMap, String nodeId, String clli,
+                                            boolean firstMount) {
         // Create tp-list
         Map<TerminationPointKey,TerminationPoint> tpMap = new HashMap<>();
         TerminationPointBuilder ietfTpBldr;
@@ -286,10 +291,12 @@ public final class OpenRoadmTopology {
         TerminationPoint ietfTp = ietfTpBldr.build();
         tpMap.put(ietfTp.key(),ietfTp);
         // set degree-attributes
-        DegreeAttributes degAtt = new DegreeAttributesBuilder()
-            .setDegreeNumber(Uint16.valueOf(degNb.split("DEG")[1]))
-            .setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available())
-            .build();
+        DegreeAttributesBuilder degAttBldr = new DegreeAttributesBuilder()
+            .setDegreeNumber(Uint16.valueOf(degNb.split("DEG")[1]));
+        if (firstMount) {
+            degAttBldr.setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available());
+        }
+        DegreeAttributes degAtt = degAttBldr.build();
         // Create ietf node augmentation to support ietf tp-list
         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder
             ietfNode1 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
@@ -313,7 +320,8 @@ public final class OpenRoadmTopology {
             .addAugmentation(ietfNode1.build());
     }
 
-    private static NodeBuilder createSrg(String srgNb, List<Mapping> srgListMap, String nodeId, String clli) {
+    private static NodeBuilder createSrg(String srgNb, List<Mapping> srgListMap, String nodeId, String clli,
+                                         boolean firstMount) {
         // Create tp-list
         Map<TerminationPointKey,TerminationPoint> tpMap = new HashMap<>();
         TerminationPointBuilder ietfTpBldr;
@@ -363,8 +371,11 @@ public final class OpenRoadmTopology {
                     .setOperationalState(State.InService)
                     .build();
         // set srg-attributes
-        SrgAttributes srgAttr = new SrgAttributesBuilder()
-                .setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available()).build();
+        SrgAttributesBuilder srgAttrBldr = new SrgAttributesBuilder();
+        if (firstMount) {
+            srgAttrBldr.setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available());
+        }
+        SrgAttributes srgAttr = srgAttrBldr.build();
         Node1 ontNode1 = new Node1Builder().setSrgAttributes(srgAttr).build();
         // Create ietf node augmentation to support ietf tp-list
         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder