Update connection and interface name 63/94563/8
authormanuedelf <emmanuelle.delfour@orange.com>
Fri, 18 Dec 2020 17:26:27 +0000 (18:26 +0100)
committermanuedelf <emmanuelle.delfour@orange.com>
Tue, 12 Jan 2021 08:51:40 +0000 (09:51 +0100)
As now we allocate frequencies instead of wavelength, change connection
and interface format name by replacing wavelength reference by lower
spectral slot number and higher spectral slot number.
For example: SRG1-PP1-TXRX-DEG1-TTP-TXRX-1 becomes
SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768
XPDR1-NETWORK1-1 becomes XPDR1-NETWORK1-761:768
- add lower and higher spectral slot number in signature methods of
crossconnect, olm, ModelMappinUtils, openroadminterface,
openroadmfactory
- add some log info
- update ServicePathInput and ServicePowerSetup in MappingUtils with
frequencies, spectral slot number and modulation format
- add new map to get slot width from service rate and modulation format
in GridConstant
- add methods in GridUtils to get lower and higher spectal slot number
from frequency
- update unit tests to take into account the new format name
- update functional tests to take into account the new format name

JIRA: TRNSPRTPCE-230
Signed-off-by: manuedelf <emmanuelle.delfour@orange.com>
Change-Id: I98f62491f2720a84d4fdc8bd189b0a123ab5f0cf

29 files changed:
common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnect.java
common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl.java
common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121.java
common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221.java
common/src/main/java/org/opendaylight/transportpce/common/fixedflex/GridConstant.java
common/src/main/java/org/opendaylight/transportpce/common/fixedflex/GridUtils.java
common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121Test.java
common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221Test.java
common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImplTest.java
common/src/test/java/org/opendaylight/transportpce/common/fixedflex/GridUtilsTest.java
olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/OlmPowerServiceRpcImplUtil.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/ModelMappingUtils.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface121.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterfaceFactory.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/DeviceRendererServiceImpl.java
renderer/src/test/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadMInterface221Test.java
tests/transportpce_tests/1.2.1/test_end2end.py
tests/transportpce_tests/1.2.1/test_olm.py
tests/transportpce_tests/1.2.1/test_renderer_service_path_nominal.py
tests/transportpce_tests/2.2.1/test_end2end.py
tests/transportpce_tests/2.2.1/test_flex_grid.py
tests/transportpce_tests/2.2.1/test_olm.py
tests/transportpce_tests/2.2.1/test_otn_end2end.py
tests/transportpce_tests/2.2.1/test_otn_renderer.py
tests/transportpce_tests/2.2.1/test_otn_sh_renderer.py
tests/transportpce_tests/2.2.1/test_renderer_service_path_nominal.py
tests/transportpce_tests/common/test_utils.py

index 1618b2a71d98788891804aee1a40c618ce1ec4b3..71181a0e6a1ac30c1bc8c6a4826a4908d98e62da 100644 (file)
@@ -41,9 +41,12 @@ public interface CrossConnect {
      *            Name of source termination point.
      * @param destTp
      *            Name of destination termination point.
+     * @param lowerSpectralSlotNumber Value of lower spectral slot number.
+     * @param higherSpectralSlotNumber Value of higher spectral slot number.
      * @return optional of connection number
      */
-    Optional<String> postCrossConnect(String deviceId, Long waveNumber, String srcTp, String destTp);
+    Optional<String> postCrossConnect(String deviceId, Long waveNumber, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber);
 
     /**
      * This method does a delete(edit-config) on roadm connection subtree for a
@@ -73,13 +76,15 @@ public interface CrossConnect {
      *            Source logical connection point.
      * @param destTp
      *            Destination logical connection point.
-     *
+     * @param lowerSpectralSlotNumber Value of lower spectral slot number.
+     * @param higherSpectralSlotNumber Value of higher spectral slot number.
      * @return list of Ports object type.
      *
      * @throws OpenRoadmInterfaceException
      *            an exception at OpenRoadm interface.
      */
-    List<?> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp)
+    List<?> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException;
 
     /**
index 5c3d905dc3dc4f7a28f47042dc45f5b166f674da..b8dccd858af0de1acada185f1fc5f7958bd6e6b3 100644 (file)
@@ -52,16 +52,19 @@ public class CrossConnectImpl implements CrossConnect {
     }
 
 
-    public Optional<String> postCrossConnect(String nodeId, Long waveNumber, String srcTp, String destTp) {
+    public Optional<String> postCrossConnect(String nodeId, Long waveNumber, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber) {
         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
         LOG.info("Cross Connect post request received for node {} with version {}",nodeId,openRoadmVersion);
         if (OPENROADM_DEVICE_VERSION_1_2_1.equals(openRoadmVersion)) {
             LOG.info("Device Version is 1.2.1");
-            return crossConnectImpl121.postCrossConnect(nodeId, waveNumber, srcTp, destTp);
+            return crossConnectImpl121.postCrossConnect(nodeId, waveNumber, srcTp, destTp,
+                    lowerSpectralSlotNumber, higherSpectralSlotNumber);
         }
         else if (OPENROADM_DEVICE_VERSION_2_2_1.equals(openRoadmVersion)) {
             LOG.info("Device Version is 2.2");
-            return crossConnectImpl221.postCrossConnect(nodeId, waveNumber, srcTp, destTp);
+            return crossConnectImpl221.postCrossConnect(nodeId, srcTp, destTp,
+                    lowerSpectralSlotNumber, higherSpectralSlotNumber);
         }
         LOG.info("Device Version not found");
         return Optional.empty();
@@ -81,14 +84,17 @@ public class CrossConnectImpl implements CrossConnect {
         return null;
     }
 
-    public List<?> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp)
+    public List<?> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException {
         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
         if (OPENROADM_DEVICE_VERSION_1_2_1.equals(openRoadmVersion)) {
-            return crossConnectImpl121.getConnectionPortTrail(nodeId, waveNumber, srcTp, destTp);
+            return crossConnectImpl121.getConnectionPortTrail(nodeId, srcTp, destTp,
+                    lowerSpectralSlotNumber, higherSpectralSlotNumber);
         }
         else if (OPENROADM_DEVICE_VERSION_2_2_1.equals(openRoadmVersion)) {
-            return crossConnectImpl221.getConnectionPortTrail(nodeId, waveNumber, srcTp, destTp);
+            return crossConnectImpl221
+                    .getConnectionPortTrail(nodeId, srcTp, destTp, lowerSpectralSlotNumber, higherSpectralSlotNumber);
         }
         return null;
     }
index 96b94f5c0a371fda66d0c5fbb5cf49f20542f56c..c84b75aad2054cb8587f45a862f67b1cbad6ee59 100644 (file)
@@ -23,6 +23,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.device.DeviceTransaction;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.PowerDBm;
@@ -57,14 +58,21 @@ public class CrossConnectImpl121 {
                 Timeouts.DEVICE_READ_TIMEOUT_UNIT);
     }
 
-    public Optional<String> postCrossConnect(String deviceId, Long waveNumber, String srcTp, String destTp) {
+    public Optional<String> postCrossConnect(String deviceId, Long waveNumber, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber) {
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder();
-        String connectionNumber = generateConnectionNumber(srcTp, destTp, waveNumber);
+        String connectionNumber = generateConnectionNumber(srcTp, destTp, spectralSlotName);
         rdmConnBldr.setConnectionNumber(connectionNumber);
         rdmConnBldr.setWavelengthNumber(Uint32.valueOf(waveNumber));
         rdmConnBldr.setOpticalControlMode(OpticalControlMode.Off);
-        rdmConnBldr.setSource(new SourceBuilder().setSrcIf(srcTp + "-" + waveNumber.toString()).build());
-        rdmConnBldr.setDestination(new DestinationBuilder().setDstIf(destTp + "-" + waveNumber.toString()).build());
+        rdmConnBldr.setSource(new SourceBuilder().setSrcIf(String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                srcTp, spectralSlotName)).build());
+        rdmConnBldr.setDestination(new DestinationBuilder()
+                .setDstIf(String.join(GridConstant.NAME_PARAMETERS_SEPARATOR, destTp, spectralSlotName))
+                .build());
         InstanceIdentifier<RoadmConnections> rdmConnectionIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
                 .child(RoadmConnections.class, new RoadmConnectionsKey(rdmConnBldr.getConnectionNumber()));
 
@@ -89,7 +97,8 @@ public class CrossConnectImpl121 {
                 deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT);
         try {
             commit.get();
-            LOG.info("Roadm-connection successfully created: {}-{}-{}", srcTp, destTp, waveNumber);
+            LOG.info("Roadm-connection successfully created: {}-{}-{}-{}", srcTp, destTp,
+                    lowerSpectralSlotNumber, higherSpectralSlotNumber);
             return Optional.of(connectionNumber);
         } catch (InterruptedException | ExecutionException e) {
             LOG.warn("Failed to post {}. Exception: ", rdmConnBldr.build(), e);
@@ -138,9 +147,11 @@ public class CrossConnectImpl121 {
     }
 
 
-    public List<Ports> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp)
-            throws OpenRoadmInterfaceException {
-        String connectionName = generateConnectionNumber(srcTp, destTp, waveNumber);
+    public List<Ports> getConnectionPortTrail(String nodeId, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber) throws OpenRoadmInterfaceException {
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber), String.valueOf(higherSpectralSlotNumber));
+        String connectionName = generateConnectionNumber(srcTp, destTp, spectralSlotName);
         Optional<MountPoint> mountPointOpt = deviceTransactionManager.getDeviceMountPoint(nodeId);
         List<Ports> ports = null;
         MountPoint mountPoint;
@@ -186,8 +197,8 @@ public class CrossConnectImpl121 {
                 .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber));
     }
 
-    private String generateConnectionNumber(String srcTp, String destTp, Long waveNumber) {
-        return srcTp + "-" + destTp + "-" + waveNumber;
+    private String generateConnectionNumber(String srcTp, String destTp, String spectralSlotName) {
+        return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR, srcTp, destTp, spectralSlotName);
     }
 
     public boolean setPowerLevel(String deviceId, OpticalControlMode mode, BigDecimal powerValue, String ctNumber) {
index 8b49e71c87a43b0980f527b146f71552844e1e6d..681b1f08062964915e8a5ed0403d5231c8ae295c 100644 (file)
@@ -23,6 +23,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.device.DeviceTransaction;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PowerDBm;
@@ -69,14 +70,27 @@ public class CrossConnectImpl221 {
                 Timeouts.DEVICE_READ_TIMEOUT_UNIT);
     }
 
-    public Optional<String> postCrossConnect(String deviceId, Long waveNumber, String srcTp, String destTp) {
-        String connectionNumber = generateConnectionName(srcTp, destTp, waveNumber);
+    public Optional<String> postCrossConnect(String deviceId, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber) {
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
+        String connectionNumber = generateConnectionName(srcTp, destTp, spectralSlotName);
         RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder()
                 .setConnectionName(connectionNumber)
                 .setOpticalControlMode(OpticalControlMode.Off)
-                .setSource(new SourceBuilder().setSrcIf(srcTp + "-nmc-" + waveNumber).build())
-                .setDestination(new DestinationBuilder().setDstIf(destTp + "-nmc-" + waveNumber)
-                .build());
+                .setSource(new SourceBuilder()
+                        .setSrcIf(String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                                srcTp,
+                                "nmc",
+                                spectralSlotName))
+                        .build())
+                .setDestination(new DestinationBuilder()
+                        .setDstIf(String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                                destTp,
+                                "nmc",
+                                spectralSlotName))
+                        .build());
 
         InstanceIdentifier<RoadmConnections> rdmConnectionIID =
                 InstanceIdentifier.create(OrgOpenroadmDevice.class)
@@ -103,7 +117,8 @@ public class CrossConnectImpl221 {
                 deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT);
         try {
             commit.get();
-            LOG.info("Roadm-connection successfully created: {}-{}-{}", srcTp, destTp, waveNumber);
+            LOG.info("Roadm-connection successfully created: {}-{}-{}-{}", srcTp, destTp, lowerSpectralSlotNumber,
+                    higherSpectralSlotNumber);
             return Optional.of(connectionNumber);
         } catch (InterruptedException | ExecutionException e) {
             LOG.warn("Failed to post {}. Exception: ", rdmConnBldr.build(), e);
@@ -164,9 +179,13 @@ public class CrossConnectImpl221 {
     }
 
 
-    public List<Ports> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp)
+    public List<Ports> getConnectionPortTrail(String nodeId, String srcTp, String destTp,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException {
-        String connectionName = generateConnectionName(srcTp, destTp, waveNumber);
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
+        String connectionName = generateConnectionName(srcTp, destTp, spectralSlotName);
         Optional<MountPoint> mountPointOpt = deviceTransactionManager.getDeviceMountPoint(nodeId);
         List<Ports> ports = null;
         MountPoint mountPoint;
@@ -266,8 +285,8 @@ public class CrossConnectImpl221 {
             new OduConnectionKey(connectionNumber));
     }
 
-    private String generateConnectionName(String srcTp, String destTp, Long waveNumber) {
-        return srcTp + "-" + destTp + "-" + waveNumber;
+    private String generateConnectionName(String srcTp, String destTp, String spectralSlotName) {
+        return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,srcTp, destTp, spectralSlotName);
     }
 
     public Optional<String> postOtnCrossConnect(List<String> createdOduInterfaces, Nodes node) {
index edf1d9808c5f7f5a2f446a9f01e3f029d1f247fc..677b09e682596949159093431e768f492982dd38 100644 (file)
@@ -67,6 +67,16 @@ public final class GridConstant {
             WIDTH_40, SLOT_WIDTH_50,
             WIDTH_80, SLOT_WIDTH_87_5);
 
+    public static final int FREQUENCY_PRECISION = 4;
+
+    /**
+     * Map to associate service rate and modulation format to frequency slot width.
+     */
+    public static final Table<Uint32, ModulationFormat, BigDecimal> FREQUENCY_SLOT_WIDTH_TABLE =
+            initFrequencySlotWidthTable();
+    public static final String SPECTRAL_SLOT_SEPARATOR = ":";
+    public static final String NAME_PARAMETERS_SEPARATOR = "-";
+
     private GridConstant() {
     }
 
