cisco_node_utils 1.4.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/README.md +8 -7
- data/docs/README-maintainers.md +0 -1
- data/lib/cisco_node_utils/aaa_authentication_login_service.rb +2 -2
- data/lib/cisco_node_utils/bgp.rb +2 -2
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +16 -0
- data/lib/cisco_node_utils/client/utils.rb +7 -1
- data/lib/cisco_node_utils/cmd_ref/DEPRECATED.yaml +12 -12
- data/lib/cisco_node_utils/cmd_ref/README_YAML.md +35 -7
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +4 -4
- data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +5 -5
- data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +5 -5
- data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +8 -3
- data/lib/cisco_node_utils/cmd_ref/hsrp_global.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +65 -14
- data/lib/cisco_node_utils/cmd_ref/interface_hsrp_group.yaml +117 -0
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/inventory.yaml +4 -8
- data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/pim.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +9 -9
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +8 -8
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +16 -8
- data/lib/cisco_node_utils/cmd_ref/vpc.yaml +11 -11
- data/lib/cisco_node_utils/cmd_ref/vrf.yaml +2 -1
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +1 -1
- data/lib/cisco_node_utils/command_reference.rb +8 -1
- data/lib/cisco_node_utils/domain_name.rb +17 -2
- data/lib/cisco_node_utils/feature.rb +14 -0
- data/lib/cisco_node_utils/hsrp_global.rb +97 -0
- data/lib/cisco_node_utils/interface.rb +146 -0
- data/lib/cisco_node_utils/interface_hsrp_group.rb +544 -0
- data/lib/cisco_node_utils/node.rb +93 -4
- data/lib/cisco_node_utils/pim.rb +17 -0
- data/lib/cisco_node_utils/portchannel_global.rb +2 -2
- data/lib/cisco_node_utils/version.rb +1 -1
- data/lib/cisco_node_utils/vlan.rb +2 -5
- data/lib/cisco_node_utils/yum.rb +11 -6
- data/spec/schema.yaml +3 -3
- data/tests/ciscotest.rb +25 -4
- data/tests/cmd_config.yaml +0 -2
- data/tests/test_bgp_af.rb +13 -2
- data/tests/test_feature.rb +5 -0
- data/tests/test_hsrp_global.rb +79 -0
- data/tests/test_interface.rb +23 -0
- data/tests/test_interface_hsrp.rb +134 -0
- data/tests/test_interface_hsrp_group.rb +582 -0
- data/tests/test_node_ext.rb +7 -1
- data/tests/test_pim.rb +27 -3
- data/tests/test_platform.rb +1 -1
- data/tests/test_radius_global.rb +4 -5
- data/tests/test_radius_server.rb +16 -11
- data/tests/test_router_bgp.rb +11 -6
- data/tests/test_router_ospf_area.rb +6 -6
- data/tests/test_tacacs_server.rb +2 -2
- data/tests/test_tacacs_server_host.rb +2 -2
- data/tests/test_vlan.rb +14 -0
- data/tests/test_yum.rb +2 -2
- data/tests/yum_package.yaml +4 -0
- metadata +10 -3
@@ -21,6 +21,12 @@ all_ssm_ranges:
|
|
21
21
|
multiple:
|
22
22
|
get_value : '/^<afi> pim ssm range (.*)$/'
|
23
23
|
|
24
|
+
bfd:
|
25
|
+
kind: boolean
|
26
|
+
get_value: '/^<afi> pim bfd$/'
|
27
|
+
set_value: "<state> <afi> pim bfd"
|
28
|
+
default_value: false
|
29
|
+
|
24
30
|
group_list:
|
25
31
|
default_value: ~
|
26
32
|
get_value: '/^<afi> pim rp-address (\S+) group-list (\S+)/'
|
@@ -6,7 +6,7 @@ _template:
|
|
6
6
|
get_command: "show running all"
|
7
7
|
|
8
8
|
asymmetric:
|
9
|
-
_exclude: [N3k, N5k, N6k,
|
9
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
10
10
|
default_value: false
|
11
11
|
|
12
12
|
bundle_hash:
|
@@ -15,7 +15,7 @@ bundle_hash:
|
|
15
15
|
N5k: *bundle_hash_ip
|
16
16
|
N6k: *bundle_hash_ip
|
17
17
|
N7k: *bundle_hash_ip
|
18
|
-
|
18
|
+
N9k-F: &bundle_hash_ip_l4port
|
19
19
|
default_value: 'ip-l4port'
|
20
20
|
N9k: *bundle_hash_ip_l4port
|
21
21
|
|
@@ -23,18 +23,18 @@ bundle_select:
|
|
23
23
|
default_value: 'src-dst'
|
24
24
|
|
25
25
|
concatenation:
|
26
|
-
_exclude: [N3k, N5k, N6k, N7k,
|
26
|
+
_exclude: [N3k, N5k, N6k, N7k, N9k-F]
|
27
27
|
default_value: false
|
28
28
|
|
29
29
|
hash_distribution:
|
30
|
-
_exclude: [N3k, N5k, N6k,
|
30
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
31
31
|
get_value: '/^port.channel hash.distribution (.*)$/'
|
32
32
|
set_context: ['terminal dont-ask']
|
33
33
|
set_value: "port-channel hash-distribution %s"
|
34
34
|
default_value: 'adaptive'
|
35
35
|
|
36
36
|
hash_poly:
|
37
|
-
_exclude: [N3k, N7k,
|
37
|
+
_exclude: [N3k, N7k, N9k-F, N9k]
|
38
38
|
default_value: ~
|
39
39
|
|
40
40
|
load_balance_type:
|
@@ -46,13 +46,13 @@ load_balance_type:
|
|
46
46
|
N6k: *load_balance_type_ethernet
|
47
47
|
N7k: &load_balance_type_asymmetric
|
48
48
|
default_only: "asymmetric"
|
49
|
-
|
49
|
+
N9k-F: &load_balance_type_no_hash
|
50
50
|
default_only: "no_hash"
|
51
51
|
N9k: &load_balance_type_symmetry
|
52
52
|
default_only: "symmetry"
|
53
53
|
|
54
54
|
load_defer:
|
55
|
-
_exclude: [N3k, N5k, N6k,
|
55
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
56
56
|
kind: int
|
57
57
|
get_value: '/^port.channel load.defer (\d+)$/'
|
58
58
|
set_value: "port-channel load-defer %s"
|
@@ -64,7 +64,7 @@ port_channel_load_balance:
|
|
64
64
|
set_value: "port-channel load-balance %s %s %s %s %s %s"
|
65
65
|
|
66
66
|
resilient:
|
67
|
-
_exclude: [N5k, N6k, N7k,
|
67
|
+
_exclude: [N5k, N6k, N7k, N9k-F]
|
68
68
|
kind: boolean
|
69
69
|
get_value: '/^port-channel load-balance resilient$/'
|
70
70
|
set_value: "%s port-channel load-balance resilient"
|
@@ -80,5 +80,5 @@ rotate:
|
|
80
80
|
default_value: 0
|
81
81
|
|
82
82
|
symmetry:
|
83
|
-
_exclude: [N5k, N6k, N7k,
|
83
|
+
_exclude: [N5k, N6k, N7k, N9k-F]
|
84
84
|
default_value: false
|
@@ -7,7 +7,7 @@ _template:
|
|
7
7
|
get_command: "show running-config spanning-tree"
|
8
8
|
|
9
9
|
bd_designated_priority:
|
10
|
-
_exclude: [N3k, N5k, N6k,
|
10
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
11
11
|
multiple:
|
12
12
|
get_context: ['/^spanning-tree pseudo-information$/']
|
13
13
|
get_value: '/^bridge-domain (.*) designated priority (.*)$/'
|
@@ -16,40 +16,40 @@ bd_designated_priority:
|
|
16
16
|
default_value: []
|
17
17
|
|
18
18
|
bd_forward_time:
|
19
|
-
_exclude: [N3k, N5k, N6k,
|
19
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
20
20
|
multiple:
|
21
21
|
get_value: '/^spanning-tree bridge-domain (.*) forward-time (.*)$/'
|
22
22
|
set_value: "<state> spanning-tree bridge-domain <range> forward-time <val>"
|
23
23
|
default_value: []
|
24
24
|
|
25
25
|
bd_hello_time:
|
26
|
-
_exclude: [N3k, N5k, N6k,
|
26
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
27
27
|
multiple:
|
28
28
|
get_value: '/^spanning-tree bridge-domain (.*) hello-time (.*)$/'
|
29
29
|
set_value: "<state> spanning-tree bridge-domain <range> hello-time <val>"
|
30
30
|
default_value: []
|
31
31
|
|
32
32
|
bd_max_age:
|
33
|
-
_exclude: [N3k, N5k, N6k,
|
33
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
34
34
|
multiple:
|
35
35
|
get_value: '/^spanning-tree bridge-domain (.*) max-age (.*)$/'
|
36
36
|
set_value: "<state> spanning-tree bridge-domain <range> max-age <val>"
|
37
37
|
default_value: []
|
38
38
|
|
39
39
|
bd_priority:
|
40
|
-
_exclude: [N3k, N5k, N6k,
|
40
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
41
41
|
multiple:
|
42
42
|
get_value: '/^spanning-tree bridge-domain (.*) priority (.*)$/'
|
43
43
|
set_value: "<state> spanning-tree bridge-domain <range> priority <val>"
|
44
44
|
default_value: []
|
45
45
|
|
46
46
|
bd_range:
|
47
|
-
_exclude: [N3k, N5k, N6k,
|
47
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
48
48
|
kind: string
|
49
49
|
default_only: "2-3967"
|
50
50
|
|
51
51
|
bd_root_priority:
|
52
|
-
_exclude: [N3k, N5k, N6k,
|
52
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
53
53
|
multiple:
|
54
54
|
get_context: ['/^spanning-tree pseudo-information$/']
|
55
55
|
get_value: '/^bridge-domain (.*) root priority (.*)$/'
|
@@ -78,7 +78,7 @@ bridge_assurance:
|
|
78
78
|
default_value: true
|
79
79
|
|
80
80
|
domain:
|
81
|
-
_exclude: [N3k,
|
81
|
+
_exclude: [N3k, N9k-F, N9k]
|
82
82
|
kind: int
|
83
83
|
get_value: '/^spanning-tree domain (\d+)$/'
|
84
84
|
set_value: "<state> spanning-tree domain <domain>"
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# The current simplified implementation assumes no admin-vdc and that the
|
4
4
|
# default vdc name uses id 1. Full multi-vdc support is TBD.
|
5
5
|
---
|
6
|
-
_exclude: [N3k, N5k, N6k,
|
6
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k, ios_xr]
|
7
7
|
|
8
8
|
_template:
|
9
9
|
get_command: 'show run vdc all'
|
@@ -4,8 +4,10 @@ _exclude: [ios_xr]
|
|
4
4
|
|
5
5
|
all_vlans:
|
6
6
|
multiple: true
|
7
|
+
get_data_format: nxapi_structured
|
7
8
|
get_command: "show vlan brief"
|
8
|
-
|
9
|
+
get_context: ["TABLE_vlanbriefxbrief", "ROW_vlanbriefxbrief"]
|
10
|
+
get_value: "vlanshowbr-vlanid-utf"
|
9
11
|
|
10
12
|
create:
|
11
13
|
set_value: "vlan %s"
|
@@ -14,7 +16,7 @@ destroy:
|
|
14
16
|
set_value: "no vlan %s"
|
15
17
|
|
16
18
|
fabric_control:
|
17
|
-
_exclude: [N3k, N5k, N6k,
|
19
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
18
20
|
kind: boolean
|
19
21
|
get_command: "show running-config vlan"
|
20
22
|
get_context: ['/^vlan <vlan>/']
|
@@ -27,7 +29,7 @@ mapped_vni:
|
|
27
29
|
_exclude: [N7k]
|
28
30
|
N3k: &mapped_vni_n3_8_9k
|
29
31
|
get_command: 'show running vlan'
|
30
|
-
|
32
|
+
N9k-F: *mapped_vni_n3_8_9k
|
31
33
|
N9k: *mapped_vni_n3_8_9k
|
32
34
|
N5k: &mapped_vni_n5_6k
|
33
35
|
get_command: 'show running vlan 1-4094'
|
@@ -48,7 +50,7 @@ mapped_vni_requires_nv_overlay:
|
|
48
50
|
default_only: false
|
49
51
|
|
50
52
|
mode:
|
51
|
-
_exclude: [N3k, N9k]
|
53
|
+
_exclude: [N3k, N9k, N9k-F]
|
52
54
|
multiple: true
|
53
55
|
get_command: "show vlan"
|
54
56
|
# TBD: 'show vlan' is problematic and should be converted to use show run
|
@@ -59,13 +61,16 @@ mode:
|
|
59
61
|
default_value: 'CE'
|
60
62
|
|
61
63
|
name:
|
64
|
+
kind: string
|
65
|
+
get_data_format: nxapi_structured
|
62
66
|
get_command: "show vlan brief"
|
63
|
-
|
67
|
+
get_context: ["TABLE_vlanbriefxbrief", "ROW_vlanbriefxbrief"]
|
68
|
+
get_value: ["vlanshowbr-vlanid-utf <vlanid>", "vlanshowbr-vlanname"]
|
64
69
|
set_context: ["vlan %d"]
|
65
70
|
set_value: "%s name %s ; end"
|
66
71
|
|
67
72
|
pvlan_association:
|
68
|
-
_exclude: [
|
73
|
+
_exclude: [N9k-F]
|
69
74
|
multiple: true
|
70
75
|
get_command: "show vlan private-vlan"
|
71
76
|
get_value: '/^<id>\s+(\d+)/'
|
@@ -74,7 +79,7 @@ pvlan_association:
|
|
74
79
|
default_value: []
|
75
80
|
|
76
81
|
pvlan_type:
|
77
|
-
_exclude: [
|
82
|
+
_exclude: [N9k-F]
|
78
83
|
kind: string
|
79
84
|
get_command: 'show vlan private-vlan type'
|
80
85
|
get_value: '/^<id>\s+(\S+)/'
|
@@ -83,8 +88,11 @@ pvlan_type:
|
|
83
88
|
default_value: ""
|
84
89
|
|
85
90
|
shutdown:
|
91
|
+
kind: boolean
|
92
|
+
get_data_format: nxapi_structured
|
86
93
|
get_command: "show vlan brief"
|
87
|
-
|
94
|
+
get_context: ["TABLE_vlanbriefxbrief", "ROW_vlanbriefxbrief"]
|
95
|
+
get_value: ["vlanshowbr-vlanid-utf <vlanid>", "vlanshowbr-shutstate", '/^shutdown$/']
|
88
96
|
set_context: ["vlan %d"]
|
89
97
|
set_value: "%s shutdown ; end"
|
90
98
|
default_value: false
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# vpc
|
2
2
|
---
|
3
|
-
_exclude: [ios_xr,
|
3
|
+
_exclude: [ios_xr, N9k-F]
|
4
4
|
|
5
5
|
_template:
|
6
6
|
get_command: 'show running-config vpc all'
|
@@ -58,7 +58,7 @@ dual_active_exclude_interface_vlan_bridge_domain:
|
|
58
58
|
default_value: 'none'
|
59
59
|
|
60
60
|
fabricpath_emulated_switch_id:
|
61
|
-
_exclude: [N3k, N5k, N6k,
|
61
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
62
62
|
kind: int
|
63
63
|
set_context: ['terminal dont-ask', 'vpc domain <domain>']
|
64
64
|
get_value: '/^fabricpath switch-id\s+(\d+)$/'
|
@@ -66,7 +66,7 @@ fabricpath_emulated_switch_id:
|
|
66
66
|
default_value: false
|
67
67
|
|
68
68
|
fabricpath_multicast_load_balance:
|
69
|
-
_exclude: [N3k, N5k, N6k,
|
69
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
70
70
|
kind: boolean
|
71
71
|
get_value: '/^fabricpath multicast load-balance$/'
|
72
72
|
set_value: "<state> fabricpath multicast load-balance"
|
@@ -90,7 +90,7 @@ graceful_consistency_check:
|
|
90
90
|
|
91
91
|
layer3_peer_routing:
|
92
92
|
kind: boolean
|
93
|
-
_exclude: [N3k,
|
93
|
+
_exclude: [N3k, N9k-F, N9k]
|
94
94
|
get_value: '/^layer3 peer-router$/'
|
95
95
|
set_value: "<state> layer3 peer-router"
|
96
96
|
default_value: false
|
@@ -105,14 +105,14 @@ peer_gateway:
|
|
105
105
|
# Exclude everyone for now till the BD command is fully supported
|
106
106
|
peer_gateway_exclude_bridge_domain:
|
107
107
|
kind: string
|
108
|
-
_exclude: [N3k, N5k, N6k, N7k,
|
108
|
+
_exclude: [N3k, N5k, N6k, N7k, N9k-F, N9k]
|
109
109
|
set_context: ['terminal dont-ask', 'vpc domain <domain>']
|
110
110
|
get_value: '/^peer-gateway exclude bridge-domain\s+(\S+)/'
|
111
111
|
set_value: "peer-gateway exclude-bridge-domain <range>"
|
112
112
|
default_value: ''
|
113
113
|
|
114
114
|
peer_gateway_exclude_vlan:
|
115
|
-
_exclude: [N3k,
|
115
|
+
_exclude: [N3k, N9k-F, N9k]
|
116
116
|
kind: string
|
117
117
|
set_context: ['terminal dont-ask', 'vpc domain <domain>']
|
118
118
|
get_value: '/^peer-gateway exclude-vlan\s(\S+)/'
|
@@ -161,11 +161,11 @@ peer_keepalive_vrf:
|
|
161
161
|
default_value: 'management'
|
162
162
|
|
163
163
|
phy_port_vpc_module_pids:
|
164
|
-
_exclude: [N3k, N5k, N6k,
|
164
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
165
165
|
default_only: 'N7[K7]-(?:F2|F3|F4|M3)'
|
166
166
|
|
167
167
|
port_channel_limit:
|
168
|
-
_exclude: [N3k, N5k, N6k,
|
168
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
169
169
|
auto_default: false
|
170
170
|
kind: boolean
|
171
171
|
get_value: '/^port-channel limit/'
|
@@ -180,14 +180,14 @@ role_priority:
|
|
180
180
|
|
181
181
|
self_isolation:
|
182
182
|
kind: boolean
|
183
|
-
_exclude: [N3k, N5k, N6k,
|
183
|
+
_exclude: [N3k, N5k, N6k, N9k-F, N9k]
|
184
184
|
get_value: '/^self-isolation/'
|
185
185
|
set_value: "<state> self-isolation"
|
186
186
|
default_value: false
|
187
187
|
|
188
188
|
shutdown:
|
189
189
|
kind: boolean
|
190
|
-
_exclude: [N3k,
|
190
|
+
_exclude: [N3k, N9k-F, N9k]
|
191
191
|
get_value: '/^shutdown/'
|
192
192
|
set_value: "<state> shutdown"
|
193
193
|
default_value: false
|
@@ -207,7 +207,7 @@ system_priority:
|
|
207
207
|
# Exclude everyone for now till the track command is fully supported
|
208
208
|
track:
|
209
209
|
kind: int
|
210
|
-
_exclude: [N3k, N5k, N6k, N7k,
|
210
|
+
_exclude: [N3k, N5k, N6k, N7k, N9k-F, N9k]
|
211
211
|
get_value: '/^track\s+(\d+)/'
|
212
212
|
set_value: "<state> track <val>"
|
213
213
|
default_value: 0
|
@@ -70,11 +70,12 @@ shutdown:
|
|
70
70
|
|
71
71
|
vni: # TBD Should this move to the vni provider as vrf_vni?
|
72
72
|
# MT-lite only
|
73
|
-
N9k:
|
73
|
+
N9k: &vni9k
|
74
74
|
kind: int
|
75
75
|
get_value: '/^vni (\d+)$/'
|
76
76
|
set_value: '<state> vni <id>'
|
77
77
|
default_value: false
|
78
|
+
N9k-F: *vni9k
|
78
79
|
|
79
80
|
vpn_id:
|
80
81
|
_exclude: [nexus]
|
@@ -434,13 +434,20 @@ module Cisco
|
|
434
434
|
puts "DEBUG: #{text}" if @@debug
|
435
435
|
end
|
436
436
|
|
437
|
-
KNOWN_PLATFORMS = %w(C3064 C3132 C3172 N3k N5k N6k N7k
|
437
|
+
KNOWN_PLATFORMS = %w(C3064 C3132 C3172 N3k N5k N6k N7k N9k N9k-F XRv9k)
|
438
438
|
|
439
439
|
def self.platform_to_filter(platform)
|
440
440
|
if KNOWN_PLATFORMS.include?(platform)
|
441
441
|
case platform
|
442
442
|
when 'XRv9k'
|
443
443
|
/XRV9/
|
444
|
+
when 'N9k'
|
445
|
+
# For non-fretta n9k platforms we need to
|
446
|
+
# match everything except the trailing -F
|
447
|
+
/^N9...(?!.*-F)/
|
448
|
+
when 'N9k-F'
|
449
|
+
# For fretta n9k we need to include the trailing -F
|
450
|
+
/^N9.*-F$/
|
444
451
|
else
|
445
452
|
Regexp.new platform.tr('k', '')
|
446
453
|
end
|
@@ -49,8 +49,23 @@ module Cisco
|
|
49
49
|
config_set('dnsclient', 'domain_name',
|
50
50
|
state: '', name: @name)
|
51
51
|
else
|
52
|
-
|
53
|
-
|
52
|
+
# On some platforms attempts to create a new domain results
|
53
|
+
# in the error. 'ERROR: Deletion of VRF test in progresswait
|
54
|
+
# for it to complete'. We handle this by trying up to 10 times
|
55
|
+
# with a 1 second delay between attempts before giving up.
|
56
|
+
tries = 10
|
57
|
+
begin
|
58
|
+
config_set('dnsclient', 'domain_name_vrf',
|
59
|
+
state: '', name: @name, vrf: @vrf)
|
60
|
+
rescue Cisco::CliError => e
|
61
|
+
if /ERROR: Deletion of VRF .* in progress/.match(e.to_s)
|
62
|
+
sleep 1
|
63
|
+
tries -= 1
|
64
|
+
# rubocop:disable Metrics/BlockNesting
|
65
|
+
retry if tries > 0
|
66
|
+
# rubocop:enable Metrics/BlockNesting
|
67
|
+
end
|
68
|
+
end
|
54
69
|
end
|
55
70
|
end
|
56
71
|
|