From 498be1107120dd7a9a8df5443b74689fbe95f61a Mon Sep 17 00:00:00 2001 From: Michal Cmarada Date: Wed, 23 Jan 2019 11:41:26 +0100 Subject: 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 --- .../candidate_config_af_packet_interface.xml | 86 ++++++++++++++++++++++ .../af-packet/edit_config_af_packet_interface.xml | 34 +++++++++ .../interfaces/af-packet/test_diff_af_packet.sh | 18 +++++ .../interfaces/af-packet/test_edit_af_packet.sh | 23 ++++++ .../loop/candidate_config_loop_interface.xml | 61 +++++++++++++++ .../interfaces/loop/edit_config_loop_interface.xml | 33 +++++++++ .../ncclient/interfaces/loop/test_diff_loopback.sh | 18 +++++ .../ncclient/interfaces/loop/test_edit_loopback.sh | 20 +++++ .../tap/candidate_config_tap_interface.xml | 77 +++++++++++++++++++ .../interfaces/tap/edit_config_tap_interface.xml | 34 +++++++++ examples/ncclient/interfaces/tap/test_diff_tap.sh | 18 +++++ examples/ncclient/interfaces/tap/test_edit_tap.sh | 20 +++++ 12 files changed, 442 insertions(+) create mode 100644 examples/ncclient/interfaces/af-packet/candidate_config_af_packet_interface.xml create mode 100644 examples/ncclient/interfaces/af-packet/edit_config_af_packet_interface.xml create mode 100755 examples/ncclient/interfaces/af-packet/test_diff_af_packet.sh create mode 100755 examples/ncclient/interfaces/af-packet/test_edit_af_packet.sh create mode 100644 examples/ncclient/interfaces/loop/candidate_config_loop_interface.xml create mode 100644 examples/ncclient/interfaces/loop/edit_config_loop_interface.xml create mode 100755 examples/ncclient/interfaces/loop/test_diff_loopback.sh create mode 100755 examples/ncclient/interfaces/loop/test_edit_loopback.sh create mode 100644 examples/ncclient/interfaces/tap/candidate_config_tap_interface.xml create mode 100644 examples/ncclient/interfaces/tap/edit_config_tap_interface.xml create mode 100755 examples/ncclient/interfaces/tap/test_diff_tap.sh create mode 100755 examples/ncclient/interfaces/tap/test_edit_tap.sh (limited to 'examples/ncclient/interfaces') 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 @@ + + + + + + + + 0 + + 0 + + + + + + + + 0 + ipv4 + ipv4-VRF:0 +
+ + 0 + ipv6 + ipv6-VRF:0 +
+
+
+ + + local0 + x:ethernetCsmacd + false + + + GigabitEthernet0/9/0 + x:ethernetCsmacd + false + + 9206 + + + + host-vethAF + VethAF host interface + + vethAF + + +
+ 10.2.0.2 + 24 +
+
+ x:af-packet +
+
+ + + false + + + + + 0 + + + + false + +
+ 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 @@ + + + + + + host-vethAF + VethAF host interface + + vethAF + + x:af-packet + +
+ 10.2.0.2 + 24 +
+
+
+
+
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 @@ + + + + + + 0 + ipv4 + ipv4-VRF:0 +
+ + 0 + ipv6 + ipv6-VRF:0 +
+
+
+ + + local0 + x:ethernetCsmacd + false + + + loop0 + x:loopback + true + +
+ 10.0.0.1 + 24 +
+
+ + +
+
+ + + + 0 + + 0 + + + + + + + false + + + + + 0 + + + + false + +
+ 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 @@ + + + + + + loop0 + x:loopback + true + +
+ 10.0.0.1 + 24 +
+
+ + +
+
+
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 @@ + + + + + + + + 0 + ipv4 + ipv4-VRF:0 +
+ + 0 + ipv6 + ipv6-VRF:0 +
+
+
+ + + local0 + x:ethernetCsmacd + false + + + tap1 + TAP 1 test interface + + tap1 + + +
+ 10.1.0.3 + 24 +
+
+ x:tap +
+
+ + + + 0 + + 0 + + + + + + + false + + + + + 0 + + + + false + +
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 @@ + + + + + + tap1 + TAP 1 test interface + + tap1 + + x:tap + +
+ 10.1.0.3 + 24 +
+
+
+
+
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} -- cgit 1.2.3-korg