@@ -78,4 +88,13 @@ public final class GridConstant {
         frequencyWidthTable.put(ServiceRateConstant.RATE_400, ModulationFormat.DpQam16, String.valueOf(WIDTH_80));
         return frequencyWidthTable;
     }
+
+    private static Table<Uint32, ModulationFormat, BigDecimal> initFrequencySlotWidthTable() {
+        Table<Uint32, ModulationFormat, BigDecimal> frequencyWidthTable = HashBasedTable.create();
+        frequencyWidthTable.put(ServiceRateConstant.RATE_100, ModulationFormat.DpQpsk, SLOT_WIDTH_50);
+        frequencyWidthTable.put(ServiceRateConstant.RATE_200, ModulationFormat.DpQpsk, SLOT_WIDTH_87_5);
+        frequencyWidthTable.put(ServiceRateConstant.RATE_300, ModulationFormat.DpQam8, SLOT_WIDTH_87_5);
+        frequencyWidthTable.put(ServiceRateConstant.RATE_400, ModulationFormat.DpQam16, SLOT_WIDTH_87_5);
+        return frequencyWidthTable;
+    }
 }
index 3e8bdafae3381e7faea710a806f3912e0ed8c84c..34695056e5d00f6d9195e092d87e6799ee1400a3 100644 (file)
@@ -131,10 +131,11 @@ public final class GridUtils {
      * @param precision int
      * @return central frequency in THz with precision
      */
-    public static FrequencyTHz getCentralFrequencyWithPrecision(BigDecimal minFrequency,
+    public static org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz
+        getCentralFrequencyWithPrecision(BigDecimal minFrequency,
             BigDecimal maxFrequency, int precision) {
-        return new FrequencyTHz(computeCentralFrequency(minFrequency, maxFrequency)
-                .setScale(precision, RoundingMode.HALF_EVEN));
+        return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz(
+                computeCentralFrequency(minFrequency, maxFrequency).setScale(precision, RoundingMode.HALF_EVEN));
 
     }
 
@@ -148,4 +149,22 @@ public final class GridUtils {
         return minFrequency.add(maxFrequency).divide(BigDecimal.valueOf(2));
     }
 
+    /**
+     * Get the lower spectral index for the frequency.
+     * @param frequency BigDecimal
+     * @return the lower spectral index
+     */
+    public static int getLowerSpectralIndexFromFrequency(BigDecimal frequency) {
+        return getIndexFromFrequency(frequency) + 1;
+    }
+
+    /**
+     * Get the higher spectral index for the frequency.
+     * @param frequency BigDecimal
+     * @return the lower spectral index
+     */
+    public static int getHigherSpectralIndexFromFrequency(BigDecimal frequency) {
+        return getIndexFromFrequency(frequency);
+    }
+
 }
index ceed112662c65145106aa399bbe19d5fa805f5e1..62bef730106659258abff8b0f320b182095c2834 100644 (file)
@@ -76,8 +76,8 @@ public class CrossConnectImpl121Test {
         Mockito.when(rwTransactionMock.commit()).thenReturn(FluentFutures.immediateNullFluentFuture());
         deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointServiceMock, 3000);
         crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager);
-        Optional<String> res = crossConnectImpl121.postCrossConnect("deviceId", 100L, "srcTp", "destTp");
-        Assert.assertEquals(res.get(), "srcTp-destTp-100");
+        Optional<String> res = crossConnectImpl121.postCrossConnect("deviceId", 100L, "srcTp", "destTp", 1, 8);
+        Assert.assertEquals(res.get(), "srcTp-destTp-1:8");
     }
 
     // TODO : fix commit
index 4a462d2ab0140937a4d19e77e8cc5f4e465f639e..8068be6012448358f6cad9c9410c9b0491cb9cac 100644 (file)
@@ -81,8 +81,8 @@ public class CrossConnectImpl221Test {
         Mockito.when(rwTransactionMock.commit()).thenReturn(FluentFutures.immediateNullFluentFuture());
         deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointServiceMock, 3000);
         crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager);
-        Optional res = crossConnectImpl221.postCrossConnect("deviceId", 100L, "srcTp", "destTp");
-        Assert.assertEquals(res.get(), "srcTp-destTp-100");
+        Optional res = crossConnectImpl221.postCrossConnect("deviceId", "srcTp", "destTp", 1, 8);
+        Assert.assertEquals(res.get(), "srcTp-destTp-1:8");
     }
 
     @Test(expected = NullPointerException.class)
