--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <netconf xmlns="urn:ietf:params:xml:ns:netmod:notification">
+ <streams>
+ <stream>
+ <name>OPENROADM</name>
+ </stream>
+ </streams>
+ </netconf>
+ <org-openroadm-device xmlns="http://org/openroadm/device">
+ <info>
+ <node-id>ROADM-D1</node-id>
+ <node-number>4</node-number>
+ <node-type>rdm</node-type>
+ <clli>NodeD</clli>
+ <vendor>vendorD</vendor>
+ <model>model2</model>
+ <serial-id>0002</serial-id>
+ <ipAddress>127.0.0.14</ipAddress>
+ <prefix-length>28</prefix-length>
+ <defaultGateway>127.0.0.20</defaultGateway>
+ <source>static</source>
+ <current-ipAddress>127.0.0.14</current-ipAddress>
+ <current-prefix-length>28</current-prefix-length>
+ <current-defaultGateway>127.0.0.20</current-defaultGateway>
+ <macAddress>00:01:02:03:04:05</macAddress>
+ <softwareVersion>swversion1234</softwareVersion>
+ <openroadm-version>2.2.1</openroadm-version>
+ <template>template_1</template>
+ <current-datetime>2017-10-22T15:23:43Z</current-datetime>
+ <max-degrees>2</max-degrees>
+ <max-srgs>3</max-srgs>
+ <geoLocation>
+ <latitude>1.0000</latitude>
+ <longitude>2.0000</longitude>
+ </geoLocation>
+ <max-num-bin-15min-historical-pm>32</max-num-bin-15min-historical-pm>
+ <max-num-bin-24hour-historical-pm>7</max-num-bin-24hour-historical-pm>
+ </info>
+ <users>
+ <user>
+ <name>openroadm</name>
+ <password>openroadm</password>
+ <group>sudo</group>
+ </user>
+ </users>
+ <circuit-packs>
+ <is-pluggable-optics>true</is-pluggable-optics>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ <circuit-pack-type>WSSDEG</circuit-pack-type>
+ <circuit-pack-product-code>DegW</circuit-pack-product-code>
+ <administrative-state>inService</administrative-state>
+ <vendor>vendorD</vendor>
+ <model>WSS9</model>
+ <serial-id>nodeid-1234</serial-id>
+ <type>Dir1</type>
+ <product-code>DegRxTx</product-code>
+ <manufacture-date>2017-08-08T10:47:04.698808+00:00</manufacture-date>
+ <clei>wss1</clei>
+ <hardware-version>0.1</hardware-version>
+ <operational-state>inService</operational-state>
+ <circuit-pack-category>
+ <type>circuitPack</type>
+ </circuit-pack-category>
+ <equipment-state>not-reserved-available</equipment-state>
+ <circuit-pack-mode>inServiceMode</circuit-pack-mode>
+ <shelf>1</shelf>
+ <slot>1</slot>
+ <cp-slots>
+ <slot-name>OSC-SLOT</slot-name>
+ <label>OSC-SLOT</label>
+ <provisioned-circuit-pack>1/0/OSC-PLUG</provisioned-circuit-pack>
+ </cp-slots>
+ <cp-slots>
+ <slot-name>ETH-PLUG</slot-name>
+ <label>ETH-PLUG</label>
+ <provisioned-circuit-pack>1/0/ETH-PLUG</provisioned-circuit-pack>
+ </cp-slots>
+ <ports>
+ <port-name>C1</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG1-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C2</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG1-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C3</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG1-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C4</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG1-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>L1</port-name>
+ <port-type>LINE</port-type>
+ <port-qual>roadm-external</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <label>Dir1-RxTxAMP port</label>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <partner-port>
+ <circuit-pack-name/>
+ <port-name/>
+ </partner-port>
+ <interfaces>
+ <interface-name>OTS-DEG1-TTP-TXRX</interface-name>
+ </interfaces>
+ <interfaces>
+ <interface-name>OMS-DEG1-TTP-TXRX</interface-name>
+ </interfaces>
+ <logical-connection-point>DEG1-TTP-TXRX</logical-connection-point>
+ <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OTS</supported-interface-capability>
+ <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OMS</supported-interface-capability>
+ <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
+ </ports>
+ </circuit-packs>
+ <circuit-packs>
+ <is-pluggable-optics>true</is-pluggable-optics>
+ <circuit-pack-name>1/0/ETH-PLUG</circuit-pack-name>
+ <circuit-pack-type>port</circuit-pack-type>
+ <circuit-pack-product-code>Eth</circuit-pack-product-code>
+ <administrative-state>inService</administrative-state>
+ <vendor>vendorD</vendor>
+ <model>GIGAETHMGT</model>
+ <serial-id>nodeid-1234</serial-id>
+ <type>eth</type>
+ <product-code>eth</product-code>
+ <manufacture-date>2017-08-08T10:47:04.698808+00:00</manufacture-date>
+ <clei>ETHE</clei>
+ <hardware-version>0.1</hardware-version>
+ <operational-state>inService</operational-state>
+ <circuit-pack-category>
+ <type>circuitPack</type>
+ </circuit-pack-category>
+ <equipment-state>not-reserved-available</equipment-state>
+ <circuit-pack-mode>inServiceMode</circuit-pack-mode>
+ <shelf>1</shelf>
+ <slot>1</slot>
+ <subSlot>0</subSlot>
+ <parent-circuit-pack>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ <cp-slot-name>ETH-PLUG</cp-slot-name>
+ </parent-circuit-pack>
+ <ports>
+ <port-name>ETH-PLUG</port-name>
+ <port-type>1GEX</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ </ports>
+ </circuit-packs>
+ <circuit-packs>
+ <is-pluggable-optics>true</is-pluggable-optics>
+ <circuit-pack-category>
+ <type>circuitPack</type>
+ </circuit-pack-category>
+ <circuit-pack-name>1/0/OSC-PLUG</circuit-pack-name>
+ <circuit-pack-type>port</circuit-pack-type>
+ <administrative-state>inService</administrative-state>
+ <vendor></vendor>
+ <model>SFP/SFP+</model>
+ <serial-id>00000163600843</serial-id>
+ <product-code>oooooo</product-code>
+ <manufacture-date>2017-08-08T10:47:04.698808+00:00</manufacture-date>
+ <clei>oscplug</clei>
+ <hardware-version>01</hardware-version>
+ <equipment-state>not-reserved-available</equipment-state>
+ <circuit-pack-mode>NORMAL</circuit-pack-mode>
+ <shelf>2</shelf>
+ <slot>0</slot>
+ <subSlot>0</subSlot>
+ <parent-circuit-pack>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ <cp-slot-name>OSC-SLOT</cp-slot-name>
+ </parent-circuit-pack>
+ <ports>
+ <port-name>OSC-PORT</port-name>
+ <port-type>1GEX</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ </ports>
+ </circuit-packs>
+ <circuit-packs>
+ <is-pluggable-optics>true</is-pluggable-optics>
+ <circuit-pack-name>2/0</circuit-pack-name>
+ <circuit-pack-type>WSSDEG</circuit-pack-type>
+ <circuit-pack-product-code>DegW</circuit-pack-product-code>
+ <administrative-state>inService</administrative-state>
+ <vendor>vendorD</vendor>
+ <model>WSS9</model>
+ <serial-id>nodeid-1234</serial-id>
+ <type>Dir2</type>
+ <product-code>DegRxTx</product-code>
+ <manufacture-date>2017-08-08T10:47:04.698808+00:00</manufacture-date>
+ <clei>wss1</clei>
+ <hardware-version>0.1</hardware-version>
+ <operational-state>inService</operational-state>
+ <circuit-pack-category>
+ <type>circuitPack</type>
+ </circuit-pack-category>
+ <equipment-state>not-reserved-available</equipment-state>
+ <circuit-pack-mode>inServiceMode</circuit-pack-mode>
+ <shelf>1</shelf>
+ <slot>2</slot>
+ <cp-slots>
+ <slot-name>OSC-SLOT</slot-name>
+ <label>OSC-SLOT</label>
+ <provisioned-circuit-pack>2/0/OSC-PLUG</provisioned-circuit-pack>
+ </cp-slots>
+ <cp-slots>
+ <slot-name>ETH-PLUG</slot-name>
+ <label>ETH-PLUG</label>
+ <provisioned-circuit-pack>1/0/ETH-PLUG</provisioned-circuit-pack>
+ </cp-slots>
+ <ports>
+ <port-name>C1</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG2-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C2</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG2-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C3</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG2-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C4</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>DEG2-CTP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>L1</port-name>
+ <port-type>LINE</port-type>
+ <port-qual>roadm-external</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <label>Dir2-RxTxAMP port</label>
+ <circuit-id>1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <partner-port>
+ <circuit-pack-name/>
+ <port-name/>
+ </partner-port>
+ <logical-connection-point>DEG2-TTP-TXRX</logical-connection-point>
+ <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OTS</supported-interface-capability>
+ <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OMS</supported-interface-capability>
+ <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
+ </ports>
+ </circuit-packs>
+ <circuit-packs>
+ <is-pluggable-optics>true</is-pluggable-optics>
+ <circuit-pack-name>2/0/ETH-PLUG</circuit-pack-name>
+ <circuit-pack-type>port</circuit-pack-type>
+ <circuit-pack-product-code>Eth</circuit-pack-product-code>
+ <administrative-state>inService</administrative-state>
+ <vendor>vendorD</vendor>
+ <model>GIGAETHMGT</model>
+ <serial-id>nodeid-1234</serial-id>
+ <type>eth</type>
+ <product-code>eth</product-code>
+ <manufacture-date>2017-08-08T10:47:04.698808+00:00</manufacture-date>
+ <clei>ETHE</clei>
+ <hardware-version>0.1</hardware-version>
+ <operational-state>inService</operational-state>
+ <circuit-pack-category>
+ <type>circuitPack</type>
+ </circuit-pack-category>
+ <equipment-state>not-reserved-available</equipment-state>
+ <circuit-pack-mode>inServiceMode</circuit-pack-mode>
+ <shelf>1</shelf>
+ <slot>2</slot>
+ <subSlot>0</subSlot>
+ <parent-circuit-pack>
+ <circuit-pack-name>2/0</circuit-pack-name>
+ <cp-slot-name>ETH-PLUG</cp-slot-name>
+ </parent-circuit-pack>
+ <ports>
+ <port-name>ETH-PLUG</port-name>
+ <port-type>1GEX</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ </ports>
+ </circuit-packs>
+ <circuit-packs>
+ <is-pluggable-optics>true</is-pluggable-optics>
+ <circuit-pack-category>
+ <type>circuitPack</type>
+ </circuit-pack-category>
+ <circuit-pack-name>2/0/OSC-PLUG</circuit-pack-name>
+ <circuit-pack-type>port</circuit-pack-type>
+ <administrative-state>inService</administrative-state>
+ <vendor>vendorD</vendor>
+ <model>SFP/SFP+</model>
+ <serial-id>00000163600843</serial-id>
+ <product-code>oooooo</product-code>
+ <manufacture-date>2017-08-08T10:47:04.698808+00:00</manufacture-date>
+ <clei>oscplug</clei>
+ <hardware-version>01</hardware-version>
+ <equipment-state>not-reserved-available</equipment-state>
+ <circuit-pack-mode>NORMAL</circuit-pack-mode>
+ <shelf>2</shelf>
+ <slot>0</slot>
+ <subSlot>0</subSlot>
+ <parent-circuit-pack>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ <cp-slot-name>OSC-SLOT</cp-slot-name>
+ </parent-circuit-pack>
+ <ports>
+ <port-name>OSC-PORT</port-name>
+ <port-type>1GEX</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ </ports>
+ </circuit-packs>
+ <circuit-packs>
+ <is-pluggable-optics>true</is-pluggable-optics>
+ <circuit-pack-name>3/0</circuit-pack-name>
+ <circuit-pack-type>ADDDROP</circuit-pack-type>
+ <circuit-pack-product-code>SRGRx</circuit-pack-product-code>
+ <administrative-state>inService</administrative-state>
+ <vendor>vendorD</vendor>
+ <model>WSS</model>
+ <serial-id>nodeid-1234</serial-id>
+ <type>SRG1</type>
+ <product-code>SRGRx</product-code>
+ <manufacture-date>2007-10-10T00:00:00Z</manufacture-date>
+ <clei>12345678901</clei>
+ <hardware-version>0.1</hardware-version>
+ <operational-state>inService</operational-state>
+ <circuit-pack-category>
+ <type>circuitPack</type>
+ </circuit-pack-category>
+ <equipment-state>reserved-for-facility-available</equipment-state>
+ <circuit-pack-mode>inServiceMode</circuit-pack-mode>
+ <shelf>1</shelf>
+ <slot>2</slot>
+ <ports>
+ <port-name>C1</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-external</port-qual>
+ <port-wavelength-type>wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <label>SRG1-client port 1</label>
+ <circuit-id>SRG1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <partner-port>
+ <circuit-pack-name/>
+ <port-name/>
+ </partner-port>
+ <logical-connection-point>SRG1-PP1</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C2</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-external</port-qual>
+ <port-wavelength-type>wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <label>SRG1-client port 2</label>
+ <circuit-id>SRG1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <partner-port>
+ <circuit-pack-name/>
+ <port-name/>
+ </partner-port>
+ <logical-connection-point>SRG1-PP2</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C3</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-external</port-qual>
+ <port-wavelength-type>wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <label>SRG1-client port 3</label>
+ <circuit-id>SRG1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <partner-port>
+ <circuit-pack-name/>
+ <port-name/>
+ </partner-port>
+ <logical-connection-point>SRG1-PP3</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>C4</port-name>
+ <port-type>Client</port-type>
+ <port-qual>roadm-external</port-qual>
+ <port-wavelength-type>wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <label>SRG1-client port 4</label>
+ <circuit-id>SRG1</circuit-id>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <partner-port>
+ <circuit-pack-name/>
+ <port-name/>
+ </partner-port>
+ <logical-connection-point>SRG1-PP4</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>AD-DEG1</port-name>
+ <port-type>Edge</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>SRG1-CP-TXRX</logical-connection-point>
+ </ports>
+ <ports>
+ <port-name>AD-DEG2</port-name>
+ <port-type>Edge</port-type>
+ <port-qual>roadm-internal</port-qual>
+ <port-wavelength-type>multi-wavelength</port-wavelength-type>
+ <port-direction>bidirectional</port-direction>
+ <administrative-state>inService</administrative-state>
+ <operational-state>inService</operational-state>
+ <logical-connection-point>SRG1-CP-TXRX</logical-connection-point>
+ </ports>
+ </circuit-packs>
+ <interface>
+ <name>1GE-interface-1</name>
+ <supporting-circuit-pack-name>1/0/ETH-PLUG</supporting-circuit-pack-name>
+ <supporting-port>ETH-PLUG</supporting-port>
+ <type xmlns:openROADM-if="http://org/openroadm/interfaces">openROADM-if:ethernetCsmacd</type>
+ <operational-state>inService</operational-state>
+ <administrative-state>inService</administrative-state>
+ <ethernet xmlns="http://org/openroadm/ethernet-interfaces">
+ <speed>1000</speed>
+ <duplex>full</duplex>
+ <mtu>1800</mtu>
+ <auto-negotiation>enabled</auto-negotiation>
+ <curr-speed>1000</curr-speed>
+ <curr-duplex>FULL</curr-duplex>
+ </ethernet>
+ </interface>
+ <interface>
+ <name>1GE-interface-2</name>
+ <supporting-circuit-pack-name>2/0/ETH-PLUG</supporting-circuit-pack-name>
+ <supporting-port>ETH-PLUG</supporting-port>
+ <type xmlns:openROADM-if="http://org/openroadm/interfaces">openROADM-if:ethernetCsmacd</type>
+ <operational-state>inService</operational-state>
+ <administrative-state>inService</administrative-state>
+ <ethernet xmlns="http://org/openroadm/ethernet-interfaces">
+ <speed>1000</speed>
+ <duplex>full</duplex>
+ <mtu>1800</mtu>
+ <auto-negotiation>enabled</auto-negotiation>
+ <curr-speed>1000</curr-speed>
+ <curr-duplex>FULL</curr-duplex>
+ </ethernet>
+ </interface>
+ <interface>
+ <name>OTS-DEG1-TTP-TXRX</name>
+ <supporting-circuit-pack-name>1/0</supporting-circuit-pack-name>
+ <supporting-port>L1</supporting-port>
+ <type xmlns:openROADM-if="http://org/openroadm/interfaces">openROADM-if:opticalTransport</type>
+ <operational-state>inService</operational-state>
+ <administrative-state>inService</administrative-state>
+ <ots xmlns="http://org/openroadm/optical-transport-interfaces">
+ <fiber-type>smf</fiber-type>
+ <span-loss-transmit>6</span-loss-transmit>
+ <span-loss-receive>15</span-loss-receive>
+ <ingress-span-loss-aging-margin>0</ingress-span-loss-aging-margin>
+ </ots>
+ </interface>
+ <interface>
+ <name>OMS-DEG1-TTP-TXRX</name>
+ <supporting-circuit-pack-name>1/0</supporting-circuit-pack-name>
+ <supporting-port>L1</supporting-port>
+ <supporting-interface>OTS-DEG1-TTP-TXRX</supporting-interface>
+ <type xmlns:openROADM-if="http://org/openroadm/interfaces">openROADM-if:openROADMOpticalMultiplex</type>
+ <description>TBD</description>
+ <circuit-id>TBD</circuit-id>
+ <operational-state>inService</operational-state>
+ <administrative-state>inService</administrative-state>
+ </interface>
+ <protocols>
+ <lldp xmlns="http://org/openroadm/lldp">
+ <global-config>
+ <adminStatus>enable</adminStatus>
+ <msgTxHoldMultiplier>4</msgTxHoldMultiplier>
+ <msgTxInterval>20</msgTxInterval>
+ </global-config>
+ <nbr-list>
+ <if-name>
+ <ifName>1GE-interface-1</ifName>
+ <remoteSysName>ROADM-C1</remoteSysName>
+ <remoteMgmtAddress>1.1.1.1</remoteMgmtAddress>
+ <remoteChassisId>1?</remoteChassisId>
+ <remotePortId>1GE-interface-2</remotePortId>
+ <remoteChassisIdSubType>chassiscomponent</remoteChassisIdSubType>
+ <remotePortIdSubType>ifalias</remotePortIdSubType>
+ <remoteMgmtAddressSubType>ipV4</remoteMgmtAddressSubType>
+ </if-name>
+ <if-name>
+ <ifName>1GE-interface-2</ifName>
+ <remoteSysName>ROADM-B1</remoteSysName>
+ <remoteMgmtAddress>1.1.1.1</remoteMgmtAddress>
+ <remoteChassisId>1?</remoteChassisId>
+ <remotePortId>1GE-interface-2</remotePortId>
+ <remoteChassisIdSubType>chassiscomponent</remoteChassisIdSubType>
+ <remotePortIdSubType>ifalias</remotePortIdSubType>
+ <remoteMgmtAddressSubType>ipV4</remoteMgmtAddressSubType>
+ </if-name>
+ </nbr-list>
+ <port-config>
+ <ifName>1GE-interface-1</ifName>
+ <adminStatus>txandrx</adminStatus>
+ </port-config>
+ <port-config>
+ <ifName>1GE-interface-2</ifName>
+ <adminStatus>txandrx</adminStatus>
+ </port-config>
+ </lldp>
+ </protocols>
+ <degree>
+ <degree-number>1</degree-number>
+ <max-wavelengths>96</max-wavelengths>
+ <mc-capabilities>
+ <slot-width-granularity>12.5</slot-width-granularity>
+ <center-freq-granularity>6.25</center-freq-granularity>
+ <min-slots>3</min-slots>
+ <max-slots>384</max-slots>
+ </mc-capabilities>
+ <circuit-packs>
+ <index>1</index>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ </circuit-packs>
+ <circuit-packs>
+ <index>2</index>
+ <circuit-pack-name>1/0/ETH-PLUG</circuit-pack-name>
+ </circuit-packs>
+ <connection-ports>
+ <index>1</index>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ <port-name>L1</port-name>
+ </connection-ports>
+ </degree>
+ <degree>
+ <degree-number>2</degree-number>
+ <max-wavelengths>96</max-wavelengths>
+ <mc-capabilities>
+ <slot-width-granularity>12.5</slot-width-granularity>
+ <center-freq-granularity>6.25</center-freq-granularity>
+ <min-slots>3</min-slots>
+ <max-slots>384</max-slots>
+ </mc-capabilities>
+ <circuit-packs>
+ <index>1</index>
+ <circuit-pack-name>2/0</circuit-pack-name>
+ </circuit-packs>
+ <circuit-packs>
+ <index>2</index>
+ <circuit-pack-name>2/0/ETH-PLUG</circuit-pack-name>
+ </circuit-packs>
+ <connection-ports>
+ <index>1</index>
+ <circuit-pack-name>2/0</circuit-pack-name>
+ <port-name>L1</port-name>
+ </connection-ports>
+ </degree>
+ <shared-risk-group>
+ <srg-number>1</srg-number>
+ <max-add-drop-ports>4</max-add-drop-ports>
+ <wavelength-duplication>one-per-srg</wavelength-duplication>
+ <mc-capabilities>
+ <slot-width-granularity>12.5</slot-width-granularity>
+ <center-freq-granularity>6.25</center-freq-granularity>
+ <min-slots>3</min-slots>
+ <max-slots>384</max-slots>
+ </mc-capabilities>
+ <circuit-packs>
+ <index>1</index>
+ <circuit-pack-name>3/0</circuit-pack-name>
+ </circuit-packs>
+ <current-provisioned-add-drop-ports>4</current-provisioned-add-drop-ports>
+ </shared-risk-group>
+ </org-openroadm-device>
+ <current-pm-list xmlns="http://org/openroadm/pm">
+ <current-pm-entry>
+ <pm-resource-instance xmlns:d="http://org/openroadm/device">/d:org-openroadm-device/d:interface[d:name='OTS-DEG1-TTP-TXRX']</pm-resource-instance>
+ <pm-resource-type>interface</pm-resource-type>
+ <pm-resource-type-extension/>
+ <retrieval-time>2018-06-07T13:22:58+00:00</retrieval-time>
+ <current-pm>
+ <type>opticalPowerOutput</type>
+ <extension/>
+ <location>nearEnd</location>
+ <direction>tx</direction>
+ <measurement>
+ <granularity>15min</granularity>
+ <pmParameterValue>4.6</pmParameterValue>
+ <pmParameterUnit>dBm</pmParameterUnit>
+ <validity>complete</validity>
+ </measurement>
+ <measurement>
+ <granularity>24Hour</granularity>
+ <pmParameterValue>3.26</pmParameterValue>
+ <pmParameterUnit>dBm</pmParameterUnit>
+ <validity>complete</validity>
+ </measurement>
+ </current-pm>
+ <current-pm>
+ <type>opticalPowerInput</type>
+ <extension/>
+ <location>nearEnd</location>
+ <direction>rx</direction>
+ <measurement>
+ <granularity>15min</granularity>
+ <pmParameterValue>-15.1</pmParameterValue>
+ <pmParameterUnit>dBm</pmParameterUnit>
+ <validity>complete</validity>
+ </measurement>
+ <measurement>
+ <granularity>24Hour</granularity>
+ <pmParameterValue>-17.3</pmParameterValue>
+ <pmParameterUnit>dBm</pmParameterUnit>
+ <validity>complete</validity>
+ </measurement>
+ </current-pm>
+ <current-pm>
+ <type>opticalReturnLoss</type>
+ <extension/>
+ <location>nearEnd</location>
+ <direction>rx</direction>
+ <measurement>
+ <granularity>15min</granularity>
+ <pmParameterValue>49.1</pmParameterValue>
+ <pmParameterUnit>dBm</pmParameterUnit>
+ <validity>complete</validity>
+ </measurement>
+ <measurement>
+ <granularity>24Hour</granularity>
+ <pmParameterValue>45</pmParameterValue>
+ <pmParameterUnit>dBm</pmParameterUnit>
+ <validity>complete</validity>
+ </measurement>
+ </current-pm>
+ </current-pm-entry>
+ </current-pm-list>
+</data>
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2019 Orange, Inc. and others. All rights reserved.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import unittest
+import time
+import requests
+from common import test_utils
+
+
+class TransportPCEPortMappingTesting(unittest.TestCase):
+
+ processes = None
+
+ @classmethod
+ def setUpClass(cls):
+ cls.processes = test_utils.start_tpce()
+ cls.processes = test_utils.start_sims(['roadmd'])
+
+ @classmethod
+ def tearDownClass(cls):
+ for process in cls.processes:
+ test_utils.shutdown_process(process)
+ print("all processes killed")
+
+ def setUp(self):
+ print("execution of {}".format(self.id().split(".")[-1]))
+ time.sleep(10)
+
+ def test_01_rdm_device_connection(self):
+ response = test_utils.mount_device("ROADM-D1", 'roadmd')
+ self.assertEqual(response.status_code, requests.codes.created,
+ test_utils.CODE_SHOULD_BE_201)
+
+ def test_02_rdm_device_connected(self):
+ response = test_utils.get_netconf_oper_request("ROADM-D1")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ res['node'][0]['netconf-node-topology:connection-status'],
+ 'connected')
+ time.sleep(10)
+
+ def test_03_rdm_portmapping_info(self):
+ response = test_utils.portmapping_request("ROADM-D1/node-info")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ {u'node-info': {u'node-type': u'rdm',
+ u'node-ip-address': u'127.0.0.14',
+ u'node-clli': u'NodeD',
+ u'openroadm-version': u'2.2.1', u'node-vendor': u'vendorD',
+ u'node-model': u'model2',
+ }},
+ res)
+ time.sleep(3)
+
+ def test_04_rdm_deg1_lcp(self):
+ response = test_utils.portmapping_request("ROADM-D1/mc-capabilities/DEG1-TTP")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ {
+ "mc-capabilities": [
+ {
+ "mc-node-name": "DEG1-TTP",
+ "center-freq-granularity": 6.25,
+ "slot-width-granularity": 12.5
+ }
+ ]
+ }, res)
+ time.sleep(3)
+
+ def test_05_rdm_deg2_lcp(self):
+ response = test_utils.portmapping_request("ROADM-D1/mc-capabilities/DEG2-TTP")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ {
+ "mc-capabilities": [
+ {
+ "mc-node-name": "DEG2-TTP",
+ "center-freq-granularity": 6.25,
+ "slot-width-granularity": 12.5
+ }
+ ]
+ }, res)
+ time.sleep(3)
+
+ def test_06_rdm_srg1_lcp(self):
+ response = test_utils.portmapping_request("ROADM-D1/mc-capabilities/SRG1-PP")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(
+ {
+ "mc-capabilities": [
+ {
+ "mc-node-name": "SRG1-PP",
+ "center-freq-granularity": 6.25,
+ "slot-width-granularity": 12.5
+ }
+ ]
+ }, res)
+ time.sleep(3)
+
+ # Renderer interface creations
+ def test_07_device_renderer(self):
+ data = {
+ "transportpce-device-renderer:input": {
+ "transportpce-device-renderer:modulation-format": "dp-qpsk",
+ "transportpce-device-renderer:operation": "create",
+ "transportpce-device-renderer:service-name": "testNMC-MC",
+ "transportpce-device-renderer:wave-number": "2",
+ "transportpce-device-renderer:center-freq": "196.05",
+ "transportpce-device-renderer:slot-width": "87.5",
+ "transportpce-device-renderer:nodes": [
+ {
+ "transportpce-device-renderer:node-id": "ROADM-D1",
+ "transportpce-device-renderer:src-tp": "SRG1-PP1-TXRX",
+ "transportpce-device-renderer:dest-tp": "DEG1-TTP-TXRX"
+ }
+ ]
+ }
+ }
+ url = test_utils.RESTCONF_BASE_URL + \
+ "/operations/transportpce-device-renderer:service-path"
+ response = test_utils.post_request(url, data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertIn('Roadm-connection successfully created for nodes',
+ res['output']['result'])
+ time.sleep(10)
+
+ # 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")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertDictEqual(
+ dict({"name": "DEG1-TTP-TXRX-mc-2",
+ "supporting-interface": "OMS-DEG1-TTP-TXRX",
+ "supporting-circuit-pack-name": "1/0",
+ "circuit-id": "TBD",
+ "description": "TBD",
+ "supporting-port": "L1",
+ "type": "org-openroadm-interfaces:mediaChannelTrailTerminationPoint"},
+ **res['interface'][0]),
+ res['interface'][0])
+
+ # Check the mc-ttp max and min-freq
+ self.assertEqual({
+ "min-freq": 196.00625,
+ "max-freq": 196.09375
+ },
+ res['interface'][0]['org-openroadm-media-channel-interfaces:mc-ttp'])
+ time.sleep(3)
+
+ # 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")
+ 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",
+ "supporting-circuit-pack-name": "1/0",
+ "circuit-id": "TBD",
+ "description": "TBD",
+ "supporting-port": "L1",
+ "type": "org-openroadm-interfaces:networkMediaChannelConnectionTerminationPoint"},
+ **res['interface'][0]),
+ res['interface'][0])
+
+ # Check the mc-ttp max and min-freq
+ self.assertEqual({
+ "frequency": 196.05,
+ "width": 75
+ },
+ res['interface'][0]['org-openroadm-network-media-channel-interfaces:nmc-ctp'])
+ time.sleep(3)
+
+ # 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")
+ res = response.json()
+ self.assertEqual(response.status_code, requests.codes.ok)
+ self.assertEqual(
+ dict({"name": "SRG1-PP1-TXRX-nmc-2",
+ "supporting-circuit-pack-name": "3/0",
+ "circuit-id": "TBD",
+ "description": "TBD",
+ "supporting-port": "C1",
+ "type": "org-openroadm-interfaces:networkMediaChannelConnectionTerminationPoint"},
+ **res['interface'][0]), res['interface'][0])
+ self.assertEqual({"frequency": 196.05, "width": 75},
+ res['interface'][0]['org-openroadm-network-media-channel-interfaces:nmc-ctp'])
+ time.sleep(3)
+
+ # 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")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual("SRG1-PP1-TXRX-DEG1-TTP-TXRX-2",
+ res['roadm-connections'][0]['connection-name'])
+ self.assertEqual("SRG1-PP1-TXRX-nmc-2",
+ res['roadm-connections'][0]['source']['src-if'])
+ self.assertEqual("DEG1-TTP-TXRX-nmc-2",
+ res['roadm-connections'][0]['destination']['dst-if'])
+ time.sleep(3)
+
+ # Delete ROADM connections and interfaces
+
+ # delete ROADM connection
+ def test_12_delete_roadm_connection(self):
+ 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")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(3)
+
+ # Delete NMC SRG interface
+ def test_13_delete_srg_interface(self):
+ 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")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(3)
+
+ # Delete NMC Degree interface
+ def test_14_delete_degree_interface(self):
+ 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")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(3)
+
+ # Delete MC Degree interface
+ def test_15_delete_degree_interface(self):
+ 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")
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(3)
+
+
+if __name__ == "__main__":
+ unittest.main(verbosity=2)
changedir={toxinidir}/tests
commands =
#install maven and JDK11 on the Gate since they are not there by default
- {py3,portmapping,topoPortMapping,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c "if [ ! `which mvn` ]; then ./installMavenCentOS.sh ; fi"
+ {py3,portmapping,topoPortMapping,flexgrid,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c "if [ ! `which mvn` ]; then ./installMavenCentOS.sh ; fi"
#install honeynode simulators
- {py3,portmapping,topoPortMapping,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c "./install_honeynode.sh"
+ {py3,portmapping,topoPortMapping,flexgrid,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c "./install_honeynode.sh"
#patch OLM constant to speed up tests, unnecessary for PCE
{py3,portmapping,topoPortMapping,rspn,topology,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otn-topology,olm221,otnend2end,end2end221,tapi221}: - sh -c "sed -i'_' 's@=.*//#FUNCTESTVAL=@=@g' ../olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java"
#build controller, source JDK_JAVA_OPTIONS to remove illegal reflective acces warnings introduced by Java11
- {py3,portmapping,topoPortMapping,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c ". $PWD/reflectwarn.sh && cd .. && mvn clean install -s tests/odl_settings.xml -DskipTests -Dmaven.javadoc.skip=true -Dodlparent.spotbugs.skip -Dodlparent.checkstyle.skip"
+ {py3,portmapping,topoPortMapping,flexgrid,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c ". $PWD/reflectwarn.sh && cd .. && mvn clean install -s tests/odl_settings.xml -DskipTests -Dmaven.javadoc.skip=true -Dodlparent.spotbugs.skip -Dodlparent.checkstyle.skip"
{py3,portmapping,topoPortMapping,rspn,topology,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otn-topology,olm221,otnend2end,end2end221,tapi221}: - sh -c "mv ../olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java_ ../olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils.java"
#patch Karaf exec for the same reason at runtime
- {py3,portmapping,topoPortMapping,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c "sed -i'_' 's@!/bin/sh@!/bin/sh\'$'\n. $(dirname $0)/../../../../tests/reflectwarn.sh@' ../karaf/target/assembly/bin/karaf"
+ {py3,portmapping,topoPortMapping,flexgrid,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c "sed -i'_' 's@!/bin/sh@!/bin/sh\'$'\n. $(dirname $0)/../../../../tests/reflectwarn.sh@' ../karaf/target/assembly/bin/karaf"
# the following command would be the straight and right way to support both BSD and GNU sed versions
# sh -c "sed -i'_' '1 a\'$'\n. \$(dirname \$0)/\.\./\.\./\.\./\.\./tests/reflectwarn.sh\n' ../karaf/target/assembly/bin/karaf"
# but tox reinterprets the quotes as
# sh -c 'sed -i'"'"'_'"'"' '"'"'1 a\'"'"'$'"'"'\n. \$(dirname \$0)/\.\./\.\./\.\./\.\./tests/reflectwarn.sh\n'"'"' ../karaf/target/assembly/bin/karaf'
# ,what results in an unexpected different formating (with a $ on the second line and the dot on the third)
#build Lighty if needed
- {py3,portmapping,topoPortMapping,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c 'if [ "$USE_LIGHTY" = "True" ]; then (cd ../lighty && ./build.sh); fi'
+ {py3,portmapping,topoPortMapping,flexgrid,rspn,topology,pce,olm,end2end,portmapping221,rspn221,otnrenderer,otnshrenderer,topology221,otntopology,olm221,tapi221,otnend2end,end2end221,gnpy}: - sh -c 'if [ "$USE_LIGHTY" = "True" ]; then (cd ../lighty && ./build.sh); fi'
#run 1.2.1 functional tests
{py3,portmapping}: nosetests --with-xunit transportpce_tests/1.2.1/test_portmapping.py
{py3,topoPortMapping}: nosetests --with-xunit transportpce_tests/1.2.1/test_topo_portmapping.py
{py3,portmapping221}: nosetests --with-xunit transportpce_tests/2.2.1/test_portmapping.py
{py3,topology221}: nosetests --with-xunit transportpce_tests/2.2.1/test_topology.py
{py3,otntopology}: nosetests --with-xunit transportpce_tests/2.2.1/test_otn_topology.py
+ {py3,flexgrid}: nosetests --with-xunit transportpce_tests/2.2.1/test_flex_grid.py
{py3,rspn221}: nosetests --with-xunit transportpce_tests/2.2.1/test_renderer_service_path_nominal.py
{py3,otnrenderer}: nosetests --with-xunit transportpce_tests/2.2.1/test_otn_renderer.py
{py3,otnshrenderer}: nosetests --with-xunit transportpce_tests/2.2.1/test_otn_sh_renderer.py