diff options
author | Michal Cmarada <mcmarada@cisco.com> | 2019-01-23 11:41:26 +0100 |
---|---|---|
committer | Michal Cmarada <mcmarada@cisco.com> | 2019-01-23 11:43:40 +0100 |
commit | 498be1107120dd7a9a8df5443b74689fbe95f61a (patch) | |
tree | 4060cc8491006bfb898776d4a8eeea29aac88428 /examples/ncclient/interfaces | |
parent | 7645a98e4c92a20d45a8a1417db498db1b075080 (diff) |
Update ncclient examples
- added optional parameter host for copy_config, get_config
and edit-config.
- added basic tests for interfaces:
- loopback interface
- af-packet interface
- tap interface
- added diff_xml.py to find differences between two sets of config.
It supports both full xml comparison and comparison based on xPath
- added example diff between running and candidate config (interfaces)
- fixed formatting and namespaces
Change-Id: If6dd7a76fab538735ab92c67f9457326fbcba7ec
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
Diffstat (limited to 'examples/ncclient/interfaces')
12 files changed, 442 insertions, 0 deletions
diff --git a/examples/ncclient/interfaces/af-packet/candidate_config_af_packet_interface.xml b/examples/ncclient/interfaces/af-packet/candidate_config_af_packet_interface.xml new file mode 100644 index 000000000..dd2a458b1 --- /dev/null +++ b/examples/ncclient/interfaces/af-packet/candidate_config_af_packet_interface.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (c) 2019 Cisco and/or its affiliates. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at: + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> + <nat xmlns="urn:ietf:params:xml:ns:yang:ietf-nat"> + <instances> + <instance> + <id>0</id> + <policy> + <id>0</id> + </policy> + </instance> + </instances> + </nat> + <fib-table-management xmlns="http://fd.io/hc2vpp/yang/vpp-fib-table-management"> + <fib-tables> + <table> + <table-id>0</table-id> + <address-family>ipv4</address-family> + <name>ipv4-VRF:0</name> + </table> + <table> + <table-id>0</table-id> + <address-family>ipv6</address-family> + <name>ipv6-VRF:0</name> + </table> + </fib-tables> + </fib-table-management> + <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> + <interface> + <name>local0</name> + <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type> + <enabled>false</enabled> + </interface> + <interface> + <name>GigabitEthernet0/9/0</name> + <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type> + <enabled>false</enabled> + <ethernet xmlns="http://fd.io/hc2vpp/yang/v3po"> + <mtu>9206</mtu> + </ethernet> + </interface> + <interface> + <name>host-vethAF</name> + <description>VethAF host interface</description> + <af-packet xmlns="http://fd.io/hc2vpp/yang/v3po"> + <host-interface-name>vethAF</host-interface-name> + </af-packet> + <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> + <address> + <ip>10.2.0.2</ip> + <prefix-length>24</prefix-length> + </address> + </ipv4> + <type xmlns:x="http://fd.io/hc2vpp/yang/v3po">x:af-packet</type> + </interface> + </interfaces> + <gpe xmlns="http://fd.io/hc2vpp/yang/gpe"> + <gpe-feature-data> + <enable>false</enable> + </gpe-feature-data> + </gpe> + <native-forward-paths-tables xmlns="http://fd.io/hc2vpp/yang/gpe"> + <native-forward-paths-table> + <table-id>0</table-id> + </native-forward-paths-table> + </native-forward-paths-tables> + <lisp xmlns="http://fd.io/hc2vpp/yang/lisp"> + <enable>false</enable> + </lisp> +</data> + diff --git a/examples/ncclient/interfaces/af-packet/edit_config_af_packet_interface.xml b/examples/ncclient/interfaces/af-packet/edit_config_af_packet_interface.xml new file mode 100644 index 000000000..f8c43673f --- /dev/null +++ b/examples/ncclient/interfaces/af-packet/edit_config_af_packet_interface.xml @@ -0,0 +1,34 @@ +<!-- + ~ Copyright (c) 2019 Cisco and/or its affiliates. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at: + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<config> + <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> + <interface> + <name>host-vethAF</name> + <description>VethAF host interface</description> + <af-packet xmlns="http://fd.io/hc2vpp/yang/v3po"> + <host-interface-name>vethAF</host-interface-name> + </af-packet> + <type xmlns:x="http://fd.io/hc2vpp/yang/v3po">x:af-packet</type> + <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> + <address> + <ip>10.2.0.2</ip> + <prefix-length>24</prefix-length> + </address> + </ipv4> + </interface> + </interfaces> +</config> diff --git a/examples/ncclient/interfaces/af-packet/test_diff_af_packet.sh b/examples/ncclient/interfaces/af-packet/test_diff_af_packet.sh new file mode 100755 index 000000000..8bce3b6fa --- /dev/null +++ b/examples/ncclient/interfaces/af-packet/test_diff_af_packet.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR_NAME=$(dirname $0) + +${DIR_NAME}/../../test_diff_config.sh ${DIR_NAME}/candidate_config_af_packet_interface.xml diff --git a/examples/ncclient/interfaces/af-packet/test_edit_af_packet.sh b/examples/ncclient/interfaces/af-packet/test_edit_af_packet.sh new file mode 100755 index 000000000..058d47825 --- /dev/null +++ b/examples/ncclient/interfaces/af-packet/test_edit_af_packet.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR_NAME=$(dirname $0) + +# create linux side of AF-packet interface +sudo ip link add vethAF type veth peer name vethFA +xPath="./{urn:ietf:params:xml:ns:yang:ietf-interfaces}interfaces/\ +{urn:ietf:params:xml:ns:yang:ietf-interfaces}interface[{urn:ietf:params:xml:ns:yang:ietf-interfaces}name='host-vethAF']" + +${DIR_NAME}/../../test_edit_config.sh ${DIR_NAME}/edit_config_af_packet_interface.xml ${DIR_NAME}/edit_config_af_packet_interface.xml ${xPath} diff --git a/examples/ncclient/interfaces/loop/candidate_config_loop_interface.xml b/examples/ncclient/interfaces/loop/candidate_config_loop_interface.xml new file mode 100644 index 000000000..c477ad288 --- /dev/null +++ b/examples/ncclient/interfaces/loop/candidate_config_loop_interface.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> + <fib-table-management xmlns="http://fd.io/hc2vpp/yang/vpp-fib-table-management"> + <fib-tables> + <table> + <table-id>0</table-id> + <address-family>ipv4</address-family> + <name>ipv4-VRF:0</name> + </table> + <table> + <table-id>0</table-id> + <address-family>ipv6</address-family> + <name>ipv6-VRF:0</name> + </table> + </fib-tables> + </fib-table-management> + <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> + <interface> + <name>local0</name> + <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type> + <enabled>false</enabled> + </interface> + <interface> + <name>loop0</name> + <type xmlns:x="http://fd.io/hc2vpp/yang/v3po">x:loopback</type> + <enabled>true</enabled> + <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> + <address> + <ip>10.0.0.1</ip> + <prefix-length>24</prefix-length> + </address> + </ipv4> + <loopback xmlns="http://fd.io/hc2vpp/yang/v3po"> + </loopback> + </interface> + </interfaces> + <nat xmlns="urn:ietf:params:xml:ns:yang:ietf-nat"> + <instances> + <instance> + <id>0</id> + <policy> + <id>0</id> + </policy> + </instance> + </instances> + </nat> + <gpe xmlns="http://fd.io/hc2vpp/yang/gpe"> + <gpe-feature-data> + <enable>false</enable> + </gpe-feature-data> + </gpe> + <native-forward-paths-tables xmlns="http://fd.io/hc2vpp/yang/gpe"> + <native-forward-paths-table> + <table-id>0</table-id> + </native-forward-paths-table> + </native-forward-paths-tables> + <lisp xmlns="http://fd.io/hc2vpp/yang/lisp"> + <enable>false</enable> + </lisp> +</data> + diff --git a/examples/ncclient/interfaces/loop/edit_config_loop_interface.xml b/examples/ncclient/interfaces/loop/edit_config_loop_interface.xml new file mode 100644 index 000000000..9dfeeadb1 --- /dev/null +++ b/examples/ncclient/interfaces/loop/edit_config_loop_interface.xml @@ -0,0 +1,33 @@ +<!-- + ~ Copyright (c) 2019 Cisco and/or its affiliates. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at: + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<config> + <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> + <interface> + <name>loop0</name> + <type xmlns:x="http://fd.io/hc2vpp/yang/v3po">x:loopback</type> + <enabled>true</enabled> + <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> + <address> + <ip>10.0.0.1</ip> + <prefix-length>24</prefix-length> + </address> + </ipv4> + <loopback xmlns="http://fd.io/hc2vpp/yang/v3po"> + </loopback> + </interface> + </interfaces> +</config> diff --git a/examples/ncclient/interfaces/loop/test_diff_loopback.sh b/examples/ncclient/interfaces/loop/test_diff_loopback.sh new file mode 100755 index 000000000..fdc07ec4a --- /dev/null +++ b/examples/ncclient/interfaces/loop/test_diff_loopback.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR_NAME=$(dirname $0) + +${DIR_NAME}/../../test_diff_config.sh ${DIR_NAME}/candidate_config_loop_interface.xml diff --git a/examples/ncclient/interfaces/loop/test_edit_loopback.sh b/examples/ncclient/interfaces/loop/test_edit_loopback.sh new file mode 100755 index 000000000..757d65609 --- /dev/null +++ b/examples/ncclient/interfaces/loop/test_edit_loopback.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR_NAME=$(dirname $0) +xPath="./{urn:ietf:params:xml:ns:yang:ietf-interfaces}interfaces/\ +{urn:ietf:params:xml:ns:yang:ietf-interfaces}interface[{urn:ietf:params:xml:ns:yang:ietf-interfaces}name='loop0']" + +${DIR_NAME}/../../test_edit_config.sh ${DIR_NAME}/edit_config_loop_interface.xml ${DIR_NAME}/edit_config_loop_interface.xml ${xPath} diff --git a/examples/ncclient/interfaces/tap/candidate_config_tap_interface.xml b/examples/ncclient/interfaces/tap/candidate_config_tap_interface.xml new file mode 100644 index 000000000..7d0a5d667 --- /dev/null +++ b/examples/ncclient/interfaces/tap/candidate_config_tap_interface.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (c) 2019 Cisco and/or its affiliates. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at: + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> + <fib-table-management xmlns="http://fd.io/hc2vpp/yang/vpp-fib-table-management"> + <fib-tables> + <table> + <table-id>0</table-id> + <address-family>ipv4</address-family> + <name>ipv4-VRF:0</name> + </table> + <table> + <table-id>0</table-id> + <address-family>ipv6</address-family> + <name>ipv6-VRF:0</name> + </table> + </fib-tables> + </fib-table-management> + <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> + <interface> + <name>local0</name> + <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type> + <enabled>false</enabled> + </interface> + <interface> + <name>tap1</name> + <description>TAP 1 test interface</description> + <tap xmlns="http://fd.io/hc2vpp/yang/v3po"> + <tap-name>tap1</tap-name> + </tap> + <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> + <address> + <ip>10.1.0.3</ip> + <prefix-length>24</prefix-length> + </address> + </ipv4> + <type xmlns:x="http://fd.io/hc2vpp/yang/v3po">x:tap</type> + </interface> + </interfaces> + <nat xmlns="urn:ietf:params:xml:ns:yang:ietf-nat"> + <instances> + <instance> + <id>0</id> + <policy> + <id>0</id> + </policy> + </instance> + </instances> + </nat> + <gpe xmlns="http://fd.io/hc2vpp/yang/gpe"> + <gpe-feature-data> + <enable>false</enable> + </gpe-feature-data> + </gpe> + <native-forward-paths-tables xmlns="http://fd.io/hc2vpp/yang/gpe"> + <native-forward-paths-table> + <table-id>0</table-id> + </native-forward-paths-table> + </native-forward-paths-tables> + <lisp xmlns="http://fd.io/hc2vpp/yang/lisp"> + <enable>false</enable> + </lisp> +</data> diff --git a/examples/ncclient/interfaces/tap/edit_config_tap_interface.xml b/examples/ncclient/interfaces/tap/edit_config_tap_interface.xml new file mode 100644 index 000000000..4f03ef262 --- /dev/null +++ b/examples/ncclient/interfaces/tap/edit_config_tap_interface.xml @@ -0,0 +1,34 @@ +<!-- + ~ Copyright (c) 2019 Cisco and/or its affiliates. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at: + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<config> + <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> + <interface> + <name>tap1</name> + <description>TAP 1 test interface</description> + <tap xmlns="http://fd.io/hc2vpp/yang/v3po"> + <tap-name>tap1</tap-name> + </tap> + <type xmlns:x="http://fd.io/hc2vpp/yang/v3po">x:tap</type> + <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> + <address> + <ip>10.1.0.3</ip> + <prefix-length>24</prefix-length> + </address> + </ipv4> + </interface> + </interfaces> +</config> diff --git a/examples/ncclient/interfaces/tap/test_diff_tap.sh b/examples/ncclient/interfaces/tap/test_diff_tap.sh new file mode 100755 index 000000000..6da56f6b1 --- /dev/null +++ b/examples/ncclient/interfaces/tap/test_diff_tap.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR_NAME=$(dirname $0) + +${DIR_NAME}/../../test_diff_config.sh ${DIR_NAME}/candidate_config_tap_interface.xml diff --git a/examples/ncclient/interfaces/tap/test_edit_tap.sh b/examples/ncclient/interfaces/tap/test_edit_tap.sh new file mode 100755 index 000000000..1a752cbf5 --- /dev/null +++ b/examples/ncclient/interfaces/tap/test_edit_tap.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR_NAME=$(dirname $0) +xPath="./{urn:ietf:params:xml:ns:yang:ietf-interfaces}interfaces/\ +{urn:ietf:params:xml:ns:yang:ietf-interfaces}interface[{urn:ietf:params:xml:ns:yang:ietf-interfaces}name='tap1']" + +${DIR_NAME}/../../test_edit_config.sh ${DIR_NAME}/edit_config_tap_interface.xml ${DIR_NAME}/edit_config_tap_interface.xml ${xPath} |