index d9ce5feb0730a2a3bcab63bc23ed43ce3b572a83..f6ba7039b5a5269bcbeaebfe24fe2becb35644e9 100644 (file)
@@ -9,6 +9,7 @@
 package org.opendaylight.transportpce.common.crossconnect;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -60,14 +61,14 @@ public class CrossConnectImplTest {
 
     @Test
     public void postCrossConnect() {
-        Optional<?> res = crossConnectImpl.postCrossConnect("100", 100L, "srcTp", "destTp");
+        Optional<?> res = crossConnectImpl.postCrossConnect("100", 100L, "srcTp", "destTp", 1, 8);
         Assert.assertFalse("Optional object should be empty",res.isPresent());
 
         String devV121 = "(http://org/openroadm/device?revision=2017-02-06)org-openroadm-device";
         when(mappingUtils.getOpenRoadmVersion(any())).thenReturn(devV121);
-        when(crossConnectImpl121.postCrossConnect(any(), any(), any(), any()))
+        when(crossConnectImpl121.postCrossConnect(any(), any(), any(), any(), eq(1), eq(8)))
                 .thenReturn(Optional.of("Value"));
-        res = crossConnectImpl.postCrossConnect("100", 100L, "srcTp", "destTp");
+        res = crossConnectImpl.postCrossConnect("100", 100L, "srcTp", "destTp", 1, 8);
         Assert.assertTrue("Optional object should have a value",res.isPresent());
     }
 
index 8f9f5f9adc65107decaba9383b0f56dfc3658f68..709ea040f4506b436ef56e6b264a2960e140b70b 100644 (file)
@@ -63,6 +63,7 @@ public class GridUtilsTest {
         assertEquals("Index should be 767", 767, GridUtils.getIndexFromFrequency(BigDecimal.valueOf(196.11875)));
         assertEquals("Index should be 8", 8, GridUtils.getIndexFromFrequency(BigDecimal.valueOf(191.375)));
         assertEquals("Index should be 15", 15, GridUtils.getIndexFromFrequency(BigDecimal.valueOf(191.41875)));
+        assertEquals("Index should be 768", 768, GridUtils.getIndexFromFrequency(BigDecimal.valueOf(196.125)));
     }
 
     @Test(expected = IllegalArgumentException.class)
@@ -99,7 +100,8 @@ public class GridUtilsTest {
     @Test
     public void getCentralFrequencyWithPrecisionTest() {
         assertEquals("Central frequency should be 191.3500",
-                new FrequencyTHz(BigDecimal.valueOf(191.35).setScale(4)),
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz(
+                        BigDecimal.valueOf(191.35).setScale(4)),
                 GridUtils.getCentralFrequencyWithPrecision(BigDecimal.valueOf(191.325),
                         BigDecimal.valueOf(191.375), 4));
     }
@@ -107,7 +109,8 @@ public class GridUtilsTest {
     @Test
     public void getCentralFrequencyWithPrecisionAndRoundTest() {
         assertEquals("Central frequency should be 191.3499",
-                new FrequencyTHz(BigDecimal.valueOf(191.3499)),
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz(
+                        BigDecimal.valueOf(191.3499)),
                 GridUtils.getCentralFrequencyWithPrecision(BigDecimal.valueOf(191.3244445),
                         BigDecimal.valueOf(191.3754457788), 4));
     }
index b80ce889bf741b45e181485d6a813cbca4e373ad..d324bb0677c72e02a088d62d77c2ccdf49268982 100644 (file)
@@ -62,7 +62,12 @@ public class PowerMgmtImpl implements PowerMgmt {
     //TODO Need to Case Optical Power mode/NodeType in case of 2.2 devices
     //@SuppressFBwarnings("DM_CONVERT_CASE")
     public Boolean setPower(ServicePowerSetupInput input) {
-        LOG.info("Olm-setPower initiated");
+        LOG.info("Olm-setPower initiated for input {}", input);
+        int lowerSpectralSlotNumber = input.getLowerSpectralSlotNumber().intValue();
+        int higherSpectralSlotNumber = input.getHigherSpectralSlotNumber().intValue();
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         for (int i = 0; i < input.getNodes().size(); i++) {
             String nodeId = input.getNodes().get(i).getNodeId();
             String srcTpId =  input.getNodes().get(i).getSrcTp();
@@ -130,7 +135,8 @@ public class PowerMgmtImpl implements PowerMgmt {
                                     powerValue = rxSRGPowerRangeMap.get("MaxRx");
                                 }
                                 LOG.info("Calculated Transponder Power value is {}" , powerValue);
-                                String interfaceName = destTpId + "-" + input.getWaveNumber();
+                                String interfaceName = String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                                        destTpId, spectralSlotName);
                                 if (callSetTransponderPower(nodeId, interfaceName, new BigDecimal(powerValue),
                                         openroadmVersion)) {
                                     LOG.info("Transponder OCH connection: {} power updated ", interfaceName);
@@ -145,7 +151,8 @@ public class PowerMgmtImpl implements PowerMgmt {
                                 }
                             } else {
                                 LOG.info("SRG Power Range not found, setting the Transponder range to default");
-                                String interfaceName = destTpId + "-" + input.getWaveNumber();
+                                String interfaceName = String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                                        destTpId, spectralSlotName);
                                 if (callSetTransponderPower(nodeId, interfaceName, new BigDecimal(-5),
                                     openroadmVersion)) {
                                     LOG.info("Transponder OCH connection: {} power updated ", interfaceName);
@@ -161,7 +168,8 @@ public class PowerMgmtImpl implements PowerMgmt {
                             }
                         } else {
                             LOG.info("Tranponder range not available setting to default power for nodeId: {}", nodeId);
-                            String interfaceName = destTpId + "-" + input.getWaveNumber();
+                            String interfaceName = String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                                    destTpId, spectralSlotName);
                             if (callSetTransponderPower(nodeId, interfaceName, new BigDecimal(-5),openroadmVersion)) {
                                 LOG.info("Transponder OCH connection: {} power updated ", interfaceName);
                                 try {
@@ -188,7 +196,8 @@ public class PowerMgmtImpl implements PowerMgmt {
                 Nodes inputNode = inputNodeOptional.get();
                 OpenroadmVersion openroadmVersion = inputNode.getNodeInfo().getOpenroadmVersion();
                 LOG.info("This is a roadm {} device", openroadmVersion.getName());
-                String connectionNumber = srcTpId + "-" + destTpId + "-" + input.getWaveNumber();
+                String connectionNumber = String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,srcTpId, destTpId,
+                        spectralSlotName);
                 LOG.info("Connection number is {}", connectionNumber);
                 if (destTpId.toLowerCase().contains("deg")) {
                     Optional<Mapping> mappingObjectOptional = inputNode.nonnullMapping()
@@ -328,15 +337,20 @@ public class PowerMgmtImpl implements PowerMgmt {
      * @return true/false based on status of operation
      */
     public Boolean powerTurnDown(ServicePowerTurndownInput input) {
-        LOG.info("Olm-powerTurnDown initiated");
+        LOG.info("Olm-powerTurnDown initiated for input {}", input);
         /*Starting with last element into the list Z -> A for
           turning down A -> Z */
+        int lowerSpectralSlotNumber = input.getLowerSpectralSlotNumber().intValue();
+        int higherSpectralSlotNumber = input.getHigherSpectralSlotNumber().intValue();
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         for (int i = input.getNodes().size() - 1; i >= 0; i--) {
             String nodeId = input.getNodes().get(i).getNodeId();
             String srcTpId =  input.getNodes().get(i).getSrcTp();
             String destTpId = input.getNodes().get(i).getDestTp();
-            Long wlNumber = input.getWaveNumber().toJava();
-            String connectionNumber =  srcTpId + "-" + destTpId + "-" + wlNumber;
+            String connectionNumber =  String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,srcTpId, destTpId,
+                    spectralSlotName);
             if (destTpId.toLowerCase().contains("srg")) {
                 crossConnect.setPowerLevel(nodeId, OpticalControlMode.Off.getName(), null, connectionNumber);
             } else if (destTpId.toLowerCase().contains("deg")) {
index 1ba97d186912b5f0f54871c4c01fe31db64a2fa1..091181e1c003368c0197bf26c59594ef08345bab 100644 (file)
@@ -52,7 +52,10 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Uint32.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1"))
+            .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+            .setHigherSpectralSlotNumber(Uint32.valueOf(768))
+            .build();
         return input;
     }
 
@@ -64,7 +67,9 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Uint32.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1"))
+            .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+            .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
         return input;
     }
 
@@ -76,7 +81,9 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Uint32.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1"))
+            .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+            .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
         return input;
     }
 
@@ -88,7 +95,9 @@ public final class OlmPowerServiceRpcImplUtil {
         nodes.add(node2);
         ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
             .setServiceName("service 1")
-            .setWaveNumber(Uint32.valueOf("1234")).build();
+            .setWaveNumber(Uint32.valueOf("1"))
+            .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+            .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
         return input;
     }
 
@@ -101,7 +110,9 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Uint32.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1"))
+                .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+                .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
 
         return input;
     }
@@ -115,7 +126,9 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Uint32.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1"))
+                .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+                .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
 
         return input;
     }
@@ -129,7 +142,9 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Uint32.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1"))
+                .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+                .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
 
         return input;
     }
@@ -143,7 +158,9 @@ public final class OlmPowerServiceRpcImplUtil {
         ServicePowerTurndownInput input = new ServicePowerTurndownInputBuilder()
                 .setNodes(nodes)
                 .setServiceName("service 1")
-                .setWaveNumber(Uint32.valueOf("1234")).build();
+                .setWaveNumber(Uint32.valueOf("1"))
+                .setLowerSpectralSlotNumber(Uint32.valueOf(761))
+                .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
 
         return input;
     }
index cb4fdcec95d3f956e0dfa806a26977bbae37f58a..7e98e42fb38704f0e409a02fbbda68104d58e5d1 100644 (file)
@@ -12,9 +12,12 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.TreeMap;
 import org.opendaylight.transportpce.common.NodeIdPair;
 import org.opendaylight.transportpce.common.StringConstants;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
+import org.opendaylight.transportpce.common.fixedflex.GridUtils;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.OtnServicePathInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.OtnServicePathInputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.ServicePathInput;
@@ -28,8 +31,13 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceImplementationRequestOutputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommon;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommonBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyGHz;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.FrequencyTHz;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceDeleteInput;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirection;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint;
@@ -53,13 +61,22 @@ public final class ModelMappingUtils {
     }
 
     public static ServicePowerSetupInput createServicePowerSetupInput(List<Nodes> olmList,
-        ServiceImplementationRequestInput input) {
-        ServicePowerSetupInputBuilder olmSetupBldr = new ServicePowerSetupInputBuilder()
-            .setNodes(olmList);
+            ServiceImplementationRequestInput input) {
+        ServicePowerSetupInputBuilder olmSetupBldr = new ServicePowerSetupInputBuilder().setNodes(olmList);
         if (input != null && input.getPathDescription() != null
                 && input.getPathDescription().getAToZDirection() != null) {
-            olmSetupBldr.setWaveNumber(
-                    input.getPathDescription().getAToZDirection().getAToZWavelengthNumber());
+            AToZDirection atoZDirection = input.getPathDescription().getAToZDirection();
+            olmSetupBldr.setWaveNumber(atoZDirection.getAToZWavelengthNumber());
+            if (atoZDirection.getAToZMinFrequency() != null) {
+                olmSetupBldr.setLowerSpectralSlotNumber(Uint32
+                        .valueOf(GridUtils
+                                .getLowerSpectralIndexFromFrequency(atoZDirection.getAToZMinFrequency().getValue())));
+            }
+            if (atoZDirection.getAToZMaxFrequency() != null) {
+                olmSetupBldr.setHigherSpectralSlotNumber(Uint32
+                        .valueOf(GridUtils
+                                .getHigherSpectralIndexFromFrequency(atoZDirection.getAToZMaxFrequency().getValue())));
+            }
         }
         return olmSetupBldr.build();
     }
@@ -95,29 +112,94 @@ public final class ModelMappingUtils {
 
     public static ServicePathInputData rendererCreateServiceInputAToZ(String serviceName,
             PathDescription pathDescription) {
-        NodeLists nodeLists = getNodesListAToZ(pathDescription.getAToZDirection().nonnullAToZ().values().iterator());
+        AToZDirection atoZDirection = pathDescription.getAToZDirection();
+        LOG.info("Building ServicePathInputData for a to z direction {}", atoZDirection);
+        NodeLists nodeLists = getNodesListAToZ(atoZDirection.nonnullAToZ().values().iterator());
         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder()
             .setServiceName(serviceName)
             .setOperation(ServicePathInput.Operation.Create)
-            .setNodes(nodeLists.getList());
-        if (pathDescription.getAToZDirection().getAToZWavelengthNumber() != null) {
+            .setNodes(nodeLists.getList())
+            .setWidth(new FrequencyGHz(GridConstant.WIDTH_40));
+        if (atoZDirection.getAToZWavelengthNumber() != null) {
             servicePathInputBuilder
-                .setWaveNumber(Uint32.valueOf(pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava()));
+                .setWaveNumber(atoZDirection.getAToZWavelengthNumber());
+        }
+        if (atoZDirection.getAToZMinFrequency() != null) {
+            servicePathInputBuilder.setMinFreq(new FrequencyTHz(atoZDirection.getAToZMinFrequency().getValue()));
+            servicePathInputBuilder.setLowerSpectralSlotNumber(Uint32
+                    .valueOf(GridUtils
+                            .getLowerSpectralIndexFromFrequency(atoZDirection.getAToZMinFrequency().getValue())));
         }
+        if (atoZDirection.getAToZMaxFrequency() != null) {
+            servicePathInputBuilder.setMaxFreq(new FrequencyTHz(atoZDirection.getAToZMaxFrequency().getValue()));
+            servicePathInputBuilder.setHigherSpectralSlotNumber(
+                    Uint32.valueOf(GridUtils
+                            .getHigherSpectralIndexFromFrequency(atoZDirection.getAToZMaxFrequency().getValue())));
+        }
+        if (atoZDirection.getAToZMinFrequency() != null && atoZDirection.getAToZMaxFrequency() != null) {
+            servicePathInputBuilder.setCenterFreq(
+                    GridUtils.getCentralFrequencyWithPrecision(atoZDirection.getAToZMinFrequency().getValue(),
+                            atoZDirection.getAToZMaxFrequency().getValue(), GridConstant.FREQUENCY_PRECISION));
+        }
+        if (atoZDirection.getRate() != null && atoZDirection.getModulationFormat() != null) {
+            Optional<ModulationFormat> optionalModulationFormat = ModulationFormat
+                    .forName(atoZDirection.getModulationFormat());
+            if (optionalModulationFormat.isPresent()
+                    && GridConstant.FREQUENCY_WIDTH_TABLE
+                    .contains(atoZDirection.getRate(), optionalModulationFormat.get())) {
+                servicePathInputBuilder
+                    .setWidth(FrequencyGHz
+                        .getDefaultInstance(GridConstant.FREQUENCY_WIDTH_TABLE.get(atoZDirection.getRate(),
+                        optionalModulationFormat.get())));
+            }
+        }
+        servicePathInputBuilder.setModulationFormat(atoZDirection.getModulationFormat());
         return new ServicePathInputData(servicePathInputBuilder.build(), nodeLists);
     }
 
     public static ServicePathInputData rendererCreateServiceInputZToA(String serviceName,
             PathDescription pathDescription) {
+        ZToADirection ztoADirection = pathDescription.getZToADirection();
+        LOG.info("Building ServicePathInputData for z to a direction {}", ztoADirection);
         NodeLists nodeLists = getNodesListZtoA(pathDescription.getZToADirection().nonnullZToA().values().iterator());
         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder()
             .setOperation(ServicePathInput.Operation.Create)
             .setServiceName(serviceName)
-            .setNodes(nodeLists.getList());
-        if (pathDescription.getAToZDirection().getAToZWavelengthNumber() != null) {
+            .setNodes(nodeLists.getList())
+            .setWidth(new FrequencyGHz(GridConstant.WIDTH_40));
+        if (ztoADirection.getZToAWavelengthNumber() != null) {
             servicePathInputBuilder
-                .setWaveNumber(Uint32.valueOf(pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava()));
+                .setWaveNumber(ztoADirection.getZToAWavelengthNumber());
+        }
+        if (ztoADirection.getZToAMinFrequency() != null) {
+            servicePathInputBuilder.setMinFreq(new FrequencyTHz(ztoADirection.getZToAMinFrequency().getValue()));
+            servicePathInputBuilder.setLowerSpectralSlotNumber(Uint32
+                    .valueOf(GridUtils
+                            .getLowerSpectralIndexFromFrequency(ztoADirection.getZToAMinFrequency().getValue())));
+        }
+        if (ztoADirection.getZToAMaxFrequency() != null) {
+            servicePathInputBuilder.setMaxFreq(new FrequencyTHz(ztoADirection.getZToAMaxFrequency().getValue()));
+            servicePathInputBuilder.setHigherSpectralSlotNumber(
+                    Uint32.valueOf(GridUtils
+                            .getHigherSpectralIndexFromFrequency(ztoADirection.getZToAMaxFrequency().getValue())));
+        }
+        if (ztoADirection.getZToAMinFrequency() != null && ztoADirection.getZToAMaxFrequency() != null) {
+            servicePathInputBuilder.setCenterFreq(
+                    GridUtils.getCentralFrequencyWithPrecision(ztoADirection.getZToAMinFrequency().getValue(),
+                            ztoADirection.getZToAMaxFrequency().getValue(), GridConstant.FREQUENCY_PRECISION));
+        }
+        if (ztoADirection.getRate() != null && ztoADirection.getModulationFormat() != null) {
+            Optional<ModulationFormat> optionalModulationFormat = ModulationFormat
+                    .forName(ztoADirection.getModulationFormat());
+            if (optionalModulationFormat.isPresent()
+                    && GridConstant.FREQUENCY_WIDTH_TABLE
+                    .contains(ztoADirection.getRate(), optionalModulationFormat.get())) {
+                servicePathInputBuilder.setWidth(FrequencyGHz
+                        .getDefaultInstance(GridConstant.FREQUENCY_WIDTH_TABLE.get(ztoADirection.getRate(),
+                                optionalModulationFormat.get())));
+            }
         }
+        servicePathInputBuilder.setModulationFormat(ztoADirection.getModulationFormat());
         return new ServicePathInputData(servicePathInputBuilder.build(), nodeLists);
     }
 
index 0eb61f7b62b7a9918873d556dac8ccc773cccc88..805fa64d80ff3884108db532d4e08686f7bea3ac 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
@@ -196,24 +197,28 @@ public class OpenRoadmInterface121 {
      * @param nodeId node ID
      * @param logicalConnPoint logical connection point
      * @param waveNumber wavelength number of the OCH interface.
-     *
+     * @param lowerSpectralSlotNumber int
+     * @param higherSpectralSlotNumber int
      * @return Name of the interface if successful, otherwise return null.
      *
      * @throws OpenRoadmInterfaceException OpenRoadm interface exception
      */
 
-    public List<String> createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber)
+    public List<String> createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
-
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
             throw new OpenRoadmInterfaceException(String.format(
                 "Unable to get mapping from PortMapping for node %s and logical connection port %s",
                     nodeId, logicalConnPoint));
         }
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         // Create generic interface
         InterfaceBuilder ochInterfaceBldr = createGenericInterfaceBuilder(portMap, OpticalChannel.class,
-            createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber));
+            createOpenRoadmOchInterfaceName(logicalConnPoint, spectralSlotName));
 
         // OCH interface specific data
         OchBuilder ocIfBuilder = new OchBuilder().setWavelengthNumber(Uint32.valueOf(waveNumber));
@@ -237,14 +242,17 @@ public class OpenRoadmInterface121 {
     }
 
     public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
-        OchAttributes.ModulationFormat format) throws OpenRoadmInterfaceException {
+        OchAttributes.ModulationFormat format, int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
+                throws OpenRoadmInterfaceException {
         Mapping portMap = this.portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
             throw new OpenRoadmInterfaceException(String.format(
                 "Unable to get mapping from PortMapping for node %s and logical connection port %s",
                     nodeId, logicalConnPoint));
         }
-
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         // OCH interface specific data
         OchBuilder ocIfBuilder = new OchBuilder()
                 .setWavelengthNumber(Uint32.valueOf(waveNumber))
@@ -259,7 +267,7 @@ public class OpenRoadmInterface121 {
                 .interfaces.rev161014.Interface1Builder();
         // Create generic interface
         InterfaceBuilder ochInterfaceBldr = createGenericInterfaceBuilder(portMap, OpticalChannel.class,
-            createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber));
+            createOpenRoadmOchInterfaceName(logicalConnPoint, spectralSlotName));
         ochInterfaceBldr.addAugmentation(ochIf1Builder.setOch(ocIfBuilder.build()).build());
 
         // Post interface on the device
@@ -272,8 +280,8 @@ public class OpenRoadmInterface121 {
         return ochInterfaceBldr.getName();
     }
 
-    public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, Long waveNumber) {
-        return logicalConnectionPoint + "-" + waveNumber;
+    public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotName) {
+        return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotName);
     }
 
     public String createOpenRoadmOmsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException {
index f86d2c556ec3cf6ce040eee7e5879d43249ca2c1..3a712f9ca594ce446478cbffa003d63b9a6acfd7 100644 (file)
@@ -67,6 +67,7 @@ import org.opendaylight.yangtools.yang.common.Uint32;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+
 public class OpenRoadmInterface221 {
     private static final String MAPPING_ERROR_EXCEPTION_MESSAGE =
             "Unable to get mapping from PortMapping for node % and logical connection port %s";
@@ -113,8 +114,8 @@ public class OpenRoadmInterface221 {
         return ethInterfaceBldr.getName();
     }
 
-    public List<String> createFlexOCH(String nodeId, String logicalConnPoint, Long bitmapIndex,
-        BigDecimal centerFreq, BigDecimal width)
+    public List<String> createFlexOCH(String nodeId, String logicalConnPoint, BigDecimal centerFreq,
+        BigDecimal width, int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
@@ -125,10 +126,12 @@ public class OpenRoadmInterface221 {
         List<String> interfacesCreated = new ArrayList<>();
 
         if (logicalConnPoint.contains("DEG")) {
-            String mcInterfaceCreated = createMCInterface(nodeId, logicalConnPoint, centerFreq, width, bitmapIndex);
+            String mcInterfaceCreated = createMCInterface(nodeId, logicalConnPoint, centerFreq, width,
+                    lowerSpectralSlotNumber, higherSpectralSlotNumber);
             interfacesCreated.add(mcInterfaceCreated);
         }
-        String mcInterfaceCreated = createNMCInterface(nodeId, logicalConnPoint, centerFreq, width, bitmapIndex);
+        String mcInterfaceCreated = createNMCInterface(nodeId, logicalConnPoint, centerFreq, width,
+                lowerSpectralSlotNumber, higherSpectralSlotNumber);
         interfacesCreated.add(mcInterfaceCreated);
         return interfacesCreated;
     }
@@ -140,13 +143,15 @@ public class OpenRoadmInterface221 {
      * @param nodeId node ID
      * @param logicalConnPoint logical connection point
      * @param waveNumber wavelength number of the OCH interface.
-     *
+     * @param lowerSpectralSlotNumber int
+     * @param higherSpectralSlotNumber int
      * @return Name of the interface if successful, otherwise return null.
      *
      * @throws OpenRoadmInterfaceException OpenRoadm interface exception
      */
 
-    public List<String> createFlexOCH(String nodeId, String logicalConnPoint, Long waveNumber)
+    public List<String> createFlexOCH(String nodeId, String logicalConnPoint, Long waveNumber,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
@@ -157,16 +162,19 @@ public class OpenRoadmInterface221 {
         List<String> interfacesCreated = new ArrayList<>();
 
         if (logicalConnPoint.contains("DEG")) {
-            String mcInterfaceCreated = createMCInterface(nodeId, logicalConnPoint, waveNumber);
+            String mcInterfaceCreated = createMCInterface(nodeId, logicalConnPoint, waveNumber,
+                    lowerSpectralSlotNumber, higherSpectralSlotNumber);
             interfacesCreated.add(mcInterfaceCreated);
         }
-        String nmcInterfaceCreated = createNMCInterface(nodeId, logicalConnPoint, waveNumber);
+        String nmcInterfaceCreated = createNMCInterface(nodeId, logicalConnPoint, waveNumber,
+                lowerSpectralSlotNumber, higherSpectralSlotNumber);
         interfacesCreated.add(nmcInterfaceCreated);
         return interfacesCreated;
     }
 
 
-    public String createMCInterface(String nodeId, String logicalConnPoint, Long waveNumber)
+    public String createMCInterface(String nodeId, String logicalConnPoint, Long waveNumber,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
 
         // TODO : Check this method
@@ -180,9 +188,13 @@ public class OpenRoadmInterface221 {
         }
 
         // TODO : Check this method
-
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         InterfaceBuilder mcInterfaceBldr = createGenericInterfaceBuilder(portMap,
-                MediaChannelTrailTerminationPoint.class, logicalConnPoint + "-mc" + "-" + waveNumber)
+                MediaChannelTrailTerminationPoint.class, String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                        logicalConnPoint,"mc",
+                        spectralSlotName))
             .setSupportingInterface(portMap.getSupportingOms());
 
         McTtpBuilder mcTtpBuilder = new McTtpBuilder()
@@ -203,7 +215,7 @@ public class OpenRoadmInterface221 {
     }
 
     public String createMCInterface(String nodeId, String logicalConnPoint,
-        BigDecimal centerFrequency, BigDecimal width, Long bitmapIndex)
+        BigDecimal centerFrequency, BigDecimal width, int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
 
         // TODO : Check this method
@@ -215,12 +227,15 @@ public class OpenRoadmInterface221 {
             throw new OpenRoadmInterfaceException(
                 String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
         }
-
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         // TODO : Check this method
         LOG.info("MC interface Freq Start {} and Freq End {} and center-Freq {}",
             flexGrid.getStart(), flexGrid.getStop(), centerFrequency);
         InterfaceBuilder mcInterfaceBldr = createGenericInterfaceBuilder(portMap,
-            MediaChannelTrailTerminationPoint.class, logicalConnPoint + "-mc" + "-" + bitmapIndex)
+            MediaChannelTrailTerminationPoint.class, String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                    logicalConnPoint, "mc", spectralSlotName))
                 .setSupportingInterface(portMap.getSupportingOms());
 
         McTtpBuilder mcTtpBuilder = new McTtpBuilder()
@@ -240,7 +255,8 @@ public class OpenRoadmInterface221 {
         return mcInterfaceBldr.getName();
     }
 
-    public String createNMCInterface(String nodeId, String logicalConnPoint, Long waveNumber)
+    public String createNMCInterface(String nodeId, String logicalConnPoint, Long waveNumber,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
 
         // TODO : Check this method
@@ -251,13 +267,18 @@ public class OpenRoadmInterface221 {
             throw new OpenRoadmInterfaceException(
                 String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
         }
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         LOG.info("Freq Start {} and Freq End {} and center-Freq {}",
             fixedFlex.getStart(), fixedFlex.getStop(), fixedFlex.getCenterFrequency());
         //TODO : Check this method
         InterfaceBuilder nmcInterfaceBldr = createGenericInterfaceBuilder(portMap,
-            NetworkMediaChannelConnectionTerminationPoint.class, logicalConnPoint + "-nmc" + "-" + waveNumber);
+            NetworkMediaChannelConnectionTerminationPoint.class, String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                    logicalConnPoint, "nmc", spectralSlotName));
         if (logicalConnPoint.contains("DEG")) {
-            nmcInterfaceBldr.setSupportingInterface(logicalConnPoint + "-mc" + "-" + waveNumber);
+            nmcInterfaceBldr.setSupportingInterface(String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,
+                    logicalConnPoint, "mc", spectralSlotName));
         }
 
         NmcCtpBuilder nmcCtpIfBuilder = new NmcCtpBuilder()
@@ -277,7 +298,7 @@ public class OpenRoadmInterface221 {
     }
 
     public String createNMCInterface(String nodeId, String logicalConnPoint,
-        BigDecimal centerFrequency, BigDecimal width, Long bitmapIndex)
+        BigDecimal centerFrequency, BigDecimal width, int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
         LOG.info("This is the central frequency {}", centerFrequency.floatValue());
         LOG.info("This is the nmc width {}", width.floatValue());
@@ -287,12 +308,16 @@ public class OpenRoadmInterface221 {
             throw new OpenRoadmInterfaceException(
                 String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
         }
-
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         //TODO : Check this method
+        String nmcName = String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnPoint, "nmc",
+                spectralSlotName);
         InterfaceBuilder nmcInterfaceBldr = createGenericInterfaceBuilder(portMap,
-            NetworkMediaChannelConnectionTerminationPoint.class, logicalConnPoint + "-nmc" + "-" + bitmapIndex);
+            NetworkMediaChannelConnectionTerminationPoint.class, nmcName);
         if (logicalConnPoint.contains("DEG")) {
-            nmcInterfaceBldr.setSupportingInterface(logicalConnPoint + "-mc" + "-" + bitmapIndex);
+            nmcInterfaceBldr.setSupportingInterface(nmcName);
         }
 
         NmcCtpBuilder nmcCtpIfBuilder = new NmcCtpBuilder()
@@ -310,7 +335,8 @@ public class OpenRoadmInterface221 {
         return nmcInterfaceBldr.getName();
     }
 
-    public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber)
+    public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
         throws OpenRoadmInterfaceException {
         // TODO : Check this method
 
@@ -329,10 +355,12 @@ public class OpenRoadmInterface221 {
                 // TODO: Check if this the correct way to set modulation format here
                 .setModulationFormat(ModulationFormat.DpQpsk)
                 .setTransmitPower(new PowerDBm(new BigDecimal("-5")));
-
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         // Create generic interface
         InterfaceBuilder ochInterfaceBldr = createGenericInterfaceBuilder(portMap, OpticalChannel.class,
-            createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber));
+            createOpenRoadmOchInterfaceName(logicalConnPoint, spectralSlotName));
         // Create Interface1 type object required for adding as augmentation
         // TODO look at imports of different versions of class
         org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev181019.Interface1Builder
@@ -352,39 +380,36 @@ public class OpenRoadmInterface221 {
     }
 
     public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint,
-        Long waveNumber, BigDecimal centerFrequency, BigDecimal slotWidth)
+        BigDecimal centerFrequency, int lowerSpectralSlotNumber, int higherSpectralSlotNumber, String format)
         throws OpenRoadmInterfaceException {
         // TODO : Check this method
-
+        if (centerFrequency == null) {
+            LOG.error("Center frequency cannot be null");
+            throw new OpenRoadmInterfaceException("Center frequency cannot be null");
+        }
+        ModulationFormat modulationFormat = ModulationFormat.DpQpsk;
+        Optional<ModulationFormat> optionalModulationFormat = ModulationFormat.forName(format);
+        if (optionalModulationFormat.isPresent()) {
+            modulationFormat =  optionalModulationFormat.get();
+        }
         // OCH interface specific data
         OchBuilder ocIfBuilder = new OchBuilder()
             .setFrequency(FrequencyTHz.getDefaultInstance(String.valueOf(centerFrequency)))
             .setRate(R100G.class)
             .setTransmitPower(new PowerDBm(new BigDecimal("-5")))
-            .setModulationFormat(ModulationFormat.DpQpsk);
-
-        // In Flex-grid, slot-width could be other than 50 GHz
-        if ((centerFrequency != null) && (slotWidth != null)) {
-            ocIfBuilder.setFrequency(FrequencyTHz.getDefaultInstance(String.valueOf(centerFrequency)));
-            ocIfBuilder.setWidth(FrequencyGHz.getDefaultInstance(String.valueOf(slotWidth)));
-        }
-        else {
-            // Use fixed grid to find the
-            fixedFlex = fixedFlex.getFixedFlexWaveMapping(waveNumber.shortValue());
-            ocIfBuilder.setFrequency(FrequencyTHz.getDefaultInstance(String.valueOf(fixedFlex.getCenterFrequency())));
-        }
+            .setModulationFormat(modulationFormat);
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
             throw new OpenRoadmInterfaceException(
                 String.format("Unable to get mapping from PortMapping for node %s and logical connection port %s",
                     nodeId, logicalConnPoint));
         }
