Add bug fixes for 2.2.1 devices 23/82423/15
authorBhardwaj, Dhruv (db929a) <db929a@us.att.com>
Thu, 6 Jun 2019 13:59:30 +0000 (09:59 -0400)
committerGilles Thouenon <gilles.thouenon@orange.com>
Fri, 19 Jul 2019 08:54:13 +0000 (10:54 +0200)
1. Change calculation for mapping wavelength number to frequency
and bandwidth.
2. Add check for port qualifier to avoid NPE
3. Add conditional statement to prevent mc creation on SRG
4. Change order of mc and nmc creations
5. Modify functional tests suite rspn221 and olm accordingly

JIRA: TRNSPRTPCE-130

Change-Id: I7050f7ff1fdb8d5f2c36b98ad89cd4e363ba10c2

common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221.java
common/src/main/java/org/opendaylight/transportpce/common/fixedflex/FixedFlexImpl.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java
renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface221.java
tests/transportpce_tests/2.2.1/test_end2end.py
tests/transportpce_tests/2.2.1/test_olm.py
tests/transportpce_tests/2.2.1/test_renderer_service_path_nominal.py

index a52130af19d70bb9d8cea6edf9a9862396caad60..4e5e2163b6eb8fe54570e1a8513305878ef4fd20 100644 (file)
@@ -64,9 +64,9 @@ public class CrossConnectImpl221 {
 
         rdmConnBldr.setOpticalControlMode(OpticalControlMode.Off);
 
-        rdmConnBldr.setSource(new SourceBuilder().setSrcIf(srcTp + "-nmc").build());
+        rdmConnBldr.setSource(new SourceBuilder().setSrcIf(srcTp + "-nmc-" + waveNumber).build());
 
-        rdmConnBldr.setDestination(new DestinationBuilder().setDstIf(destTp + "-nmc").build());
+        rdmConnBldr.setDestination(new DestinationBuilder().setDstIf(destTp + "-nmc-" + waveNumber).build());
 
 
         InstanceIdentifier<RoadmConnections> rdmConnectionIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
index e7c57408d0e91a90a4cace98fb67cd83cef785e1..71f9f04c2376e0e2b755c4a8ad0c58d19828e8ef 100644 (file)
@@ -46,10 +46,10 @@ public final class FixedFlexImpl implements FixedFlexInterface {
      **/
     public FixedFlexImpl getFixedFlexWaveMapping(long wlIndex) {
         FixedFlexImpl fixedFlex = new FixedFlexImpl();
-        fixedFlex.centerFrequency = 196.1 - (wlIndex - 1) * 0.05;
-        fixedFlex.wavelength = 1528.77 + ((wlIndex - 1) * 0.39);
-        fixedFlex.start = fixedFlex.centerFrequency - 0.025;
-        fixedFlex.stop = fixedFlex.centerFrequency + 0.025;
+        long mappedWL = wlIndex - 36;
+        fixedFlex.centerFrequency = 193.1 + (50.0 / 1000.0) * mappedWL;
+        fixedFlex.start = 193.1 + (50.0 * mappedWL - 25) / 1000.0;
+        fixedFlex.stop = 193.1 + (50.0 * mappedWL + 25) / 1000.0;
         return fixedFlex;
     }
 
index 9f519d11a0d390902e83569a495053434a129ffb..b7e4c8f126624787926a5b7647baa168613268c6 100644 (file)
@@ -38,7 +38,7 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.CircuitPack;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.Ports;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.PortsKey;
@@ -198,18 +198,23 @@ public class PortMappingVersion221 {
                 LOG.warn("Ports were not found for circuit pack: {}", circuitPackName);
                 continue;
             }
+
             for (Ports port : cp.getPorts()) {
-                if (Port.PortQual.XpdrNetwork.getName().equals(port.getPortQual().getName())) {
+                if (port.getPortQual() == null) {
+                    continue;
+                }
+                if (PortQual.XpdrNetwork.getName().equals(port.getPortQual().getName()))  {
                     portMapList.add(createMappingObject(nodeId, port, circuitPackName,
                             "XPDR1-" + StringConstants.NETWORK_TOKEN + line));
                     line++;
-                } else if (Port.PortQual.XpdrClient.getName().equals(port.getPortQual().getName())) {
+                } else if (PortQual.XpdrClient.getName().equals(port.getPortQual().getName())) {
                     portMapList.add(createMappingObject(nodeId, port, circuitPackName,
                             "XPDR1-" + StringConstants.CLIENT_TOKEN + client));
                     client++;
                 } else {
                     LOG.warn("Not supported type of port! Port type: {}", port.getPortQual().getName());
                 }
+                LOG.info("portMapList Is {} {}",portMapList.size(),portMapList.get(0));
             }
         }
         return true;
@@ -277,7 +282,7 @@ public class PortMappingVersion221 {
                                          .getPortName(),
                                  logicalConnectionPoint);
                         portMapList.add(createMappingObject(nodeId, port, circuitPackName, logicalConnectionPoint));
-                    } else if (Port.PortQual.RoadmInternal.equals(port.getPortQual())) {
+                    } else if (PortQual.RoadmInternal.equals(port.getPortQual())) {
                         LOG.info("Port is internal, skipping Logical Connection Point missing for {} {}",
                                  circuitPackName,
                                  port.getPortName());
index 48d433c1ce7d919dfeb2fc9eb23bb12c906ae25b..f8f1be2b10405104c91f6e77292bb93a577d49fd 100644 (file)
@@ -85,11 +85,11 @@ public class OpenRoadmInterface221 {
 
         // Ethernet interface specific data
         EthernetBuilder ethIfBuilder = new EthernetBuilder();
-        ethIfBuilder.setAutoNegotiation(EthAttributes.AutoNegotiation.Enabled);
-        ethIfBuilder.setDuplex(EthAttributes.Duplex.Full);
+        //ethIfBuilder.setAutoNegotiation(EthAttributes.AutoNegotiation.Enabled);
+        //ethIfBuilder.setDuplex(EthAttributes.Duplex.Full);
         ethIfBuilder.setFec(EthAttributes.Fec.Off);
         ethIfBuilder.setSpeed(100000L);
-        ethIfBuilder.setMtu(9000L);
+        //ethIfBuilder.setMtu(9000L);
 
         InterfaceBuilder ethInterfaceBldr = createGenericInterfaceBuilder(portMap, EthernetCsmacd.class,
             logicalConnPoint + "-ETHERNET");
@@ -123,12 +123,14 @@ public class OpenRoadmInterface221 {
 
         List<String> interfacesCreated = new ArrayList<>();
 
+        if (logicalConnPoint.contains("DEG")) {
+            String mcInterfaceCreated = createMCInterface(nodeId, logicalConnPoint, waveNumber);
+            interfacesCreated.add(mcInterfaceCreated);
+        }
+
         String nmcInterfaceCreated = createNMCInterface(nodeId, logicalConnPoint, waveNumber);
         interfacesCreated.add(nmcInterfaceCreated);
 
-        String mcInterfaceCreated = createMCInterface(nodeId, logicalConnPoint, waveNumber);
-        interfacesCreated.add(mcInterfaceCreated);
-
         return interfacesCreated;
     }
 
@@ -141,14 +143,15 @@ public class OpenRoadmInterface221 {
 
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
-            throw new OpenRoadmInterfaceException(String.format("Unable to get mapping from PortMapping for node % and"
-                + " logical connection port %s", nodeId, logicalConnPoint));
+            throw new OpenRoadmInterfaceException(
+                String.format("Unable to get mapping from PortMapping for node % and logical connection port %s",
+                    nodeId, logicalConnPoint));
         }
 
         // TODO : Check this method
 
         InterfaceBuilder mcInterfaceBldr = createGenericInterfaceBuilder(portMap,
-            MediaChannelTrailTerminationPoint.class, logicalConnPoint + "-mc");
+            MediaChannelTrailTerminationPoint.class, logicalConnPoint + "-mc" + "-" + waveNumber);
         mcInterfaceBldr.setSupportingInterface(portMap.getSupportingOms());
 
         McTtpBuilder mcTtpBuilder = new McTtpBuilder();
@@ -157,8 +160,8 @@ public class OpenRoadmInterface221 {
 
         // Create Interface1 type object required for adding as augmentation
         org.opendaylight.yang.gen.v1.http.org.openroadm.media.channel.interfaces.rev181019.Interface1Builder
-            interface1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.media.channel.interfaces.rev181019
-            .Interface1Builder();
+            interface1Builder =
+            new org.opendaylight.yang.gen.v1.http.org.openroadm.media.channel.interfaces.rev181019.Interface1Builder();
         interface1Builder.setMcTtp(mcTtpBuilder.build());
         mcInterfaceBldr.addAugmentation(
             org.opendaylight.yang.gen.v1.http.org.openroadm.media.channel.interfaces.rev181019.Interface1.class,
@@ -178,26 +181,36 @@ public class OpenRoadmInterface221 {
 
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
-            throw new OpenRoadmInterfaceException(String.format("Unable to get mapping from PortMapping for node % and"
-                + " logical connection port %s", nodeId, logicalConnPoint));
+            throw new OpenRoadmInterfaceException(
+                String.format("Unable to get mapping from PortMapping for node % and logical connection port %s",
+                    nodeId, logicalConnPoint));
         }
 
-        // TODO : Check this method
+        LOG.info(" Freq Start {} and Freq End {} and center-Freq {}",
+            String.valueOf(fixedFlex.getStart()), String.valueOf(fixedFlex.getStop()),
+            String.valueOf(fixedFlex.getCenterFrequency()));
+        //TODO : Check this method
         InterfaceBuilder nmcInterfaceBldr = createGenericInterfaceBuilder(portMap,
-            NetworkMediaChannelConnectionTerminationPoint.class, logicalConnPoint + "-nmc");
-        nmcInterfaceBldr.setSupportingInterface(logicalConnPoint + "-mc");
+            NetworkMediaChannelConnectionTerminationPoint.class, logicalConnPoint + "-nmc" + "-" + waveNumber);
+        if (logicalConnPoint.contains("DEG")) {
+            nmcInterfaceBldr.setSupportingInterface(logicalConnPoint + "-mc" + "-" + waveNumber);
+        }
+
         NmcCtpBuilder nmcCtpIfBuilder = new NmcCtpBuilder();
 
         nmcCtpIfBuilder.setFrequency(FrequencyTHz.getDefaultInstance(String.valueOf(fixedFlex.getCenterFrequency())));
-        nmcCtpIfBuilder.setWidth(FrequencyGHz.getDefaultInstance(String.valueOf(fixedFlex.getWavelength())));
+        nmcCtpIfBuilder.setWidth(FrequencyGHz.getDefaultInstance("40"));
+
         // Create Interface1 type object required for adding as augmentation
         org.opendaylight.yang.gen.v1.http.org.openroadm.network.media.channel.interfaces.rev181019.Interface1Builder
-            nmcCtpI1fBuilder = new org.opendaylight.yang.gen.v1.http.org.openroadm.network.media.channel.interfaces
-            .rev181019.Interface1Builder();
+            nmcCtpI1fBuilder = new
+             org.opendaylight.yang.gen.v1.http.org.openroadm.network.media.channel.interfaces.rev181019
+                .Interface1Builder();
         nmcCtpI1fBuilder.setNmcCtp(nmcCtpIfBuilder.build());
         nmcInterfaceBldr.addAugmentation(
             org.opendaylight.yang.gen.v1.http.org.openroadm.network.media.channel.interfaces.rev181019.Interface1.class,
             nmcCtpI1fBuilder.build());
+
         // Post interface on the device
         openRoadmInterfaces.postInterface(nodeId, nmcInterfaceBldr);
         return nmcInterfaceBldr.getName();
@@ -211,8 +224,9 @@ public class OpenRoadmInterface221 {
 
         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));
+            throw new OpenRoadmInterfaceException(
+                String.format("Unable to get mapping from PortMapping for node %s and logical connection port %s",
+                    nodeId, logicalConnPoint));
         }
 
         // OCH interface specific data
@@ -249,8 +263,9 @@ public class OpenRoadmInterface221 {
         throws OpenRoadmInterfaceException {
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
-            throw new OpenRoadmInterfaceException(String.format("Unable to get mapping from PortMapping for node % and"
-                + " logical connection port %s", nodeId, logicalConnPoint));
+            throw new OpenRoadmInterfaceException(
+                String.format("Unable to get mapping from PortMapping for node % and logical connection port %s",
+                    nodeId, logicalConnPoint));
         }
         InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(portMap, OtnOdu.class,
             logicalConnPoint + "-ODU");
@@ -269,9 +284,8 @@ public class OpenRoadmInterface221 {
 
         // 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.otn.odu.interfaces.rev181019.Interface1Builder
-            oduIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019
-            .Interface1Builder();
+        org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder oduIf1Builder =
+            new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1Builder();
         oduInterfaceBldr.addAugmentation(
             org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev181019.Interface1.class,
             oduIf1Builder.setOdu(oduIfBuilder.build()).build());
@@ -285,8 +299,9 @@ public class OpenRoadmInterface221 {
         throws OpenRoadmInterfaceException {
         Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
         if (portMap == null) {
-            throw new OpenRoadmInterfaceException(String.format("Unable to get mapping from PortMapping for node % and"
-                + " logical connection port %s", nodeId, logicalConnPoint));
+            throw new OpenRoadmInterfaceException(
+                String.format("Unable to get mapping from PortMapping for node % and logical connection port %s",
+                    nodeId, logicalConnPoint));
         }
         // Create generic interface
         InterfaceBuilder otuInterfaceBldr = createGenericInterfaceBuilder(portMap, OtnOtu.class,
@@ -300,9 +315,8 @@ public class OpenRoadmInterface221 {
 
         // 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.otn.otu.interfaces.rev181019.Interface1Builder
-            otuIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019
-            .Interface1Builder();
+        org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.Interface1Builder otuIf1Builder =
+            new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.Interface1Builder();
         otuInterfaceBldr.addAugmentation(
             org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev181019.Interface1.class,
             otuIf1Builder.setOtu(otuIfBuilder.build()).build());
index a5c9de321d5447936678793d76f1865939f74742..89dfb82aa7b6d71b460ada48abb279f9e57202b1 100644 (file)
@@ -443,10 +443,10 @@ class TransportPCEFulltesting(unittest.TestCase):
               'target-output-power': -3.0},
              res['roadm-connections'][0])
         self.assertDictEqual(
-             {'src-if': 'SRG1-PP1-TXRX-nmc'},
+             {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
              res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-             {'dst-if': 'DEG2-TTP-TXRX-nmc'},
+             {'dst-if': 'DEG2-TTP-TXRX-nmc-1'},
              res['roadm-connections'][0]['destination'])
         time.sleep(5)
 
@@ -466,10 +466,10 @@ class TransportPCEFulltesting(unittest.TestCase):
               'target-output-power': -3.0},
              res['roadm-connections'][0])
         self.assertDictEqual(
-             {'src-if': 'SRG1-PP1-TXRX-nmc'},
+             {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
              res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-             {'dst-if': 'DEG1-TTP-TXRX-nmc'},
+             {'dst-if': 'DEG1-TTP-TXRX-nmc-1'},
              res['roadm-connections'][0]['destination'])
         time.sleep(5)
 
@@ -753,10 +753,10 @@ class TransportPCEFulltesting(unittest.TestCase):
               'opticalControlMode': 'power'},
              res['roadm-connections'][0])
         self.assertDictEqual(
-             {'src-if': 'DEG2-TTP-TXRX-nmc'},
+             {'src-if': 'DEG2-TTP-TXRX-nmc-2'},
              res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-             {'dst-if': 'SRG1-PP2-TXRX-nmc'},
+             {'dst-if': 'SRG1-PP2-TXRX-nmc-2'},
              res['roadm-connections'][0]['destination'])
 
     def test_23_check_topo_XPDRA(self):
@@ -1206,10 +1206,10 @@ class TransportPCEFulltesting(unittest.TestCase):
               'target-output-power': -3.0},
              res['roadm-connections'][0])
         self.assertDictEqual(
-             {'src-if': 'SRG1-PP1-TXRX-nmc'},
+             {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
              res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-             {'dst-if': 'DEG2-TTP-TXRX-nmc'},
+             {'dst-if': 'DEG2-TTP-TXRX-nmc-1'},
              res['roadm-connections'][0]['destination'])
         time.sleep(7)
 
@@ -1229,10 +1229,10 @@ class TransportPCEFulltesting(unittest.TestCase):
               'target-output-power': -3.0},
              res['roadm-connections'][0])
         self.assertDictEqual(
-             {'src-if': 'SRG1-PP1-TXRX-nmc'},
+             {'src-if': 'SRG1-PP1-TXRX-nmc-1'},
              res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-             {'dst-if': 'DEG1-TTP-TXRX-nmc'},
+             {'dst-if': 'DEG1-TTP-TXRX-nmc-1'},
              res['roadm-connections'][0]['destination'])
         time.sleep(7)
 
