Upgrade portmapping YANG to enable flex-grid
[transportpce.git] / networkmodel / src / main / java / org / opendaylight / transportpce / networkmodel / util / OpenRoadmOtnTopology.java
index f3a9f37c531ce1889e476d4dd96b691c3371f2bc..e7c88bf9bdda2262b928a42d720a4025b24ba1f4 100644 (file)
@@ -9,19 +9,17 @@
 package org.opendaylight.transportpce.networkmodel.util;
 
 import com.google.common.collect.ImmutableList;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.networkmodel.dto.OtnTopoNode;
 import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.XpdrNodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
@@ -157,23 +155,24 @@ public final class OpenRoadmOtnTopology {
     public static TopologyShard updateOtnLinks(List<Link> suppOdu4Links, List<TerminationPoint> oldTps,
         String serviceRate, Short tribPortNb, Short tribSoltNb, boolean isDeletion) {
         List<Link> links = new ArrayList<>();
+        Long bwIncr = 10000L;
+        if ("1G".equals(serviceRate)) {
+            bwIncr = 1000L;
+        }
         for (Link link : suppOdu4Links) {
             if (link.augmentation(Link1.class) != null && link.augmentation(Link1.class).getAvailableBandwidth() != null
                 && link.augmentation(Link1.class).getUsedBandwidth() != null) {
-                Long avlBwIncr = 10000L;
-                Long usedBwIncr = 10000L;
-                if ("1G".equals(serviceRate)) {
-                    avlBwIncr = 1000L;
-                    usedBwIncr = 1000L;
-                }
                 Uint32 avlBw = link.augmentation(Link1.class).getAvailableBandwidth();
                 Uint32 usedBw = link.augmentation(Link1.class).getUsedBandwidth();
+                if (avlBw.toJava() < bwIncr) {
+                    bwIncr = 0L;
+                }
                 if (isDeletion) {
-                    links.add(updateOtnLinkBwParameters(link, avlBw.toJava() + avlBwIncr,
-                        usedBw.toJava() - usedBwIncr));
+                    links.add(updateOtnLinkBwParameters(link, avlBw.toJava() + bwIncr,
+                        usedBw.toJava() - bwIncr));
                 } else {
-                    links.add(updateOtnLinkBwParameters(link, avlBw.toJava() - avlBwIncr,
-                        usedBw.toJava() + usedBwIncr));
+                    links.add(updateOtnLinkBwParameters(link, avlBw.toJava() - bwIncr,
+                        usedBw.toJava() + bwIncr));
                 }
             } else {
                 LOG.error("Error with otn parameters of supported link {}", link.getLinkId().getValue());
@@ -181,11 +180,14 @@ public final class OpenRoadmOtnTopology {
         }
         List<TerminationPoint> tps = new ArrayList<>();
         for (TerminationPoint tp : oldTps) {
-            tps.add(updateNodeTpTsPool(tp, serviceRate, tribPortNb, tribSoltNb, isDeletion));
+            if (bwIncr != 0) {
+                tps.add(updateNodeTpTsPool(tp, serviceRate, tribPortNb, tribSoltNb, isDeletion));
+            }
         }
         if (!links.isEmpty() && !tps.isEmpty()) {
             return new TopologyShard(null, links, tps);
         } else {
+            LOG.error("unable to update otn links");
             return new TopologyShard(null, null, null);
         }
     }
@@ -217,7 +219,6 @@ public final class OpenRoadmOtnTopology {
             = new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1Builder()
             .setOtnLinkType(linkType).build();
         Link1 otnLink1 = new Link1Builder()
-            .setLinkType(OpenroadmLinkType.OTNLINK)
             .setAvailableBandwidth(Uint32.valueOf(100000))
             .setUsedBandwidth(Uint32.valueOf(0))
             .build();
@@ -232,15 +233,29 @@ public final class OpenRoadmOtnTopology {
             nodeZTopo = nodeZ + "-" + tpZ.split("-")[0];
         }
         LinkBuilder ietfLinkAZBldr = TopologyUtils.createLink(nodeATopo, nodeZTopo, tpA, tpZ, linkIdPrefix);
-        ietfLinkAZBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class,
-            tpceLink1)
-            .addAugmentation(Link1.class, otnLink1);
+        ietfLinkAZBldr
+            .addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class, tpceLink1)
+            .addAugmentation(Link1.class, otnLink1)
+            .addAugmentation(
+                org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class,
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder(
+                        ietfLinkAZBldr.augmentation(
+                            org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class))
+                    .setLinkType(OpenroadmLinkType.OTNLINK)
+                    .build());
         links.add(ietfLinkAZBldr.build());
         // create link Z-A
         LinkBuilder ietfLinkZABldr = TopologyUtils.createLink(nodeZTopo, nodeATopo, tpZ, tpA, linkIdPrefix);
-        ietfLinkZABldr.addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class,
-            tpceLink1)
-            .addAugmentation(Link1.class, otnLink1);
+        ietfLinkZABldr
+            .addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class, tpceLink1)
+            .addAugmentation(Link1.class, otnLink1)
+            .addAugmentation(
+                org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class,
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder(
+                        ietfLinkZABldr.augmentation(
+                            org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class))
+                    .setLinkType(OpenroadmLinkType.OTNLINK)
+                    .build());
         links.add(ietfLinkZABldr.build());
         return links;
     }
@@ -329,7 +344,8 @@ public final class OpenRoadmOtnTopology {
             .setTpnPool(tpnPool).build()));
 
         tpBldr.addAugmentation(TerminationPoint1.class,
-            new TerminationPoint1Builder().setXpdrTpPortConnectionAttributes(xtpcaBldr.build()).build());
+            new TerminationPoint1Builder(tp.augmentation(TerminationPoint1.class))
+                .setXpdrTpPortConnectionAttributes(xtpcaBldr.build()).build());
         return tpBldr.build();
     }