-
-
-
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         // Create generic interface
         InterfaceBuilder ochInterfaceBldr = createGenericInterfaceBuilder(portMap, OpticalChannel.class,
-            createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber));
+            createOpenRoadmOchInterfaceName(logicalConnPoint, spectralSlotName));
         // Create Interface1 type object required for adding as augmentation
         // TODO look at imports of different versions of class
         org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev181019.Interface1Builder
@@ -553,8 +578,8 @@ public class OpenRoadmInterface221 {
 
     }
 
-    public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, Long waveNumber) {
-        return logicalConnectionPoint + "-" + waveNumber;
+    public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotName) {
+        return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotName);
     }
 
     private InterfaceBuilder createGenericInterfaceBuilder(Mapping portMap, Class<? extends InterfaceType> type,
index 6a69d90eab3c701d7913e5f7eb51e5d61e4f0aef..8d3c3f606ebfd77e35b4d58b37629493e64365f2 100644 (file)
@@ -12,6 +12,7 @@ import java.math.BigDecimal;
 import java.util.List;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.mapping.MappingUtils;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.Mapping;
@@ -51,14 +52,15 @@ public class OpenRoadmInterfaceFactory {
     }
 
     public List<String> createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
-            BigDecimal centerFreq, BigDecimal width)
+            BigDecimal centerFreq, BigDecimal width, int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException {
         switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
             case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
-                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber);
+                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber,
+                        lowerSpectralSlotNumber, higherSpectralSlotNumber);
             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
-                return openRoadmInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber,
-                    centerFreq, width);
+                return openRoadmInterface221.createFlexOCH(nodeId, logicalConnPoint, centerFreq,
+                        width, lowerSpectralSlotNumber, higherSpectralSlotNumber);
             default:
                 return null;
         }
@@ -71,43 +73,52 @@ public class OpenRoadmInterfaceFactory {
      * @param nodeId           node ID
      * @param logicalConnPoint logical connection point
      * @param waveNumber       wavelength number of the OCH interface.
+     * @param lowerSpectralSlotNumber int
+     * @param higherSpectralSlotNumber int
      * @return Name of the interface if successful, otherwise return null.
      * @throws OpenRoadmInterfaceException OpenRoadm interface exception
      */
-    public List<String> createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber)
+    public List<String> createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException {
         switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
             case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
-                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber);
+                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber,
+                        lowerSpectralSlotNumber, higherSpectralSlotNumber);
             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
-                return openRoadmInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber);
+                return openRoadmInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber,
+                        lowerSpectralSlotNumber, higherSpectralSlotNumber);
             default:
                 return null;
         }
     }
 
     public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
-            OchAttributes.ModulationFormat format, BigDecimal centerFreq, BigDecimal width)
+            OchAttributes.ModulationFormat format, BigDecimal centerFreq, int lowerSpectralSlotNumber,
+            int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException {
         switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
             case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
-                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber, format);
+                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber, format,
+                        lowerSpectralSlotNumber, higherSpectralSlotNumber);
             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
-                return openRoadmInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber,
-                   centerFreq, width);
+                return openRoadmInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint, centerFreq,
+                   lowerSpectralSlotNumber, higherSpectralSlotNumber, format.getName());
             default:
                 return null;
         }
     }
 
     public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
-            OchAttributes.ModulationFormat format)
+            OchAttributes.ModulationFormat format, int lowerSpectralSlotNumber, int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException {
         switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
             case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
-                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber, format);
+                return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber, format,
+                        lowerSpectralSlotNumber, higherSpectralSlotNumber);
             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
-                return openRoadmInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber);
+                return openRoadmInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber,
+                        lowerSpectralSlotNumber, higherSpectralSlotNumber);
             default:
                 return null;
         }
@@ -216,8 +227,8 @@ public class OpenRoadmInterfaceFactory {
         }
     }
 