@@ -1374,10 +1374,10 @@ class TransportPCEFulltesting(unittest.TestCase):
               'target-output-power': -3.0},
              res['roadm-connections'][0])
         self.assertDictEqual(
-             {'src-if': 'SRG1-PP2-TXRX-nmc'},
+             {'src-if': 'SRG1-PP2-TXRX-nmc-2'},
              res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-             {'dst-if': 'DEG2-TTP-TXRX-nmc'},
+             {'dst-if': 'DEG2-TTP-TXRX-nmc-2'},
              res['roadm-connections'][0]['destination'])
         time.sleep(2)
 
index c04830db2283c7a86fefc20c7db228defd6e2714..b1a31b93f826beb07786477ff400b55cc750f522 100644 (file)
@@ -590,7 +590,7 @@ class TransportOlmTesting(unittest.TestCase):
         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'])
+        self.assertEqual(191.35, res['org-openroadm-optical-channel-interfaces:och']['frequency'])
 
     def test_21_get_roadmconnection_ROADMA(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADM-A1/yang-ext:mount/"
@@ -663,7 +663,7 @@ class TransportOlmTesting(unittest.TestCase):
         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'])
+        self.assertEqual(191.35, res['org-openroadm-optical-channel-interfaces:och']['frequency'])
 
     def test_25_get_roadmconnection_ROADMC(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADM-C1/yang-ext:mount/"
index 31fe8ab674d4839cbb21e09b55a45803b78da481..c8211fa3886155f2ccb00bd2c0f648652881c501 100644 (file)
@@ -191,75 +191,73 @@ class TransportPCERendererTesting(unittest.TestCase):
     def test_06_service_path_create_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                 "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-                "interface/DEG1-TTP-TXRX-nmc"
+                "interface/DEG1-TTP-TXRX-nmc-7"
                 .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
              "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertDictContainsSubset({'name': 'DEG1-TTP-TXRX-nmc', 'administrative-state': 'inService',
+        self.assertDictContainsSubset({'name': 'DEG1-TTP-TXRX-nmc-7', 'administrative-state': 'inService',
               'supporting-circuit-pack-name': '1/0',
               'type': 'org-openroadm-interfaces:networkMediaChannelConnectionTerminationPoint',
               'supporting-port': 'L1'}, res['interface'][0])
         self.assertDictEqual(
-             {u'frequency': 195.79999999999998, u'width': 1531.11},
+             {u'frequency': 191.65, u'width': 40},
              res['interface'][0]['org-openroadm-network-media-channel-interfaces:nmc-ctp'])
 
     def test_07_service_path_create_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                 "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-                "interface/DEG1-TTP-TXRX-mc"
+                "interface/DEG1-TTP-TXRX-mc-7"
                 .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
              "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertDictContainsSubset({'name': 'DEG1-TTP-TXRX-mc', 'administrative-state': 'inService',
+        self.assertDictContainsSubset({'name': 'DEG1-TTP-TXRX-mc-7', 'administrative-state': 'inService',
               'supporting-circuit-pack-name': '1/0',
               'type': 'org-openroadm-interfaces:mediaChannelTrailTerminationPoint',
               'supporting-port': 'L1'}, res['interface'][0])
         self.assertDictEqual(
-             {u'min-freq': 195.77499999999998, u'max-freq': 195.825},
+             {u'min-freq': 191.625, u'max-freq': 191.67499999999998},
              res['interface'][0]['org-openroadm-media-channel-interfaces:mc-ttp'])
 
 
     def test_08_service_path_create_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                 "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-                "interface/SRG1-PP3-TXRX-nmc"
+                "interface/SRG1-PP3-TXRX-nmc-7"
                 .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
              "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertDictContainsSubset({'name': 'SRG1-PP3-TXRX-nmc', 'administrative-state': 'inService',
+        self.assertDictContainsSubset({'name': 'SRG1-PP3-TXRX-nmc-7', 'administrative-state': 'inService',
               'supporting-circuit-pack-name': '3/0',
               'type': 'org-openroadm-interfaces:networkMediaChannelConnectionTerminationPoint',
               'supporting-port': 'C3'}, res['interface'][0])
         self.assertDictEqual(
-             {u'frequency': 195.79999999999998, u'width': 1531.11},
+             {u'frequency': 191.65, u'width': 40},
              res['interface'][0]['org-openroadm-network-media-channel-interfaces:nmc-ctp'])
 
+    # -mc supporting interfaces must not be created for SRG, only degrees
     def test_09_service_path_create_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                 "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-                "interface/SRG1-PP3-TXRX-mc"
+                "interface/SRG1-PP3-TXRX-mc-7"
                 .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
              "GET", url, headers=headers, auth=('admin', 'admin'))
-        self.assertEqual(response.status_code, requests.codes.ok)
+        self.assertEqual(response.status_code, requests.codes.not_found)
         res = response.json()
-        self.assertDictContainsSubset({'name': 'SRG1-PP3-TXRX-mc', 'administrative-state': 'inService',
-              'supporting-circuit-pack-name': '3/0',
-              'type': 'org-openroadm-interfaces:mediaChannelTrailTerminationPoint',
-              'supporting-port': 'C3'}, res['interface'][0])
-        self.assertDictEqual(
-             {u'min-freq': 195.77499999999998, u'max-freq': 195.825},
-             res['interface'][0]['org-openroadm-media-channel-interfaces:mc-ttp'])
+        self.assertIn(
+             {"error-type":"application", "error-tag":"data-missing",
+              "error-message":"Request could not be completed because the relevant data model content does not exist"},
+             res['errors']['error'])
 
     def test_10_service_path_create_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
@@ -276,10 +274,10 @@ class TransportPCERendererTesting(unittest.TestCase):
               'opticalControlMode': 'off'},
              res['roadm-connections'][0])
         self.assertDictEqual(
-             {'src-if': 'SRG1-PP3-TXRX-nmc'},
+             {'src-if': 'SRG1-PP3-TXRX-nmc-7'},
              res['roadm-connections'][0]['source'])
         self.assertDictEqual(
-             {'dst-if': 'DEG1-TTP-TXRX-nmc'},
+             {'dst-if': 'DEG1-TTP-TXRX-nmc-7'},
              res['roadm-connections'][0]['destination'])
 
     def test_11_service_path_create_xpdr_check(self):
