diff options
4 files changed, 111 insertions, 11 deletions
diff --git a/resources/libraries/python/honeycomb/Netconf.py b/resources/libraries/python/honeycomb/Netconf.py index e3cdbe5dce..770af95afa 100644 --- a/resources/libraries/python/honeycomb/Netconf.py +++ b/resources/libraries/python/honeycomb/Netconf.py @@ -154,14 +154,20 @@ class Netconf(object): return response - def send(self, message): + def send(self, message, **params): """Sends provided message through the channel. :param message: Message to be sent to Honeycomb. + :param params: Format the message string with these parameters. :type message: str + :type params: dict """ + message = message.format(**params) + if not message.endswith(self.delimiter): message += self.delimiter + logger.debug(message) + self.channel.send(message) diff --git a/resources/libraries/robot/honeycomb/netconf.robot b/resources/libraries/robot/honeycomb/netconf.robot index 79fa0a312c..75eaefbf25 100644 --- a/resources/libraries/robot/honeycomb/netconf.robot +++ b/resources/libraries/robot/honeycomb/netconf.robot @@ -35,12 +35,13 @@ | | ... | | ... | *Arguments:* | | ... | - trigger - RPC sequence that triggers a specific error. Type: string +| | ... | - params - Parameters for the trigger template. Type: string | | ... | | ... | *Example:* | | ... | | ... | \| Error trigger is sent \| <rpc>_some data_</rpc>]]>]]> \| -| | [Arguments] | ${trigger} -| | Send | ${trigger} +| | [Arguments] | ${trigger} | &{params} +| | Send | ${trigger} | &{params} | Replies should not contain RPC errors | | [Documentation] | Read response received through the channel, and check if\ diff --git a/resources/test_data/honeycomb/netconf/triggers.py b/resources/test_data/honeycomb/netconf/triggers.py index c3a72e4df4..51a6ab6967 100644 --- a/resources/test_data/honeycomb/netconf/triggers.py +++ b/resources/test_data/honeycomb/netconf/triggers.py @@ -363,7 +363,7 @@ trigger_revert1 = u""" </rpc> ]]>]]> -<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<rpc message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <edit-config> <target> <candidate/> @@ -388,7 +388,7 @@ trigger_revert1 = u""" </rpc> ]]>]]> - <rpc message-id="102" + <rpc message-id="103" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <commit/> </rpc> @@ -418,7 +418,7 @@ trigger_revert2 = u""" </rpc> ]]>]]> -<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<rpc message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <edit-config> <target> <candidate/> @@ -439,8 +439,93 @@ trigger_revert2 = u""" </rpc> ]]>]]> - <rpc message-id="102" - xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> - <commit/> - </rpc> - ]]>]]>"""
\ No newline at end of file +<rpc message-id="103" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]>""" + + +# Test data for issue HC2VPP-60 +# Creating Vlan sub-interface over netconf fails due to ODL bug +trigger_vlan = u""" +<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface> +<name>{interface}</name> +<sub-interfaces xmlns="urn:opendaylight:params:xml:ns:yang:vpp:vlan"/> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface> +<name>{interface}</name> +<sub-interfaces xmlns="urn:opendaylight:params:xml:ns:yang:vpp:vlan"> +<sub-interface> +<identifier>2420</identifier> +</sub-interface> +</sub-interfaces> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="103" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<default-operation>none</default-operation> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface> +<name>{interface}</name> +<sub-interfaces xmlns="urn:opendaylight:params:xml:ns:yang:vpp:vlan"> +<sub-interface xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" a:operation="replace"> +<identifier>2420</identifier> +<match> +<vlan-tagged> +<match-exact-tags>true</match-exact-tags> +</vlan-tagged> +</match> +<vlan-type>802dot1q</vlan-type> +<enabled>false</enabled> +<tags> +<tag> +<index>0</index> +<dot1q-tag> +<tag-type xmlns:x="urn:ieee:params:xml:ns:yang:dot1q-types">x:s-vlan</tag-type> +<vlan-id>2420</vlan-id> +</dot1q-tag> +</tag> +</tags> +</sub-interface> +</sub-interfaces> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="104" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]> +"""
\ No newline at end of file diff --git a/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot b/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot index 0aabf4fc9f..45a80a436d 100644 --- a/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot +++ b/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot @@ -26,6 +26,7 @@ | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} *** Variables *** +| ${interface}= | ${node['interfaces']['port1']['name']} | &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} | ... | unknown-unicast-flood=${True} | arp-termination=${True} @@ -57,3 +58,10 @@ | | When Error trigger is sent | ${trigger_revert1} | | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} | | Then Should be equal | ${if_data} | ${if_data_new} + +| TC04: Vlan subinterface creation +| | [Documentation] | Configure a Vlan sub-interface under a physical interface. +| | Given Netconf session is established | ${node} +| | When Error Trigger Is Sent +| | ... | ${trigger_vlan} | interface=${interface} +| | Then Replies should not contain RPC errors |