-    public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, Long waveNumber) {
-        return logicalConnectionPoint + "-" + waveNumber;
+    public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotNumber) {
+        return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotNumber);
     }
 
     public String createOpenRoadmOmsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException {
index d008e9260247626c1c4f69e7fd2c66b7983888de..87d59b34ce724ce34c8b7749f72c7b65c8f49245 100644 (file)
@@ -37,6 +37,7 @@ import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
@@ -102,6 +103,7 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
 
     @Override
     public ServicePathOutput setupServicePath(ServicePathInput input, ServicePathDirection direction) {
+        LOG.info("setup service path for input {} and direction {}", input, direction);
         List<Nodes> nodes = new ArrayList<>();
         if (input.getNodes() != null) {
             nodes.addAll(input.getNodes());
@@ -131,8 +133,13 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
             try {
                 // if the node is currently mounted then proceed
                 if (this.deviceTransactionManager.isDeviceMounted(nodeId)) {
-                    // TODO: In the case of flex-grid, the wave-number becomes bitmap index
-                    // TODO: need to update transportpce-common-types accordingly, to a more, generic-term
+                    int lowerSpectralSlotNumber = input.getLowerSpectralSlotNumber().intValue();
+                    int higherSpectralSlotNumber = input.getHigherSpectralSlotNumber().intValue();
+                    ModulationFormat modulationFormat = ModulationFormat.DpQpsk;
+                    if (input.getModulationFormat() != null
+                            && ModulationFormat.forName(input.getModulationFormat()).isPresent()) {
+                        modulationFormat = ModulationFormat.forName(input.getModulationFormat()).get();
+                    }
                     Long waveNumber = input.getWaveNumber().toJava();
                     BigDecimal centerFreq = null;
                     BigDecimal width = null;
@@ -145,15 +152,22 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
                     String srcTp = node.getSrcTp();
                     String destTp = node.getDestTp();
                     if ((destTp != null) && destTp.contains(StringConstants.NETWORK_TOKEN)) {
+                        LOG.info("Adding supporting OCH interface for node {}, dest tp {}, wave number {},"
+                                + "center freq {}, slot width {}, lower spectral number {},"
+                                + "higher spectral number {}",
+                                nodeId, destTp, waveNumber, centerFreq, width, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         crossConnectFlag++;
                         String supportingOchInterface;
                         if ((centerFreq != null) && (width != null)) {
                             supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(
-                                nodeId, destTp, waveNumber, ModulationFormat.DpQpsk, centerFreq, width);
+                                nodeId, destTp, waveNumber, modulationFormat, centerFreq, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         }
                         else {
                             supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(
-                                nodeId, destTp, waveNumber, ModulationFormat.DpQpsk);
+                                nodeId, destTp, waveNumber, modulationFormat, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         }
                         createdOchInterfaces.add(supportingOchInterface);
                         // Here we pass logical connection-point of z-end to set SAPI and DAPI
@@ -177,22 +191,30 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
                         }
                     }
                     if ((srcTp != null) && srcTp.contains(StringConstants.CLIENT_TOKEN)) {
+                        LOG.info("Adding supporting EThernet interface for node {}, src tp {}", nodeId, srcTp);
                         crossConnectFlag++;
                         // create OpenRoadm Xponder Client Interfaces
                         createdEthInterfaces.add(
                             this.openRoadmInterfaceFactory.createOpenRoadmEthInterface(nodeId, srcTp));
                     }
                     if ((srcTp != null) && srcTp.contains(StringConstants.NETWORK_TOKEN)) {
+                        LOG.info("Adding supporting OCH interface for node {}, src tp {}, wave number {},"
+                                + "center freq {}, slot width {}, lower spectral number {},"
+                                + "higher spectral number {}",
+                                nodeId, srcTp, waveNumber, centerFreq, width, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         crossConnectFlag++;
                         // create OpenRoadm Xponder Line Interfaces
                         String supportingOchInterface;
                         if ((centerFreq != null) && (width != null)) {
                             supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(
-                                nodeId, srcTp, waveNumber, ModulationFormat.DpQpsk, centerFreq, width);
+                                nodeId, srcTp, waveNumber, modulationFormat, centerFreq, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         }
                         else {
                             supportingOchInterface = this.openRoadmInterfaceFactory.createOpenRoadmOchInterface(
-                                nodeId, srcTp, waveNumber, ModulationFormat.DpQpsk);
+                                nodeId, srcTp, waveNumber,modulationFormat, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         }
                         createdOchInterfaces.add(supportingOchInterface);
                         String supportingOtuInterface = this.openRoadmInterfaceFactory
@@ -212,6 +234,7 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
                         }
                     }
                     if ((destTp != null) && destTp.contains(StringConstants.CLIENT_TOKEN)) {
+                        LOG.info("Adding supporting EThernet interface for node {}, dest tp {}", nodeId, destTp);
                         crossConnectFlag++;
                         // create OpenRoadm Xponder Client Interfaces
                         createdEthInterfaces.add(
@@ -219,29 +242,42 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
                     }
                     if ((srcTp != null) && (srcTp.contains(StringConstants.TTP_TOKEN)
                             || srcTp.contains(StringConstants.PP_TOKEN))) {
+                        LOG.info("Adding supporting OCH interface for node {}, src tp {}, wave number {},"
+                                + "center freq {}, slot width {}, lower spectral number {},"
+                                + "higher spectral number {}",
+                                nodeId, srcTp, waveNumber, centerFreq, width, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         if ((centerFreq != null) && (width != null)) {
                             createdOchInterfaces.addAll(
                                 this.openRoadmInterfaceFactory
-                                    .createOpenRoadmOchInterface(nodeId, srcTp, waveNumber, centerFreq, width));
+                                    .createOpenRoadmOchInterface(nodeId, srcTp, waveNumber, centerFreq, width,
+                                            lowerSpectralSlotNumber, higherSpectralSlotNumber));
                         }
                         else {
                             createdOchInterfaces.addAll(
                                 this.openRoadmInterfaceFactory
-                                    .createOpenRoadmOchInterface(nodeId, srcTp, waveNumber));
+                                    .createOpenRoadmOchInterface(nodeId, srcTp, waveNumber, lowerSpectralSlotNumber,
+                                            higherSpectralSlotNumber));
                         }
                     }
                     if ((destTp != null) && (destTp.contains(StringConstants.TTP_TOKEN)
                             || destTp.contains(StringConstants.PP_TOKEN))) {
-
+                        LOG.info("Adding supporting OCH interface for node {}, dest tp {}, wave number {},"
+                                + "center freq {}, slot width {}, lower spectral number {},"
+                                + "higher spectral number {}",
+                                nodeId, destTp, waveNumber, centerFreq, width, lowerSpectralSlotNumber,
+                                higherSpectralSlotNumber);
                         if ((centerFreq != null) && (width != null)) {
                             createdOchInterfaces.addAll(
                                 this.openRoadmInterfaceFactory
-                                    .createOpenRoadmOchInterface(nodeId, destTp, waveNumber, centerFreq, width));
+                                    .createOpenRoadmOchInterface(nodeId, destTp, waveNumber, centerFreq, width,
+                                            lowerSpectralSlotNumber, higherSpectralSlotNumber));
                         }
                         else {
                             createdOchInterfaces.addAll(
                                 this.openRoadmInterfaceFactory
-                                    .createOpenRoadmOchInterface(nodeId, destTp, waveNumber));
+                                    .createOpenRoadmOchInterface(nodeId, destTp, waveNumber, lowerSpectralSlotNumber,
+                                            higherSpectralSlotNumber));
                         }
 
                     }
@@ -249,7 +285,9 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
                         LOG.info("Creating cross connect between source {} and destination {} for node {}", srcTp,
                                 destTp, nodeId);
                         Optional<String> connectionNameOpt =
-                                this.crossConnect.postCrossConnect(nodeId, waveNumber, srcTp, destTp);
+                                this.crossConnect.postCrossConnect(nodeId, waveNumber, srcTp, destTp,
+                                        lowerSpectralSlotNumber,
+                                        higherSpectralSlotNumber);
                         if (connectionNameOpt.isPresent()) {
                             nodesProvisioned.add(nodeId);
                             createdConnections.add(connectionNameOpt.get());
@@ -344,7 +382,9 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
             }
             // if the node is currently mounted then proceed.
             if (this.deviceTransactionManager.isDeviceMounted(nodeId)) {
-                interfacesToDelete.addAll(getInterfaces2delete(nodeId, srcTp, destTp, waveNumber));
+                interfacesToDelete.addAll(getInterfaces2delete(nodeId, srcTp, destTp, waveNumber,
+                        input.getLowerSpectralSlotNumber().intValue(),
+                        input.getHigherSpectralSlotNumber().intValue()));
             } else {
                 String result = nodeId + IS_NOT_MOUNTED_ON_THE_CONTROLLER;
                 results.add(result);
@@ -385,7 +425,11 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
     }
 
     private List<String>  getInterfaces2delete(
-            String nodeId, String srcTp, String destTp, Long waveNumber) {
+            String nodeId, String srcTp, String destTp, Long waveNumber,
+            int lowerSpectralSlotNumber, int higherSpectralSlotNumber) {
+        String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR,
+                String.valueOf(lowerSpectralSlotNumber),
+                String.valueOf(higherSpectralSlotNumber));
         List<String> interfacesToDelete = new LinkedList<>();
         if (destTp.contains(StringConstants.NETWORK_TOKEN)
                 || srcTp.contains(StringConstants.CLIENT_TOKEN)
@@ -405,13 +449,15 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
                 }
                 interfacesToDelete.add(destTp + "-OTU");
                 interfacesToDelete.add(
-                        this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(destTp, waveNumber));
+                        this.openRoadmInterfaceFactory
+                        .createOpenRoadmOchInterfaceName(destTp,spectralSlotName));
             }
             if (srcTp.contains(StringConstants.NETWORK_TOKEN)) {
                 interfacesToDelete.add(srcTp + "-ODU");
                 interfacesToDelete.add(srcTp + "-OTU");
                 interfacesToDelete
-                        .add(this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(srcTp, waveNumber));
+                        .add(this.openRoadmInterfaceFactory
+                                .createOpenRoadmOchInterfaceName(srcTp,spectralSlotName));
             }
             if (srcTp.contains(StringConstants.CLIENT_TOKEN)) {
                 interfacesToDelete.add(srcTp + "-ETHERNET");
@@ -420,9 +466,10 @@ public class DeviceRendererServiceImpl implements DeviceRendererService {
                 interfacesToDelete.add(destTp + "-ETHERNET");
             }
         } else {
-            String connectionNumber = srcTp + "-" + destTp + "-" + waveNumber;
+            String connectionNumber = String.join(GridConstant.NAME_PARAMETERS_SEPARATOR, srcTp, destTp,
+                    spectralSlotName);
             List<String> intToDelete = this.crossConnect.deleteCrossConnect(nodeId, connectionNumber, false);
-            connectionNumber = destTp + "-" + srcTp + "-" + waveNumber;
+            connectionNumber = String.join(GridConstant.NAME_PARAMETERS_SEPARATOR, destTp, srcTp, spectralSlotName);
             if (intToDelete != null) {
                 for (String interf : intToDelete) {
                     if (!this.openRoadmInterfaceFactory.isUsedByXc(nodeId, interf, connectionNumber,
index 7627857cea0fede06e02d9006011b1c200d7c0ac..bedee6307b9a63b3ca59bc0b4ffb6a414dcaf56b 100644 (file)
@@ -64,10 +64,10 @@ public class OpenRoadMInterface221Test extends AbstractTest {
         Mockito.when(fixedFlex.getStart()).thenReturn(12d);
         Mockito.when(fixedFlex.getStop()).thenReturn(12d);
         Mockito.when(fixedFlex.getCenterFrequency()).thenReturn(12d);
-        Long waveNumber = 1000L;
-        Assert.assertNotNull(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber));
-        Assert.assertEquals(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber),
-                Arrays.asList(logicalConnPoint + "-nmc-" + waveNumber));
+        Long waveNumber = 1L;
+        Assert.assertNotNull(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber, 761, 768));
+        Assert.assertEquals(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber, 761, 768),
+                Arrays.asList(logicalConnPoint + "-nmc-761:768"));
     }
 
     @Test
@@ -79,10 +79,10 @@ public class OpenRoadMInterface221Test extends AbstractTest {
         Mockito.when(fixedFlex.getStart()).thenReturn(12d);
         Mockito.when(fixedFlex.getStop()).thenReturn(12d);
         Mockito.when(fixedFlex.getCenterFrequency()).thenReturn(12d);
-        Long waveNumber = 1000L;
-        Assert.assertNotNull(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber));
-        Assert.assertEquals(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber),
-                Arrays.asList(logicalConnPoint + "-mc-" + waveNumber, logicalConnPoint + "-nmc-" + waveNumber));
+        Long waveNumber = 1L;
+        Assert.assertNotNull(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber, 761, 768));
+        Assert.assertEquals(openRoadMInterface221.createFlexOCH(nodeId, logicalConnPoint, waveNumber, 761, 768),
+                Arrays.asList(logicalConnPoint + "-mc-" + waveNumber, logicalConnPoint + "-nmc-761:768"));
     }
 
     @Test
@@ -93,9 +93,9 @@ public class OpenRoadMInterface221Test extends AbstractTest {
                 .thenReturn(new MappingBuilder().setLogicalConnectionPoint(logicalConnPoint).build());
         Mockito.when(fixedFlex.getCenterFrequency()).thenReturn(12d);
         Mockito.when(fixedFlex.getFixedFlexWaveMapping(Mockito.anyLong())).thenReturn(new FixedFlexImpl());
-        Long waveNumber = 1000L;
-        Assert.assertEquals(openRoadMInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber),
-                logicalConnPoint + "-" + waveNumber);
+        Long waveNumber = 1L;
+        Assert.assertEquals(openRoadMInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint, waveNumber,
+                761, 768), logicalConnPoint + "-761:768");
     }
 
     @Test
@@ -115,9 +115,8 @@ public class OpenRoadMInterface221Test extends AbstractTest {
     public void testCreateOpenRoadmOchInterfaceName() {
 
         String logicalConnPoint = "logicalConnPoint";
-        Long waveNumber = 1000L;
-        Assert.assertEquals(openRoadMInterface221.createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber),
-                logicalConnPoint + "-" + waveNumber);
+        Assert.assertEquals(openRoadMInterface221.createOpenRoadmOchInterfaceName(logicalConnPoint, "761:768"),
+                logicalConnPoint + "-761:768");
 
     }
 
index ce1191068729608b21e616f39778a47773256d29..77f2eeac5546591c0ab14ffe9fc8ac17382ae5eb 100644 (file)
@@ -244,13 +244,13 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(2)
 
     def test_13_check_xc1_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-number': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-1',