@@ -301,7 +299,7 @@ class TransportPCERendererTesting(unittest.TestCase):
         self.assertDictEqual(
              {u'rate': u'org-openroadm-common-types:R100G',
               u'transmit-power':-5,
-              u'frequency': 195.79999999999998},
+              u'frequency': 191.65},
              res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
 
     def test_12_service_path_create_xpdr_check(self):
@@ -367,11 +365,7 @@ class TransportPCERendererTesting(unittest.TestCase):
               'supporting-port': 'C1'},
              res['interface'][0])
         self.assertDictEqual(
-             {'speed': 100000,
-              'mtu': 9000,
-              'auto-negotiation': 'enabled',
-              'duplex': 'full',
-              'fec': 'off'},
+             {u'fec': u'off', u'speed': 100000},
              res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
 
     def test_15_service_path_create_xpdr_check(self):
@@ -422,7 +416,7 @@ class TransportPCERendererTesting(unittest.TestCase):
     def test_18_service_path_delete_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                 "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-                "interface/DEG1-TTP-TXRX-mc"
+                "interface/DEG1-TTP-TXRX-mc-7"
                 .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
@@ -437,7 +431,7 @@ class TransportPCERendererTesting(unittest.TestCase):
     def test_19_service_path_delete_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                 "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-                "interface/DEG1-TTP-TXRX-nmc"
+                "interface/DEG1-TTP-TXRX-nmc-7"
                 .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
@@ -452,7 +446,7 @@ class TransportPCERendererTesting(unittest.TestCase):
     def test_20_service_path_delete_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-               "interface/SRG1-PP3-TXRX-mc"
+               "interface/SRG1-PP3-TXRX-mc-7"
                .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
@@ -466,7 +460,7 @@ class TransportPCERendererTesting(unittest.TestCase):
     def test_21_service_path_delete_rdm_check(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
                "node/ROADM-A1/yang-ext:mount/org-openroadm-device:org-openroadm-device/"
-               "interface/SRG1-PP3-TXRX-nmc"
+               "interface/SRG1-PP3-TXRX-nmc-7"
                .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(