[ONOS-7893] TerminalDevice driver for OpenConfig transponders.
Includes FlowRuleProgrammable and DeviceDiscovery behaviours.
The patch enables the configuration of client and line sides of the transponder.
FlowRules coming from the compilation of OpticalConnectivity and OpticalCircuit intents are translated in proper netconf/xml messages.
The patch also fixes an issue in the OpticalCircuiIntentCompiler to avoid overwriting among generated flowrules in case of bidirectional intents.
The patch also extend optical-rest app to enable deletion of OpticalCircuit intents.
An example of OpenConfig TerminalDevice xml datastore is included.
patch 2: Addressed comments by Ramon Casellas. Checkstyle.
patch 3: Fixed typo in OpticalConnectivityIntentCompiler.
patch 4: Checkstyle.
patch 5: Addressed comments by Andrea Campanella.
patch 6: Introduced Jira tag
patch 7: Update commit message.
patch 8: Ranaming files.
patch 9: Checkstyle.
Change-Id: Ia50bc0877ecd314aaf48cdb8465451a68313ce3a
diff --git a/drivers/odtn-driver/src/test/resources/terminal-device.xml b/drivers/odtn-driver/src/test/resources/terminal-device.xml
new file mode 100644
index 0000000..0af7eaa
--- /dev/null
+++ b/drivers/odtn-driver/src/test/resources/terminal-device.xml
@@ -0,0 +1,1161 @@
+<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
+ <logical-channels>
+ <!--Card1-->
+ <channel>
+ <!--Description: Client Port-->
+ <index>10103</index>
+ <config>
+ <index>10103</index>
+ <description>Logical channel 10103</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ </config>
+ <state>
+ <index>10103</index>
+ <description>Logical channel 10103</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ <link-state>UP</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>transceiver-10103</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </config>
+ <state>
+ <transceiver>transceiver-10103</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </state>
+ </ingress>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Logical channel assigned</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10101</logical-channel>
+ <allocation>10</allocation>
+ </config>
+ <state>
+ <index>1</index>
+ <description>0</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10101</logical-channel>
+ <allocation>10</allocation>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+ <channel>
+ <!--Description: Client Port-->
+ <index>10104</index>
+ <config>
+ <index>10104</index>
+ <description>Logical channel 10104</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ </config>
+ <state>
+ <index>11104</index>
+ <description>Logical channel 10104</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ <link-state>DOWN</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>transceiver-10104</transceiver>
+ </config>
+ <state>
+ <transceiver>transceiver-10104</transceiver>
+ </state>
+ </ingress>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Logical channel assigned</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10101</logical-channel>
+ <allocation>10</allocation>
+ </config>
+ <state>
+ <index>1</index>
+ <description>0</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10101</logical-channel>
+ <allocation>10</allocation>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+ <channel>
+ <!--Description: Client Port-->
+ <index>10105</index>
+ <config>
+ <index>10105</index>
+ <description>Logical channel 10105</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ </config>
+ <state>
+ <index>10105</index>
+ <description>Logical channel 10105</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ <link-state>DOWN</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>transceiver-10105</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </config>
+ <state>
+ <transceiver>transceiver-10105</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </state>
+ </ingress>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Logical channel assigned</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10101</logical-channel>
+ <allocation>10</allocation>
+ </config>
+ <state>
+ <index>1</index>
+ <description>0</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10101</logical-channel>
+ <allocation>10</allocation>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+
+ <channel>
+ <!--Description: Line (OTN) Port-->
+ <index>10101</index>
+ <config>
+ <index>10101</index>
+ <description>Logical channel 10101</description>
+ <admin-state>DISABLED</admin-state>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_OTN
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ </config>
+ <state>
+ <index>10101</index>
+ <description>Logical channel 10101</description>
+ <admin-state>DISABLED</admin-state>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_OTN
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <link-state>UP</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>channel-10101</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </config>
+ <state>
+ <transceiver>channel-10101</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </state>
+ </ingress>
+
+ <otn>
+ <config>
+ <tti-msg-expected>test1</tti-msg-expected>
+ <tti-msg-transmit>test1</tti-msg-transmit>
+ </config>
+ <state>
+ <tti-msg-expected>test1</tti-msg-expected>
+ <tti-msg-transmit>test1</tti-msg-transmit>
+ <tti-msg-auto>0</tti-msg-auto>
+ <tti-msg-recv>0</tti-msg-recv>
+ <rdi-msg>0</rdi-msg>
+ <errored-seconds>0</errored-seconds>
+ <severely-errored-seconds>0</severely-errored-seconds>
+ <unavailable-seconds>0</unavailable-seconds>
+ <code-violations>0</code-violations>
+ <fec-uncorrectable-words>0</fec-uncorrectable-words>
+ <fec-corrected-bytes>0</fec-corrected-bytes>
+ <fec-corrected-bits>0</fec-corrected-bits>
+ <background-block-errors>0</background-block-errors>
+ <pre-fec-ber>
+ <instant>0.0</instant>
+ <avg>0.0</avg>
+ <min>0.0</min>
+ <max>0.0</max>
+ </pre-fec-ber>
+ <post-fec-ber>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </post-fec-ber>
+ <q-value>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </q-value>
+ <esnr>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </esnr>
+ </state>
+ </otn>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Optical channel assigned 100</description>
+ <allocation>100</allocation>
+ <assignment-type>OPTICAL_CHANNEL</assignment-type>
+ <optical-channel>channel-10101</optical-channel>
+ </config>
+ <state>
+ <index>1</index>
+ <description>Optical channel assigned 100</description>
+ <allocation>100</allocation>
+ <assignment-type>OPTICAL_CHANNEL</assignment-type>
+ <optical-channel>channel-10101</optical-channel>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+ <!--/Card1-->
+ <!--Card2-->
+ <channel>
+ <!--Description: Client Port-->
+ <index>10106</index>
+ <config>
+ <index>10106</index>
+ <description>Logical channel 10106</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ </config>
+ <state>
+ <index>10106</index>
+ <description>Logical channel 10106</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ <link-state>UP</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>transceiver-10106</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </config>
+ <state>
+ <transceiver>transceiver-10106</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </state>
+ </ingress>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Logical channel assigned</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10102</logical-channel>
+ <allocation>10</allocation>
+ </config>
+ <state>
+ <index>1</index>
+ <description>0</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10102</logical-channel>
+ <allocation>10</allocation>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+ <channel>
+ <!--Description: Client Port-->
+ <index>10107</index>
+ <config>
+ <index>10107</index>
+ <description>Logical channel 10107</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ </config>
+ <state>
+ <index>11104</index>
+ <description>Logical channel 10107</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ <link-state>DOWN</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>transceiver-10107</transceiver>
+ </config>
+ <state>
+ <transceiver>transceiver-10107</transceiver>
+ </state>
+ </ingress>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Logical channel assigned</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10102</logical-channel>
+ <allocation>10</allocation>
+ </config>
+ <state>
+ <index>1</index>
+ <description>0</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10102</logical-channel>
+ <allocation>10</allocation>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+ <channel>
+ <!--Description: Client Port-->
+ <index>10108</index>
+ <config>
+ <index>10108</index>
+ <description>Logical channel 10108</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ </config>
+ <state>
+ <index>10108</index>
+ <description>Logical channel 10108</description>
+ <admin-state>DISABLED</admin-state>
+ <rate-class xmlns:type="http://openconfig.net/yang/transport-types">type:TRIB_RATE_10G</rate-class>
+ <trib-protocol xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_10GE_LAN
+ </trib-protocol>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_ETHERNET
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <test-signal>0</test-signal>
+ <link-state>DOWN</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>transceiver-10108</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </config>
+ <state>
+ <transceiver>transceiver-10108</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </state>
+ </ingress>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Logical channel assigned</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10102</logical-channel>
+ <allocation>10</allocation>
+ </config>
+ <state>
+ <index>1</index>
+ <description>0</description>
+ <assignment-type>LOGICAL_CHANNEL</assignment-type>
+ <logical-channel>10102</logical-channel>
+ <allocation>10</allocation>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+
+ <channel>
+ <!--Description: Line (OTN) Port-->
+ <index>10102</index>
+ <config>
+ <index>10102</index>
+ <description>Logical channel 10102</description>
+ <admin-state>DISABLED</admin-state>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_OTN
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ </config>
+ <state>
+ <index>10102</index>
+ <description>Logical channel 10102</description>
+ <admin-state>DISABLED</admin-state>
+ <logical-channel-type xmlns:type="http://openconfig.net/yang/transport-types">type:PROT_OTN
+ </logical-channel-type>
+ <loopback-mode>NONE</loopback-mode>
+ <link-state>UP</link-state>
+ </state>
+ <ingress>
+ <config>
+ <transceiver>channel-10102</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </config>
+ <state>
+ <transceiver>channel-10102</transceiver>
+ <!--
+ <physical-channel></physical-channel>
+ -->
+ </state>
+ </ingress>
+
+ <otn>
+ <config>
+ <tti-msg-expected>test1</tti-msg-expected>
+ <tti-msg-transmit>test1</tti-msg-transmit>
+ </config>
+ <state>
+ <tti-msg-expected>test1</tti-msg-expected>
+ <tti-msg-transmit>test1</tti-msg-transmit>
+ <tti-msg-auto>0</tti-msg-auto>
+ <tti-msg-recv>0</tti-msg-recv>
+ <rdi-msg>0</rdi-msg>
+ <errored-seconds>0</errored-seconds>
+ <severely-errored-seconds>0</severely-errored-seconds>
+ <unavailable-seconds>0</unavailable-seconds>
+ <code-violations>0</code-violations>
+ <fec-uncorrectable-words>0</fec-uncorrectable-words>
+ <fec-corrected-bytes>0</fec-corrected-bytes>
+ <fec-corrected-bits>0</fec-corrected-bits>
+ <background-block-errors>0</background-block-errors>
+ <pre-fec-ber>
+ <instant>0.0</instant>
+ <avg>0.0</avg>
+ <min>0.0</min>
+ <max>0.0</max>
+ </pre-fec-ber>
+ <post-fec-ber>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </post-fec-ber>
+ <q-value>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </q-value>
+ <esnr>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </esnr>
+ </state>
+ </otn>
+ <logical-channel-assignments>
+ <assignment>
+ <index>1</index>
+ <config>
+ <index>1</index>
+ <description>Optical channel assigned 100</description>
+ <allocation>100</allocation>
+ <assignment-type>OPTICAL_CHANNEL</assignment-type>
+ <optical-channel>channel-10102</optical-channel>
+ </config>
+ <state>
+ <index>1</index>
+ <description>Optical channel assigned 100</description>
+ <allocation>100</allocation>
+ <assignment-type>OPTICAL_CHANNEL</assignment-type>
+ <optical-channel>channel-10102</optical-channel>
+ </state>
+ </assignment>
+ </logical-channel-assignments>
+ </channel>
+ <!--/Card2-->
+ </logical-channels>
+ </terminal-device>
+ <components xmlns="http://openconfig.net/yang/platform">
+ <component>
+ <name>device</name>
+ <config>
+ <name>device</name>
+ </config>
+ <state>
+ <name>DC-USA</name>
+ <mfg-name>SSSA-CNIT</mfg-name>
+ <hardware-version>1.0.0</hardware-version>
+ <firmware-version>1.0.0</firmware-version>
+ <software-version>1.0.0</software-version>
+ <serial-no>610610</serial-no>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:OPERATING_SYSTEM</type>
+ </state>
+ </component>
+ <!--Card11-->
+ <component>
+ <name>port-10101</name>
+ <config>
+ <name>port-10101</name>
+ </config>
+ <state>
+ <name>port-10101</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>channel-10101</name>
+ <config>
+ <name>channel-10101</name>
+ </config>
+ <state>
+ <name>channel-10101</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10101</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10101</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>line</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>line</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>port-10103</name>
+ <config>
+ <name>port-10103</name>
+ </config>
+ <state>
+ <name>port-10103</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>transceiver-10103</name>
+ <config>
+ <name>transceiver-10103</name>
+ </config>
+ <state>
+ <name>transceiver-10103</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10103</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10103</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>port-10104</name>
+ <config>
+ <name>port-10104</name>
+ </config>
+ <state>
+ <name>port-10104</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>transceiver-10104</name>
+ <config>
+ <name>transceiver-10104</name>
+ </config>
+ <state>
+ <name>transceiver-10104</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10104</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10104</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>port-10105</name>
+ <config>
+ <name>port-10105</name>
+ </config>
+ <state>
+ <name>port-10105</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>transceiver-10105</name>
+ <config>
+ <name>transceiver-10105</name>
+ </config>
+ <state>
+ <name>transceiver-10105</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10105</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10105</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>transceiver-10103</name>
+ <config>
+ <name>transceiver-10103</name>
+ </config>
+ <state>
+ <name>transceiver-10103</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:TRANSCEIVER</type>
+ </state>
+ </component>
+ <component>
+ <name>transceiver-10104</name>
+ <config>
+ <name>transceiver-10104</name>
+ </config>
+ <state>
+ <name>transceiver-10104</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:TRANSCEIVER</type>
+ </state>
+ </component>
+ <component>
+ <name>transceiver-10105</name>
+ <config>
+ <name>transceiver-10105</name>
+ </config>
+ <state>
+ <name>transceiver-10105</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:TRANSCEIVER</type>
+ </state>
+ </component>
+ <component>
+ <name>channel-10101</name>
+ <config>
+ <name>channel-10101</name>
+ </config>
+ <state>
+ <name>channel-10101</name>
+ <type xmlns:typex="http://openconfig.net/yang/transport-types">typex:OPTICAL_CHANNEL</type>
+ </state>
+ <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
+ <config>
+ <frequency>191600000</frequency>
+ <target-output-power>100</target-output-power>
+ <operational-mode>0</operational-mode>
+ <line-port>port-10101</line-port>
+ </config>
+ <state>
+ <frequency>191600000</frequency>
+ <target-output-power>0</target-output-power>
+ <operational-mode>0</operational-mode>
+ <line-port>port-10101</line-port>
+ <group-id>1</group-id>
+ <output-power>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </output-power>
+ <input-power>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </input-power>
+ <laser-bias-current>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </laser-bias-current>
+ <chromatic-dispersion>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </chromatic-dispersion>
+ <polarization-mode-dispersion>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </polarization-mode-dispersion>
+ <second-order-polarization-mode-dispersion>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </second-order-polarization-mode-dispersion>
+ <polarization-dependent-loss>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </polarization-dependent-loss>
+ </state>
+ </optical-channel>
+ </component>
+ <!--/Card1-->
+
+ <!--Card12-->
+ <component>
+ <name>port-10102</name>
+ <config>
+ <name>port-10102</name>
+ </config>
+ <state>
+ <name>port-10102</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>channel-10102</name>
+ <config>
+ <name>channel-10102</name>
+ </config>
+ <state>
+ <name>channel-10102</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10102</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10102</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>line</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>line</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>port-10106</name>
+ <config>
+ <name>port-10106</name>
+ </config>
+ <state>
+ <name>port-10106</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>transceiver-10106</name>
+ <config>
+ <name>transceiver-10106</name>
+ </config>
+ <state>
+ <name>transceiver-10106</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10106</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10106</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>port-10107</name>
+ <config>
+ <name>port-10107</name>
+ </config>
+ <state>
+ <name>port-10107</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>transceiver-10107</name>
+ <config>
+ <name>transceiver-10107</name>
+ </config>
+ <state>
+ <name>transceiver-10107</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10107</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10107</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>port-10108</name>
+ <config>
+ <name>port-10108</name>
+ </config>
+ <state>
+ <name>port-10108</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:PORT</type>
+ </state>
+ <subcomponents>
+ <subcomponent>
+ <name>transceiver-10108</name>
+ <config>
+ <name>transceiver-10108</name>
+ </config>
+ <state>
+ <name>transceiver-10108</name>
+ </state>
+ </subcomponent>
+ </subcomponents>
+ <properties>
+ <property>
+ <name>onos-index</name>
+ <config>
+ <name>onos-index</name>
+ <value>10108</value>
+ </config>
+ <state>
+ <name>onos-index</name>
+ <value>10108</value>
+ </state>
+ </property>
+ <property>
+ <name>odtn-port-type</name>
+ <config>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </config>
+ <state>
+ <name>odtn-port-type</name>
+ <value>client</value>
+ </state>
+ </property>
+ </properties>
+ </component>
+ <component>
+ <name>transceiver-10106</name>
+ <config>
+ <name>transceiver-10106</name>
+ </config>
+ <state>
+ <name>transceiver-10106</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:TRANSCEIVER</type>
+ </state>
+ </component>
+ <component>
+ <name>transceiver-10107</name>
+ <config>
+ <name>transceiver-10107</name>
+ </config>
+ <state>
+ <name>transceiver-10107</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:TRANSCEIVER</type>
+ </state>
+ </component>
+ <component>
+ <name>transceiver-10108</name>
+ <config>
+ <name>transceiver-10108</name>
+ </config>
+ <state>
+ <name>transceiver-10108</name>
+ <type xmlns:typex="http://openconfig.net/yang/platform-types">typex:TRANSCEIVER</type>
+ </state>
+ </component>
+ <component>
+ <name>channel-10102</name>
+ <config>
+ <name>channel-10102</name>
+ </config>
+ <state>
+ <name>channel-10102</name>
+ <type xmlns:typex="http://openconfig.net/yang/transport-types">typex:OPTICAL_CHANNEL</type>
+ </state>
+ <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
+ <config>
+ <frequency>191600000</frequency>
+ <target-output-power>100</target-output-power>
+ <operational-mode>0</operational-mode>
+ <line-port>port-10102</line-port>
+ </config>
+ <state>
+ <frequency>191600000</frequency>
+ <target-output-power>0</target-output-power>
+ <operational-mode>0</operational-mode>
+ <line-port>port-10102</line-port>
+ <group-id>1</group-id>
+ <output-power>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </output-power>
+ <input-power>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </input-power>
+ <laser-bias-current>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </laser-bias-current>
+ <chromatic-dispersion>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </chromatic-dispersion>
+ <polarization-mode-dispersion>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </polarization-mode-dispersion>
+ <second-order-polarization-mode-dispersion>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ </second-order-polarization-mode-dispersion>
+ <polarization-dependent-loss>
+ <instant>0</instant>
+ <avg>0</avg>
+ <min>0</min>
+ <max>0</max>
+ <interval>0</interval>
+ </polarization-dependent-loss>
+ </state>
+ </optical-channel>
+ </component>
+ <!--/Card2-->
+ </components>
+</config>
+