+                'connection-number': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768',
                 'wavelength-number': 1,
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
@@ -258,21 +258,21 @@ class TransportPCEFulltesting(unittest.TestCase):
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-1'},
+            {'src-if': 'SRG1-PP1-TXRX-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG1-TTP-TXRX-1'},
+            {'dst-if': 'DEG1-TTP-TXRX-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(5)
 
     def test_14_check_xc1_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-number': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-1',
+                'connection-number': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768',
                 'wavelength-number': 1,
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': 2.0
@@ -280,10 +280,10 @@ class TransportPCEFulltesting(unittest.TestCase):
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-1'},
+            {'src-if': 'SRG1-PP1-TXRX-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG2-TTP-TXRX-1'},
+            {'dst-if': 'DEG2-TTP-TXRX-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(5)
 
@@ -406,23 +406,23 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(1)
 
     def test_24_check_xc2_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/DEG1-TTP-TXRX-SRG1-PP2-TXRX-2")
+        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/DEG1-TTP-TXRX-SRG1-PP2-TXRX-753:760")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-number': 'DEG1-TTP-TXRX-SRG1-PP2-TXRX-2',
+                'connection-number': 'DEG1-TTP-TXRX-SRG1-PP2-TXRX-753:760',
                 'wavelength-number': 2,
                 'opticalControlMode': 'power'
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'DEG1-TTP-TXRX-2'},
+            {'src-if': 'DEG1-TTP-TXRX-753:760'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'SRG1-PP2-TXRX-2'},
+            {'dst-if': 'SRG1-PP2-TXRX-753:760'},
             res['roadm-connections'][0]['destination'])
 
     def test_25_check_topo_XPDRA(self):
@@ -655,13 +655,13 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(1)
 
     def test_38_check_xc1_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-number': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-1',
+                'connection-number': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768',
                 'wavelength-number': 1,
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
@@ -669,21 +669,21 @@ class TransportPCEFulltesting(unittest.TestCase):
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-1'},
+            {'src-if': 'SRG1-PP1-TXRX-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG1-TTP-TXRX-1'},
+            {'dst-if': 'DEG1-TTP-TXRX-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(7)
 
     def test_39_check_xc1_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-number': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-1',
+                'connection-number': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768',
                 'wavelength-number': 1,
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': 2.0
@@ -691,10 +691,10 @@ class TransportPCEFulltesting(unittest.TestCase):
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-1'},
+            {'src-if': 'SRG1-PP1-TXRX-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG2-TTP-TXRX-1'},
+            {'dst-if': 'DEG2-TTP-TXRX-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(7)
 
@@ -729,13 +729,13 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(2)
 
     def test_42_check_xc2_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP2-TXRX-DEG1-TTP-TXRX-2")
+        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP2-TXRX-DEG1-TTP-TXRX-753:760")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-number': 'SRG1-PP2-TXRX-DEG1-TTP-TXRX-2',
+                'connection-number': 'SRG1-PP2-TXRX-DEG1-TTP-TXRX-753:760',
                 'wavelength-number': 2,
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
@@ -743,10 +743,10 @@ class TransportPCEFulltesting(unittest.TestCase):
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP2-TXRX-2'},
+            {'src-if': 'SRG1-PP2-TXRX-753:760'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG1-TTP-TXRX-2'},
+            {'dst-if': 'DEG1-TTP-TXRX-753:760'},
             res['roadm-connections'][0]['destination'])
         time.sleep(2)
 
index f7155e8bc1624e2507f2d3d64e7548fec2f569a7..b42c488f3d896a2a8af737330c7b4208090c25e2 100644 (file)
@@ -220,7 +220,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADMC01",
                                                      "dest-tp": "SRG1-PP1-TXRX", "src-tp": "DEG2-TTP-TXRX"},
                                                     {"node-id": "XPDRC01",
-                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}])
+                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}],
+                                                    196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
@@ -236,7 +238,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADMA01",
                                                      "src-tp": "DEG1-TTP-TXRX", "dest-tp": "SRG1-PP1-TXRX"},
                                                     {"node-id": "XPDRA01",
-                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}])
+                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}],
+                                                    196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
@@ -270,7 +274,13 @@ class TransportOlmTesting(unittest.TestCase):
                         "src-tp": "XPDR1-NETWORK1",
                         "node-id": "XPDRC01"
                     }
-                ]
+                ],
+                "center-freq": 196.1,
+                "width": 40,
+                "min-freq": 196.075,
+                "max-freq": 196.125,
+                "lower-spectral-slot-number": 761,
+                "higher-spectral-slot-number": 768
             }
         }
         response = test_utils.post_request(url, data)
@@ -281,21 +291,21 @@ class TransportOlmTesting(unittest.TestCase):
     def test_20_get_interface_XPDRA_XPDR1_NETWORK1(self):
         response = test_utils.check_netconf_node_request(
             "XPDRA01",
-            "interface/XPDR1-NETWORK1-1/org-openroadm-optical-channel-interfaces:och")
+            "interface/XPDR1-NETWORK1-761:768/org-openroadm-optical-channel-interfaces:och")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual(0, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
         self.assertEqual(1, res['org-openroadm-optical-channel-interfaces:och']['wavelength-number'])
 
     def test_21_get_roadmconnection_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
         self.assertEqual(-3.3, res['roadm-connections'][0]['target-output-power'])
 
     def test_22_get_roadmconnection_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP1-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP1-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("power", res['roadm-connections'][0]['opticalControlMode'])
@@ -327,7 +337,13 @@ class TransportOlmTesting(unittest.TestCase):
                         "dest-tp": "XPDR1-CLIENT1",
                         "node-id": "XPDRA01"
                     }
-                ]
+                ],
+                "center-freq": 196.1,
+                "width": 40,
+                "min-freq": 196.075,
+                "max-freq": 196.125,
+                "lower-spectral-slot-number": 761,
+                "higher-spectral-slot-number": 768
             }
         }
         response = test_utils.post_request(url, data)
@@ -338,14 +354,14 @@ class TransportOlmTesting(unittest.TestCase):
     def test_24_get_interface_XPDRC_XPDR1_NETWORK1(self):
         response = test_utils.check_netconf_node_request(
             "XPDRC01",
-            "interface/XPDR1-NETWORK1-1/org-openroadm-optical-channel-interfaces:och")
+            "interface/XPDR1-NETWORK1-761:768/org-openroadm-optical-channel-interfaces:och")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual(0, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
         self.assertEqual(1, res['org-openroadm-optical-channel-interfaces:och']['wavelength-number'])
 
     def test_25_get_roadmconnection_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
@@ -378,23 +394,30 @@ class TransportOlmTesting(unittest.TestCase):
                         "src-tp": "XPDR1-NETWORK1",
                         "node-id": "XPDRC01"
                     }
-                ]
+                ],
+                "center-freq": 196.1,
+                "width": 40,
+                "min-freq": 196.075,
+                "max-freq": 196.125,
+                "lower-spectral-slot-number": 761,
+                "higher-spectral-slot-number": 768
             }
         }
         response = test_utils.post_request(url, data)
+        print(response.json())
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Success', res["output"]["result"])
 
     def test_27_get_roadmconnection_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("off", res['roadm-connections'][0]['opticalControlMode'])
         self.assertEqual(-60, res['roadm-connections'][0]['target-output-power'])
 
     def test_28_get_roadmconnection_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP1-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADMC01", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP1-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("off", res['roadm-connections'][0]['opticalControlMode'])
@@ -408,7 +431,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADMC01",
                                                      "dest-tp": "SRG1-PP1-TXRX", "src-tp": "DEG2-TTP-TXRX"},
                                                     {"node-id": "XPDRC01",
-                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}])
+                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}],
+                                                    196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
@@ -423,7 +448,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADMA01",
                                                      "src-tp": "DEG1-TTP-TXRX", "dest-tp": "SRG1-PP1-TXRX"},
                                                     {"node-id": "XPDRA01",
-                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}])
+                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}],
+                                                    196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
@@ -450,7 +477,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                    [{"node-id": "XPDRA01",
                                                      "dest-tp": "XPDR1-NETWORK2", "src-tp": "XPDR1-CLIENT2"},
                                                     {"node-id": "ROADMA01",
-                                                     "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}])
+                                                     "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}],
+                                                    196.05, 40, 196.025, 196.075, 753,
+                                                    760)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
@@ -460,7 +489,7 @@ class TransportOlmTesting(unittest.TestCase):
     def test_34_get_interface_XPDRA_XPDR1_NETWORK2(self):
         response = test_utils.check_netconf_node_request(
             "XPDRA01",
-            "interface/XPDR1-NETWORK2-2/org-openroadm-optical-channel-interfaces:och")
+            "interface/XPDR1-NETWORK2-753:760/org-openroadm-optical-channel-interfaces:och")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual(-5, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
@@ -471,7 +500,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                    [{"node-id": "XPDRA01",
                                                      "dest-tp": "XPDR1-NETWORK2", "src-tp": "XPDR1-CLIENT2"},
                                                     {"node-id": "ROADMA01",
-                                                     "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}])
+                                                     "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}],
+                                                    196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
index 24b24230dcc9e937b912e1dadf26d0ce85cfd678..b57f578746ef3a64c0adccd51c4b77e174a40279 100644 (file)
@@ -84,19 +84,22 @@ class TransportPCERendererTesting(unittest.TestCase):
                                                      "renderer:dest-tp": "DEG1-TTP-TXRX"},
                                                     {"renderer:node-id": "XPDRA01",
                                                      "renderer:src-tp": "XPDR1-CLIENT1",
-                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}])
+                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}],
+                                                   195.8, 40, 195.775, 195.825, 713,
+                                                   720)
+        print(response.json())
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes: ROADMA01', res["output"]["result"])
 
     def test_06_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "interface/DEG1-TTP-TXRX-7")
+        response = test_utils.check_netconf_node_request("ROADMA01", "interface/DEG1-TTP-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'name': 'DEG1-TTP-TXRX-7',
+                'name': 'DEG1-TTP-TXRX-713:720',
                 'administrative-state': 'inService',
                 'supporting-circuit-pack-name': '2/0',
                 'type': 'org-openroadm-interfaces:opticalChannel',
@@ -109,13 +112,13 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
 
     def test_07_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "interface/SRG1-PP7-TXRX-7")
+        response = test_utils.check_netconf_node_request("ROADMA01", "interface/SRG1-PP7-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'name': 'SRG1-PP7-TXRX-7',
+                'name': 'SRG1-PP7-TXRX-713:720',
                 'administrative-state': 'inService',
                 'supporting-circuit-pack-name': '4/0',
                 'type': 'org-openroadm-interfaces:opticalChannel',
@@ -128,33 +131,34 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
 
     def test_08_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP7-TXRX-DEG1-TTP-TXRX-7")
+        response = test_utils.check_netconf_node_request(
+            "ROADMA01", "roadm-connections/SRG1-PP7-TXRX-DEG1-TTP-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-number': 'SRG1-PP7-TXRX-DEG1-TTP-TXRX-7',
+                'connection-number': 'SRG1-PP7-TXRX-DEG1-TTP-TXRX-713:720',
                 'wavelength-number': 7,
                 'opticalControlMode': 'off'
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP7-TXRX-7'},
+            {'src-if': 'SRG1-PP7-TXRX-713:720'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG1-TTP-TXRX-7'},
+            {'dst-if': 'DEG1-TTP-TXRX-713:720'},
             res['roadm-connections'][0]['destination'])
 
     def test_09_service_path_create_xpdr_check(self):
-        response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-7")
+        response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'name': 'XPDR1-NETWORK1-7',
+                'name': 'XPDR1-NETWORK1-713:720',
                 'administrative-state': 'inService',
                 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
                 'type': 'org-openroadm-interfaces:opticalChannel',
@@ -181,7 +185,7 @@ class TransportPCERendererTesting(unittest.TestCase):
                 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
                 'type': 'org-openroadm-interfaces:otnOtu',
                 'supporting-port': '1',
-                'supporting-interface': 'XPDR1-NETWORK1-7'
+                'supporting-interface': 'XPDR1-NETWORK1-713:720'
             }, **res['interface'][0]),
             res['interface'][0]
         )
@@ -252,13 +256,15 @@ class TransportPCERendererTesting(unittest.TestCase):
                                                      "renderer:dest-tp": "DEG1-TTP-TXRX"},
                                                     {"renderer:node-id": "XPDRA01",
                                                      "renderer:src-tp": "XPDR1-CLIENT1",
-                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}])
+                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}],
+                                                   195.8, 40, 195.775, 195.825, 713,
+                                                   720)
         self.assertEqual(response.status_code, requests.codes.ok)
         self.assertEqual(response.json(), {
             'output': {'result': 'Request processed', 'success': True}})
 
     def test_15_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "interface/DEG1-TTP-TXRX-7")
+        response = test_utils.check_netconf_node_request("ROADMA01", "interface/DEG1-TTP-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn(
@@ -267,7 +273,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_16_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "interface/SRG1-PP7-TXRX-7")
+        response = test_utils.check_netconf_node_request("ROADMA01", "interface/SRG1-PP7-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn(
@@ -277,7 +283,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_17_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP7-TXRX-DEG1-TTP-TXRX-7")
+        response = test_utils.check_netconf_node_request("ROADMA01", "roadm-connections/SRG1-PP7-TXRX-DEG1-TTP-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn(
@@ -287,7 +293,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_18_service_path_delete_xpdr_check(self):
-        response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-7")
+        response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn(
index 859d3e92a0ee1e2643a098f4e0b1c57f88ebed48..66a75089b17c397d49c882770b612958d92fce67 100644 (file)
@@ -229,44 +229,44 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(2)
 
     def test_13_check_xc1_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-name': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-1',
+                'connection-name': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768',
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
+            {'src-if': 'SRG1-PP1-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG2-TTP-TXRX-nmc-1'},
+            {'dst-if': 'DEG2-TTP-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(5)
 
     def test_14_check_xc1_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-name': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-1',
+                'connection-name': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768',
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
+            {'src-if': 'SRG1-PP1-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG1-TTP-TXRX-nmc-1'},
+            {'dst-if': 'DEG1-TTP-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(5)
 
@@ -384,22 +384,22 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(1)
 
     def test_24_check_xc2_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP2-TXRX-2")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP2-TXRX-753:760")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-name': 'DEG2-TTP-TXRX-SRG1-PP2-TXRX-2',
+                'connection-name': 'DEG2-TTP-TXRX-SRG1-PP2-TXRX-753:760',
                 'opticalControlMode': 'power'
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'DEG2-TTP-TXRX-nmc-2'},
+            {'src-if': 'DEG2-TTP-TXRX-nmc-753:760'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'SRG1-PP2-TXRX-nmc-2'},
+            {'dst-if': 'SRG1-PP2-TXRX-nmc-753:760'},
             res['roadm-connections'][0]['destination'])
 
     def test_25_check_topo_XPDRA(self):
@@ -614,44 +614,44 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(1)
 
     def test_38_check_xc1_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-name': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-1',
+                'connection-name': 'SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768',
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
+            {'src-if': 'SRG1-PP1-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG2-TTP-TXRX-nmc-1'},
+            {'dst-if': 'DEG2-TTP-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(7)
 
     def test_39_check_xc1_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-name': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-1',
+                'connection-name': 'SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768',
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
+            {'src-if': 'SRG1-PP1-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG1-TTP-TXRX-nmc-1'},
+            {'dst-if': 'DEG1-TTP-TXRX-nmc-761:768'},
             res['roadm-connections'][0]['destination'])
         time.sleep(7)
 
@@ -685,23 +685,23 @@ class TransportPCEFulltesting(unittest.TestCase):
         time.sleep(2)
 
     def test_42_check_xc2_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP2-TXRX-DEG2-TTP-TXRX-2")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP2-TXRX-DEG2-TTP-TXRX-753:760")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                'connection-name': 'SRG1-PP2-TXRX-DEG2-TTP-TXRX-2',
+                'connection-name': 'SRG1-PP2-TXRX-DEG2-TTP-TXRX-753:760',
                 'opticalControlMode': 'gainLoss',
                 'target-output-power': -3.0
             }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP2-TXRX-nmc-2'},
+            {'src-if': 'SRG1-PP2-TXRX-nmc-753:760'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG2-TTP-TXRX-nmc-2'},
+            {'dst-if': 'DEG2-TTP-TXRX-nmc-753:760'},
             res['roadm-connections'][0]['destination'])
         time.sleep(2)
 
index e0c5872bd4e8113674343f775ae71812414f4bdb..e112663b677b6c7ac0d7edeeac5b0367290c1f1a 100644 (file)
@@ -126,7 +126,11 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
                 "transportpce-device-renderer:src-tp": "SRG1-PP1-TXRX",
                 "transportpce-device-renderer:dest-tp": "DEG1-TTP-TXRX"
               }
-            ]
+            ],
+            "transportpce-device-renderer:min-freq": 196.95625,
+            "transportpce-device-renderer:max-freq": 196.04375,
+            "transportpce-device-renderer:lower-spectral-slot-number": 741,
+            "transportpce-device-renderer:higher-spectral-slot-number": 754
           }
         }
         url = test_utils.RESTCONF_BASE_URL + \
@@ -141,11 +145,11 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
     # Get Degree MC interface and check
     def test_08_degree_mc_interface(self):
         response = test_utils.check_netconf_node_request("ROADM-D1",
-                                                         "interface/DEG1-TTP-TXRX-mc-2")
+                                                         "interface/DEG1-TTP-TXRX-mc-741:754")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertDictEqual(
-            dict({"name": "DEG1-TTP-TXRX-mc-2",
+            dict({"name": "DEG1-TTP-TXRX-mc-741:754",
                   "supporting-interface": "OMS-DEG1-TTP-TXRX",
                   "supporting-circuit-pack-name": "1/0",
                   "circuit-id": "TBD",
@@ -166,12 +170,12 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
     # get DEG-NMC interface and check
     def test_09_degree_nmc_interface(self):
         response = test_utils.check_netconf_node_request("ROADM-D1",
-                                                         "interface/DEG1-TTP-TXRX-nmc-2")
+                                                         "interface/DEG1-TTP-TXRX-nmc-741:754")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertDictEqual(
-            dict({"name": "DEG1-TTP-TXRX-nmc-2",
-                  "supporting-interface": "DEG1-TTP-TXRX-mc-2",
+            dict({"name": "DEG1-TTP-TXRX-nmc-741:754",
+                  "supporting-interface": "DEG1-TTP-TXRX-mc-741:754",
                   "supporting-circuit-pack-name": "1/0",
                   "circuit-id": "TBD",
                   "description": "TBD",
@@ -191,11 +195,11 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
     # get SRG-NMC interface
     def test_10_srg_nmc_interface(self):
         response = test_utils.check_netconf_node_request("ROADM-D1",
-                                                         "interface/SRG1-PP1-TXRX-nmc-2")
+                                                         "interface/SRG1-PP1-TXRX-nmc-741:754")
         res = response.json()
         self.assertEqual(response.status_code, requests.codes.ok)
         self.assertEqual(
-            dict({"name": "SRG1-PP1-TXRX-nmc-2",
+            dict({"name": "SRG1-PP1-TXRX-nmc-741:754",
                   "supporting-circuit-pack-name": "3/0",
                   "circuit-id": "TBD",
                   "description": "TBD",
@@ -209,14 +213,14 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
     # Create ROADM-connection
     def test_11_roadm_connection(self):
         response = test_utils.check_netconf_node_request("ROADM-D1",
-                                          "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-2")
+                                          "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-741:754")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertEqual("SRG1-PP1-TXRX-DEG1-TTP-TXRX-2",
+        self.assertEqual("SRG1-PP1-TXRX-DEG1-TTP-TXRX-741:754",
                          res['roadm-connections'][0]['connection-name'])
-        self.assertEqual("SRG1-PP1-TXRX-nmc-2",
+        self.assertEqual("SRG1-PP1-TXRX-nmc-741:754",
                          res['roadm-connections'][0]['source']['src-if'])
-        self.assertEqual("DEG1-TTP-TXRX-nmc-2",
+        self.assertEqual("DEG1-TTP-TXRX-nmc-741:754",
                          res['roadm-connections'][0]['destination']['dst-if'])
         time.sleep(3)
 
@@ -227,7 +231,7 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
         response = test_utils.delete_request(test_utils.URL_CONFIG_NETCONF_TOPO +
                    "node/ROADM-D1/yang-ext:mount/" +
                    "org-openroadm-device:org-openroadm-device/" +
-                   "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-2")
+                   "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-741:754")
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(3)
 
@@ -236,7 +240,7 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
         response = test_utils.delete_request(test_utils.URL_CONFIG_NETCONF_TOPO +
                                            "node/ROADM-D1/yang-ext:mount/" +
                                            "org-openroadm-device:org-openroadm-device/" +
-                                           "interface/SRG1-PP1-TXRX-nmc-2")
+                                           "interface/SRG1-PP1-TXRX-nmc-741:754")
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(3)
 
@@ -245,7 +249,7 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
         response = test_utils.delete_request(test_utils.URL_CONFIG_NETCONF_TOPO +
                                              "node/ROADM-D1/yang-ext:mount/" +
                                              "org-openroadm-device:org-openroadm-device/" +
-                                             "interface/DEG1-TTP-TXRX-nmc-2")
+                                             "interface/DEG1-TTP-TXRX-nmc-741:754")
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(3)
 
@@ -254,7 +258,7 @@ class TransportPCEPortMappingTesting(unittest.TestCase):
         response = test_utils.delete_request(test_utils.URL_CONFIG_NETCONF_TOPO +
                                              "node/ROADM-D1/yang-ext:mount/" +
                                              "org-openroadm-device:org-openroadm-device/" +
-                                             "interface/DEG1-TTP-TXRX-mc-2")
+                                             "interface/DEG1-TTP-TXRX-mc-741:754")
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(3)
 
index 4a5e97b48ed6368e88baa094889a5f192f36f7ae..53823dd75e0d23180c403e7db0e5094ee40a8974 100644 (file)
@@ -221,7 +221,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADM-C1",
                                                      "dest-tp": "SRG1-PP1-TXRX", "src-tp": "DEG1-TTP-TXRX"},
                                                     {"node-id": "XPDR-C1",
-                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}])
+                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}],
+                                                   196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
@@ -237,7 +239,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADM-A1",
                                                      "src-tp": "DEG2-TTP-TXRX", "dest-tp": "SRG1-PP1-TXRX"},
                                                     {"node-id": "XPDR-A1",
-                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}])
+                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}],
+                                                   196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
@@ -271,7 +275,9 @@ class TransportOlmTesting(unittest.TestCase):
                         "src-tp": "XPDR1-NETWORK1",
                         "node-id": "XPDR-C1"
                     }
-                ]
+                ],
+                "lower-spectral-slot-number": 761,
+                "higher-spectral-slot-number": 768
             }
         }
         response = test_utils.post_request(url, data)
@@ -282,21 +288,21 @@ class TransportOlmTesting(unittest.TestCase):
     def test_20_get_interface_XPDRA_XPDR1_NETWORK1(self):
         response = test_utils.check_netconf_node_request(
             "XPDR-A1",
-            "interface/XPDR1-NETWORK1-1/org-openroadm-optical-channel-interfaces:och")
+            "interface/XPDR1-NETWORK1-761:768/org-openroadm-optical-channel-interfaces:och")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual(-5, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
         self.assertEqual(196.1, res['org-openroadm-optical-channel-interfaces:och']['frequency'])
 
     def test_21_get_roadmconnection_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
         self.assertEqual(2.0, res['roadm-connections'][0]['target-output-power'])
 
     def test_22_get_roadmconnection_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/DEG1-TTP-TXRX-SRG1-PP1-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/DEG1-TTP-TXRX-SRG1-PP1-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("power", res['roadm-connections'][0]['opticalControlMode'])
@@ -328,7 +334,9 @@ class TransportOlmTesting(unittest.TestCase):
                         "dest-tp": "XPDR1-CLIENT1",
                         "node-id": "XPDR-A1"
                     }
-                ]
+                ],
+                "lower-spectral-slot-number": 761,
+                "higher-spectral-slot-number": 768
             }
         }
         response = test_utils.post_request(url, data)
@@ -339,14 +347,14 @@ class TransportOlmTesting(unittest.TestCase):
     def test_24_get_interface_XPDRC_XPDR1_NETWORK1(self):
         response = test_utils.check_netconf_node_request(
             "XPDR-C1",
-            "interface/XPDR1-NETWORK1-1/org-openroadm-optical-channel-interfaces:och")
+            "interface/XPDR1-NETWORK1-761:768/org-openroadm-optical-channel-interfaces:och")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual(-5, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
         self.assertEqual(196.1, res['org-openroadm-optical-channel-interfaces:och']['frequency'])
 
     def test_25_get_roadmconnection_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
@@ -379,7 +387,9 @@ class TransportOlmTesting(unittest.TestCase):
                         "src-tp": "XPDR1-NETWORK1",
                         "node-id": "XPDR-C1"
                     }
-                ]
+                ],
+                "lower-spectral-slot-number": 761,
+                "higher-spectral-slot-number": 768
             }
         }
         response = test_utils.post_request(url, data)
@@ -388,14 +398,14 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertIn('Success', res["output"]["result"])
 
     def test_27_get_roadmconnection_ROADMA(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("off", res['roadm-connections'][0]['opticalControlMode'])
         self.assertEqual(-60, res['roadm-connections'][0]['target-output-power'])
 
     def test_28_get_roadmconnection_ROADMC(self):
-        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/DEG1-TTP-TXRX-SRG1-PP1-TXRX-1")
+        response = test_utils.check_netconf_node_request("ROADM-C1", "roadm-connections/DEG1-TTP-TXRX-SRG1-PP1-TXRX-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("off", res['roadm-connections'][0]['opticalControlMode'])
@@ -409,7 +419,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADM-C1",
                                                      "dest-tp": "SRG1-PP1-TXRX", "src-tp": "DEG1-TTP-TXRX"},
                                                     {"node-id": "XPDR-C1",
-                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}])
+                                                     "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}],
+                                                   196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
@@ -424,7 +436,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                     {"node-id": "ROADM-A1",
                                                      "src-tp": "DEG2-TTP-TXRX", "dest-tp": "SRG1-PP1-TXRX"},
                                                     {"node-id": "XPDR-A1",
-                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}])
+                                                     "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}],
+                                                   196.053125, 40, 196.025, 196.08125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
@@ -451,7 +465,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                    [{"node-id": "XPDR-A1",
                                                      "dest-tp": "XPDR1-NETWORK2", "src-tp": "XPDR1-CLIENT2"},
                                                     {"node-id": "ROADM-A1",
-                                                     "dest-tp": "DEG2-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}])
+                                                     "dest-tp": "DEG2-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}],
+                                                   196.1, 40, 196.075, 196.125, 753,
+                                                    760)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
@@ -461,7 +477,7 @@ class TransportOlmTesting(unittest.TestCase):
     def test_34_get_interface_XPDRA_XPDR1_NETWORK2(self):
         response = test_utils.check_netconf_node_request(
             "XPDR-A1",
-            "interface/XPDR1-NETWORK2-2/org-openroadm-optical-channel-interfaces:och")
+            "interface/XPDR1-NETWORK2-753:760/org-openroadm-optical-channel-interfaces:och")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual(-5, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
@@ -472,7 +488,9 @@ class TransportOlmTesting(unittest.TestCase):
                                                    [{"node-id": "XPDR-A1",
                                                      "dest-tp": "XPDR1-NETWORK2", "src-tp": "XPDR1-CLIENT2"},
                                                     {"node-id": "ROADM-A1",
-                                                     "dest-tp": "DEG2-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}])
+                                                     "dest-tp": "DEG2-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}],
+                                                   196.053125, 40, 196.025, 196.08125, 761,
+                                                    768)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
index 7b0a5db01284d15bb49583d5bac63eafe260071c..1803908f9a6d9c54645af09bb54e5f56cdf7dbf1 100644 (file)
@@ -265,10 +265,10 @@ class TransportPCEtesting(unittest.TestCase):
     # Check correct configuration of devices
     def test_14_check_interface_och_spdra(self):
         response = test_utils.check_netconf_node_request(
-            "SPDR-SA1", "interface/XPDR1-NETWORK1-1")
+            "SPDR-SA1", "interface/XPDR1-NETWORK1-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-1',
+        self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-761:768',
                                    'administrative-state': 'inService',
                                    'supporting-circuit-pack-name': 'CP1-CFP0',
                                    'type': 'org-openroadm-interfaces:opticalChannel',
@@ -289,7 +289,7 @@ class TransportPCEtesting(unittest.TestCase):
         input_dict_1 = {'name': 'XPDR1-NETWORK1-OTU',
                         'administrative-state': 'inService',
                         'supporting-circuit-pack-name': 'CP1-CFP0',
-                        'supporting-interface': 'XPDR1-NETWORK1-1',
+                        'supporting-interface': 'XPDR1-NETWORK1-761:768',
                         'type': 'org-openroadm-interfaces:otnOtu',
                         'supporting-port': 'CP1-CFP0-P1'
                         }
@@ -307,10 +307,10 @@ class TransportPCEtesting(unittest.TestCase):
 
     def test_16_check_interface_och_spdrc(self):
         response = test_utils.check_netconf_node_request(
-            "SPDR-SC1", "interface/XPDR1-NETWORK1-1")
+            "SPDR-SC1", "interface/XPDR1-NETWORK1-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-1',
+        self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-761:768',
                                    'administrative-state': 'inService',
                                    'supporting-circuit-pack-name': 'CP1-CFP0',
                                    'type': 'org-openroadm-interfaces:opticalChannel',
@@ -331,7 +331,7 @@ class TransportPCEtesting(unittest.TestCase):
         input_dict_1 = {'name': 'XPDR1-NETWORK1-OTU',
                         'administrative-state': 'inService',
                         'supporting-circuit-pack-name': 'CP1-CFP0',
-                        'supporting-interface': 'XPDR1-NETWORK1-1',
+                        'supporting-interface': 'XPDR1-NETWORK1-761:768',
                         'type': 'org-openroadm-interfaces:otnOtu',
                         'supporting-port': 'CP1-CFP0-P1'
                         }
index b8fd458acbfb484fc102e0bb7bdf61204caf26db..20356b2976ae3dc3928205db916f017fdc35742a 100644 (file)
@@ -82,7 +82,9 @@ class TransportPCEtesting(unittest.TestCase):
 
     def test_04_service_path_create_OCH_OTU4(self):
         response = test_utils.service_path_request("create", "service_OCH_OTU4", "1",
-                                                   [{"node-id": "SPDR-SA1", "dest-tp": "XPDR1-NETWORK1"}])
+                                                   [{"node-id": "SPDR-SA1", "dest-tp": "XPDR1-NETWORK1"}],
+                                                   196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         time.sleep(3)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
@@ -91,7 +93,7 @@ class TransportPCEtesting(unittest.TestCase):
         self.assertIn(
             {'node-id': 'SPDR-SA1',
              'otu-interface-id': ['XPDR1-NETWORK1-OTU'],
-             'och-interface-id': ['XPDR1-NETWORK1-1']}, res["output"]['node-interface'])
+             'och-interface-id': ['XPDR1-NETWORK1-761:768']}, res["output"]['node-interface'])
 
     def test_05_get_portmapping_NETWORK1(self):
         response = test_utils.portmapping_request("SPDR-SA1/mapping/XPDR1-NETWORK1")
@@ -111,11 +113,11 @@ class TransportPCEtesting(unittest.TestCase):
             res['mapping'])
 
     def test_06_check_interface_och(self):
-        response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-1")
+        response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
 
-        self.assertDictEqual(dict(res['interface'][0], **{'name': 'XPDR1-NETWORK1-1',
+        self.assertDictEqual(dict(res['interface'][0], **{'name': 'XPDR1-NETWORK1-761:768',
                                                           'administrative-state': 'inService',
                                                           'supporting-circuit-pack-name': 'CP1-CFP0',
                                                           'type': 'org-openroadm-interfaces:opticalChannel',
@@ -135,7 +137,7 @@ class TransportPCEtesting(unittest.TestCase):
         input_dict_1 = {'name': 'XPDR1-NETWORK1-OTU',
                         'administrative-state': 'inService',
                         'supporting-circuit-pack-name': 'CP1-CFP0',
-                        'supporting-interface': 'XPDR1-NETWORK1-1',
+                        'supporting-interface': 'XPDR1-NETWORK1-761:768',
                         'type': 'org-openroadm-interfaces:otnOtu',
                         'supporting-port': 'CP1-CFP0-P1'
                         }
@@ -365,7 +367,9 @@ class TransportPCEtesting(unittest.TestCase):
 
     def test_23_service_path_delete_OCH_OTU4(self):
         response = test_utils.service_path_request("delete", "service_OCH_OTU4", "1",
-                                                   [{"node-id": "SPDR-SA1", "dest-tp": "XPDR1-NETWORK1"}])
+                                                   [{"node-id": "SPDR-SA1", "dest-tp": "XPDR1-NETWORK1"}],
+                                                   196.1, 40, 196.075, 196.125, 761,
+                                                    768)
         time.sleep(3)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
index 26054626b8946035c19101c71bd9efa4ba35b846..4b047e2dafa673c9f4733496e0304746e8e7ef61 100644 (file)
@@ -119,7 +119,9 @@ class TransportPCEtesting(unittest.TestCase):
                                     "tp-id": ""
                                 }
                             }
-                        ]
+                        ],
+                        "transportpce-renderer:aToZ-min-frequency": 196.075,
+                        "transportpce-renderer:aToZ-max-frequency": 196.125
                     },
                     "transportpce-renderer:zToA-direction": {
                         "transportpce-renderer:zToA-wavelength-number": "1",
@@ -154,13 +156,16 @@ class TransportPCEtesting(unittest.TestCase):
                                     "tp-id": ""
                                 }
                             }
-                        ]
+                        ],
+                        "transportpce-renderer:zToA-min-frequency": 196.075,
+                        "transportpce-renderer:zToA-max-frequency": 196.125
                     }
                 }
             }
         }
         response = test_utils.post_request(url, data)
         time.sleep(3)
+        print(response.json())
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Operation Successful',
@@ -168,10 +173,10 @@ class TransportPCEtesting(unittest.TestCase):
 
     # Test OCH-OTU interfaces on SPDR-A1
     def test_04_check_interface_och(self):
-        response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-1")
+        response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-1',
+        self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-761:768',
                                    'administrative-state': 'inService',
                                    'supporting-circuit-pack-name': 'CP1-CFP0',
                                    'type': 'org-openroadm-interfaces:opticalChannel',
@@ -211,7 +216,7 @@ class TransportPCEtesting(unittest.TestCase):
 
     # Test OCH-OTU interfaces on SPDR-C1
     def test_06_check_interface_och(self):
-        response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-NETWORK1-1")
+        response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-NETWORK1-761:768")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-1',
index 83fb148226e3bfb60a24fdf3cca7d9f2b3cc4898..e1dfb0df6b78fa775c9b3cfa9708c7cfe7fae998 100644 (file)
@@ -82,19 +82,21 @@ class TransportPCERendererTesting(unittest.TestCase):
                                                      "renderer:dest-tp": "DEG1-TTP-TXRX"},
                                                     {"renderer:node-id": "XPDR-A1",
                                                      "renderer:src-tp": "XPDR1-CLIENT1",
-                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}])
+                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}],
+                                                   195.8, 40, 195.775, 195.825, 713,
+                                                   720)
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes: ROADM-A1', res["output"]["result"])
 
     def test_06_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-nmc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-nmc-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                 'name': 'DEG1-TTP-TXRX-nmc-7',
+                 'name': 'DEG1-TTP-TXRX-nmc-713:720',
                  'administrative-state': 'inService',
                  'supporting-circuit-pack-name': '1/0',
                  'type': 'org-openroadm-interfaces:networkMediaChannelConnectionTerminationPoint',
@@ -107,7 +109,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['interface'][0]['org-openroadm-network-media-channel-interfaces:nmc-ctp'])
 
     def test_07_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-mc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-mc-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
@@ -126,13 +128,13 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['interface'][0]['org-openroadm-media-channel-interfaces:mc-ttp'])
 
     def test_08_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-nmc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-nmc-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                 'name': 'SRG1-PP3-TXRX-nmc-7',
+                 'name': 'SRG1-PP3-TXRX-nmc-713:720',
                  'administrative-state': 'inService',
                  'supporting-circuit-pack-name': '3/0',
                  'type': 'org-openroadm-interfaces:networkMediaChannelConnectionTerminationPoint',
@@ -146,7 +148,7 @@ class TransportPCERendererTesting(unittest.TestCase):
 
     # -mc supporting interfaces must not be created for SRG, only degrees
     def test_09_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-mc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-mc-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn(
@@ -155,32 +157,32 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_10_service_path_create_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP3-TXRX-DEG1-TTP-TXRX-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "roadm-connections/SRG1-PP3-TXRX-DEG1-TTP-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                 'connection-name': 'SRG1-PP3-TXRX-DEG1-TTP-TXRX-7',
+                 'connection-name': 'SRG1-PP3-TXRX-DEG1-TTP-TXRX-713:720',
                  'opticalControlMode': 'off'
                  }, **res['roadm-connections'][0]),
             res['roadm-connections'][0]
         )
         self.assertDictEqual(
-            {'src-if': 'SRG1-PP3-TXRX-nmc-7'},
+            {'src-if': 'SRG1-PP3-TXRX-nmc-713:720'},
             res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-            {'dst-if': 'DEG1-TTP-TXRX-nmc-7'},
+            {'dst-if': 'DEG1-TTP-TXRX-nmc-713:720'},
             res['roadm-connections'][0]['destination'])
 
     def test_11_service_path_create_xpdr_check(self):
-        response = test_utils.check_netconf_node_request("XPDR-A1", "interface/XPDR1-NETWORK1-7")
+        response = test_utils.check_netconf_node_request("XPDR-A1", "interface/XPDR1-NETWORK1-713:720")
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
         self.assertDictEqual(
             dict({
-                 'name': 'XPDR1-NETWORK1-7',
+                 'name': 'XPDR1-NETWORK1-713:720',
                  'administrative-state': 'inService',
                  'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
                  'type': 'org-openroadm-interfaces:opticalChannel',
@@ -282,13 +284,15 @@ class TransportPCERendererTesting(unittest.TestCase):
                                                      "renderer:dest-tp": "DEG1-TTP-TXRX"},
                                                     {"renderer:node-id": "XPDR-A1",
                                                      "renderer:src-tp": "XPDR1-CLIENT1",
-                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}])
+                                                     "renderer:dest-tp": "XPDR1-NETWORK1"}],
+                                                   195.8, 40, 195.775, 195.825, 713,
+                                                   720)
         self.assertEqual(response.status_code, requests.codes.ok)
         self.assertEqual(response.json(), {
             'output': {'result': 'Request processed', 'success': True}})
 
     def test_18_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-mc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-mc-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn(
@@ -297,7 +301,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_19_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-nmc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/DEG1-TTP-TXRX-nmc-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn(
@@ -306,7 +310,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_20_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-mc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-mc-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn({
@@ -316,7 +320,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_21_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-nmc-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-nmc-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn({
@@ -326,7 +330,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_22_service_path_delete_rdm_check(self):
-        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-DEG1-TTP-TXRX-7")
+        response = test_utils.check_netconf_node_request("ROADM-A1", "interface/SRG1-PP3-TXRX-DEG1-TTP-TXRX-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn({
@@ -336,7 +340,7 @@ class TransportPCERendererTesting(unittest.TestCase):
             res['errors']['error'])
 
     def test_23_service_path_delete_xpdr_check(self):
-        response = test_utils.check_netconf_node_request("XPDR-A1", "interface/XPDR1-NETWORK1-7")
+        response = test_utils.check_netconf_node_request("XPDR-A1", "interface/XPDR1-NETWORK1-713:720")
         self.assertEqual(response.status_code, requests.codes.conflict)
         res = response.json()
         self.assertIn({
index fc8a4f69cec71e514d4df31e7d3ae6ceb9438bcf..d9b9ee09a400661b19feb550cab0b5a1f88bb31b 100644 (file)
@@ -150,6 +150,7 @@ def get_request(url):
 
 def post_request(url, data):
     if data:
+        print(json.dumps(data))
         return requests.request(
             "POST", url.format(RESTCONF_BASE_URL),
             data=json.dumps(data),
@@ -359,13 +360,21 @@ def service_delete_request(servicename: str,
     return post_request(URL_SERV_DELETE, attr)
 
 
-def service_path_request(operation: str, servicename: str, wavenumber: str, nodes):
+def service_path_request(operation: str, servicename: str, wavenumber: str, nodes, centerfreq: str,
+                         slotwidth: int, minfreq: float, maxfreq: float, lowerslotnumber: int,
+                         higherslotnumber: int):
     attr = {"renderer:input": {
         "renderer:service-name": servicename,
         "renderer:wave-number": wavenumber,
-        "renderer:modulation-format": "qpsk",
+        "renderer:modulation-format": "dp-qpsk",
         "renderer:operation": operation,
-        "renderer:nodes": nodes}}
+        "renderer:nodes": nodes,
+        "renderer:center-freq": centerfreq,
+        "renderer:width": slotwidth,
+        "renderer:min-freq": minfreq,
+        "renderer:max-freq": maxfreq,
+        "renderer:lower-spectral-slot-number": lowerslotnumber,
+        "renderer:higher-spectral-slot-number": higherslotnumber}}
     return post_request(URL_SERVICE_PATH, attr)