cisco_node_utils 1.4.1 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/tests/test_node_ext.rb
CHANGED
@@ -141,9 +141,15 @@ class TestNodeExt < CiscoTestCase
|
|
141
141
|
end
|
142
142
|
|
143
143
|
def test_get_product_id
|
144
|
+
# N9K Fretta product_id gets a '-F' appended so remove it for this check
|
145
|
+
if Utils.image_version?(/7.0.3.F/)
|
146
|
+
chassis = node.product_id.sub('-F', '')
|
147
|
+
else
|
148
|
+
chassis = node.product_id
|
149
|
+
end
|
144
150
|
assert_output_check(command: 'show inventory',
|
145
151
|
pattern: /NAME: \"#{@chassis}\".*\nPID: (\S+)/,
|
146
|
-
check:
|
152
|
+
check: chassis,
|
147
153
|
msg: 'Error, Product id does not match')
|
148
154
|
end
|
149
155
|
|
data/tests/test_pim.rb
CHANGED
@@ -77,6 +77,8 @@ class TestPim < CiscoTestCase
|
|
77
77
|
p1 = Pim.new(afi, 'default')
|
78
78
|
p1.ssm_range = (range)
|
79
79
|
assert_equal(p1.ssm_range.split.sort.join(' '), range.split.sort.join(' '))
|
80
|
+
p1.ssm_range = 'none'
|
81
|
+
assert_equal('none', p1.ssm_range)
|
80
82
|
end
|
81
83
|
|
82
84
|
# Tests single ssm range none under default vrf
|
@@ -94,6 +96,8 @@ class TestPim < CiscoTestCase
|
|
94
96
|
p1 = Pim.new(afi, 'default')
|
95
97
|
p1.ssm_range = (range)
|
96
98
|
assert_equal(p1.ssm_range.split.sort.join(' '), range.split.sort.join(' '))
|
99
|
+
p1.ssm_range = 'none'
|
100
|
+
assert_equal('none', p1.ssm_range)
|
97
101
|
end
|
98
102
|
|
99
103
|
# Tests single ssm range none under default vrf
|
@@ -119,6 +123,10 @@ class TestPim < CiscoTestCase
|
|
119
123
|
assert_equal(p1.ssm_range.split.sort.join(' '), range1.split.sort.join(' '))
|
120
124
|
assert_equal(p2.ssm_range.split.sort.join(' '), range2.split.sort.join(' '))
|
121
125
|
assert_equal(p3.ssm_range.split.sort.join(' '), range3.split.sort.join(' '))
|
126
|
+
p1.ssm_range = 'none'
|
127
|
+
assert_equal('none', p1.ssm_range)
|
128
|
+
p2.ssm_range = 'none'
|
129
|
+
assert_equal('none', p2.ssm_range)
|
122
130
|
end
|
123
131
|
|
124
132
|
# Tests multiple ssm ranges under different vrfs
|
@@ -144,11 +152,10 @@ class TestPim < CiscoTestCase
|
|
144
152
|
p2.ssm_range = (range3)
|
145
153
|
assert_equal(p2.ssm_range.split.sort.join(' '), range3.split.sort.join(' '))
|
146
154
|
|
155
|
+
p1.ssm_range = 'none'
|
156
|
+
assert_equal('none', p1.ssm_range)
|
147
157
|
p1.destroy
|
148
|
-
assert('none', p1.ssm_range)
|
149
|
-
|
150
158
|
p2.destroy
|
151
|
-
assert('none', p2.ssm_range)
|
152
159
|
end
|
153
160
|
|
154
161
|
# Tests multiple ssm ranges overwrite under different vrfs
|
@@ -176,4 +183,21 @@ class TestPim < CiscoTestCase
|
|
176
183
|
create_single_invalid_ssm_range_single_vrf(afi)
|
177
184
|
end
|
178
185
|
end
|
186
|
+
|
187
|
+
def test_bfd
|
188
|
+
%w(ipv4).each do |afi|
|
189
|
+
p1 = Pim.new(afi, 'default')
|
190
|
+
p2 = Pim.new(afi, 'red')
|
191
|
+
assert_equal(p1.default_bfd, p1.bfd)
|
192
|
+
assert_equal(p2.default_bfd, p1.bfd)
|
193
|
+
p1.bfd = true
|
194
|
+
p2.bfd = true
|
195
|
+
assert_equal(true, p1.bfd)
|
196
|
+
assert_equal(true, p2.bfd)
|
197
|
+
p1.bfd = p1.default_bfd
|
198
|
+
p2.bfd = p2.default_bfd
|
199
|
+
assert_equal(p1.default_bfd, p1.bfd)
|
200
|
+
assert_equal(p2.default_bfd, p1.bfd)
|
201
|
+
end
|
202
|
+
end
|
179
203
|
end
|
data/tests/test_platform.rb
CHANGED
@@ -51,7 +51,7 @@ class TestPlatform < CiscoTestCase
|
|
51
51
|
# [['pack1', 'state1'], ['pack2', 'state2'], ...]
|
52
52
|
# 'state' should always be a variant of Active or Inactive
|
53
53
|
pkgs = @device.cmd('sh inst patch')
|
54
|
-
.scan(/\n(\S+)\s+(\S*[aA]ctive.*)
|
54
|
+
.scan(/\n(\S+)\s+(\S*[aA]ctive.*)/)
|
55
55
|
# convert to hash with key pkg_name and value pkg_state
|
56
56
|
pkg_hsh = {}
|
57
57
|
pkgs.each { |p| pkg_hsh[p[0]] = p[1].downcase }
|
data/tests/test_radius_global.rb
CHANGED
@@ -66,11 +66,10 @@ class TestRadiusGlobal < CiscoTestCase
|
|
66
66
|
2)
|
67
67
|
|
68
68
|
if platform == :nexus
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
assert_equal(Cisco::RadiusGlobal.radius_global[id].key
|
73
|
-
'44444444')
|
69
|
+
key = '44444444'
|
70
|
+
global.key_set(key, nil)
|
71
|
+
assert_equal(Utils.add_quotes(key), global.key)
|
72
|
+
assert_equal(Utils.add_quotes(key), Cisco::RadiusGlobal.radius_global[id].key)
|
74
73
|
elsif platform == :ios_xr
|
75
74
|
global.key_set('QsEfThUkO', nil)
|
76
75
|
assert(!global.key.nil?)
|
data/tests/test_radius_server.rb
CHANGED
@@ -96,8 +96,9 @@ class TestRadiusSvr < CiscoTestCase
|
|
96
96
|
server.key_set(nil, nil)
|
97
97
|
assert_equal(nil, Cisco::RadiusServer.radiusservers[id].key)
|
98
98
|
|
99
|
-
|
100
|
-
|
99
|
+
key = '44444444'
|
100
|
+
server.key_set(key, nil)
|
101
|
+
assert_equal(Utils.add_quotes(key), Cisco::RadiusServer.radiusservers[id].key)
|
101
102
|
else
|
102
103
|
assert_nil(server.accounting)
|
103
104
|
assert_raises(Cisco::UnsupportedError) do
|
@@ -159,8 +160,9 @@ class TestRadiusSvr < CiscoTestCase
|
|
159
160
|
server.auth_port = 77
|
160
161
|
assert_equal(77, Cisco::RadiusServer.radiusservers[id].auth_port)
|
161
162
|
|
162
|
-
|
163
|
-
|
163
|
+
key = '44444444'
|
164
|
+
server.key_set(key, nil)
|
165
|
+
assert_equal(Utils.add_quotes(key), Cisco::RadiusServer.radiusservers[id].key)
|
164
166
|
else
|
165
167
|
assert_nil(server.accounting)
|
166
168
|
assert_raises(Cisco::UnsupportedError) do
|
@@ -223,8 +225,9 @@ class TestRadiusSvr < CiscoTestCase
|
|
223
225
|
server.auth_port = 77
|
224
226
|
assert_equal(77, Cisco::RadiusServer.radiusservers[id].auth_port)
|
225
227
|
|
226
|
-
|
227
|
-
|
228
|
+
key = '44444444'
|
229
|
+
server.key_set(key, nil)
|
230
|
+
assert_equal(Utils.add_quotes(key), Cisco::RadiusServer.radiusservers[id].key)
|
228
231
|
else
|
229
232
|
assert_nil(server.accounting)
|
230
233
|
assert_raises(Cisco::UnsupportedError) do
|
@@ -293,9 +296,10 @@ class TestRadiusSvr < CiscoTestCase
|
|
293
296
|
server.auth_port = 77
|
294
297
|
assert_equal(77, Cisco::RadiusServer.radiusservers[id].auth_port)
|
295
298
|
|
296
|
-
|
297
|
-
|
298
|
-
assert_equal(
|
299
|
+
key = '44444444'
|
300
|
+
server.key_set(key, nil)
|
301
|
+
assert_equal(Utils.add_quotes(key), Cisco::RadiusServer.radiusservers[id].key)
|
302
|
+
assert_equal(Utils.add_quotes(key), server.key)
|
299
303
|
else
|
300
304
|
assert_nil(server.accounting)
|
301
305
|
assert_raises(Cisco::UnsupportedError) do
|
@@ -327,8 +331,9 @@ class TestRadiusSvr < CiscoTestCase
|
|
327
331
|
server2.auth_port = 77
|
328
332
|
assert_equal(77, Cisco::RadiusServer.radiusservers[id2].auth_port)
|
329
333
|
|
330
|
-
|
331
|
-
|
334
|
+
key = '44444444'
|
335
|
+
server2.key_set(key, nil)
|
336
|
+
assert_equal(Utils.add_quotes(key), Cisco::RadiusServer.radiusservers[id2].key)
|
332
337
|
else
|
333
338
|
assert_nil(server.accounting)
|
334
339
|
assert_raises(Cisco::UnsupportedError) do
|
data/tests/test_router_bgp.rb
CHANGED
@@ -61,9 +61,11 @@ def setup_vrf
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def newer_image_version?
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
new = true
|
65
|
+
new = false if Utils.image_version?(/7.0.3.I2|I3|I4/) ||
|
66
|
+
node.product_id[/(N5|N6|N7|N9.*-F)/]
|
67
|
+
new = true if Utils.image_version?(/8.0/)
|
68
|
+
new
|
67
69
|
end
|
68
70
|
|
69
71
|
# TestRouterBgp - Minitest for RouterBgp class
|
@@ -666,7 +668,8 @@ class TestRouterBgp < CiscoTestCase
|
|
666
668
|
bgp.event_history_errors = 'false'
|
667
669
|
assert_equal('false', bgp.event_history_errors)
|
668
670
|
bgp.event_history_errors = 'size_small'
|
669
|
-
assert_equal('size_small', bgp.event_history_errors)
|
671
|
+
assert_equal('size_small', bgp.event_history_errors) unless
|
672
|
+
Utils.image_version?(/8.0/)
|
670
673
|
bgp.event_history_errors = 'size_large'
|
671
674
|
assert_equal('size_large', bgp.event_history_errors)
|
672
675
|
bgp.event_history_errors = 'size_medium'
|
@@ -752,7 +755,8 @@ class TestRouterBgp < CiscoTestCase
|
|
752
755
|
assert_equal(bgp.default_event_history_periodic,
|
753
756
|
bgp.event_history_periodic)
|
754
757
|
bgp.event_history_periodic = 'false'
|
755
|
-
assert_equal('false', bgp.event_history_periodic)
|
758
|
+
assert_equal('false', bgp.event_history_periodic) unless
|
759
|
+
Utils.image_version?(/8.0/)
|
756
760
|
bgp.event_history_periodic = 'size_small'
|
757
761
|
assert_equal('size_small', bgp.event_history_periodic)
|
758
762
|
bgp.event_history_periodic = 'size_large'
|
@@ -770,7 +774,8 @@ class TestRouterBgp < CiscoTestCase
|
|
770
774
|
end
|
771
775
|
bgp.event_history_periodic = 'true'
|
772
776
|
if newer_image_version?
|
773
|
-
assert_equal('true', bgp.event_history_periodic)
|
777
|
+
assert_equal('true', bgp.event_history_periodic) unless
|
778
|
+
Utils.image_version?(/8.0/)
|
774
779
|
else
|
775
780
|
assert_equal(bgp.default_event_history_periodic,
|
776
781
|
bgp.event_history_periodic)
|
@@ -52,16 +52,16 @@ class TestRouterOspfArea < CiscoTestCase
|
|
52
52
|
av.stub = true
|
53
53
|
assert_equal(2, RouterOspfArea.areas['Wolfpack'].size)
|
54
54
|
av.destroy
|
55
|
-
# on
|
55
|
+
# on n9k-f (only), we cannot remove "area <area> default-cost 1",
|
56
56
|
# unless the entire ospf router is removed. The default value of
|
57
57
|
# default_cost is 1 and so this is just a cosmetic issue but
|
58
58
|
# need to skip the below test as the size will be wrong.
|
59
59
|
# platform as the size will be wrong. bug ID: CSCva04066
|
60
60
|
assert_equal(1, RouterOspfArea.areas['Wolfpack'].size) unless
|
61
|
-
/
|
61
|
+
/N9K.*-F/ =~ node.product_id
|
62
62
|
ad.destroy
|
63
63
|
assert_empty(RouterOspfArea.areas) unless
|
64
|
-
/
|
64
|
+
/N9K.*-F/ =~ node.product_id
|
65
65
|
end
|
66
66
|
|
67
67
|
def test_authentication
|
@@ -237,21 +237,21 @@ class TestRouterOspfArea < CiscoTestCase
|
|
237
237
|
assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
|
238
238
|
assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
|
239
239
|
assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
|
240
|
-
# on
|
240
|
+
# on n9k-f (only), we cannot configure
|
241
241
|
# "area <area> nssa default-information-originate",
|
242
242
|
# properly if we reset it first. It is only configuring nssa
|
243
243
|
# but not the other parameters. bug ID: CSCva11482
|
244
244
|
hash[:nssa_route_map] = 'aaa'
|
245
245
|
ad.nssa_set(hash)
|
246
246
|
assert_equal(true, ad.nssa)
|
247
|
-
if node.product_id[/
|
247
|
+
if node.product_id[/N9K-F/]
|
248
248
|
refute(ad.nssa_default_originate)
|
249
249
|
else
|
250
250
|
assert(ad.nssa_default_originate)
|
251
251
|
end
|
252
252
|
assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
|
253
253
|
assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
|
254
|
-
if node.product_id[/
|
254
|
+
if node.product_id[/N9K-F/]
|
255
255
|
refute_equal('aaa', ad.nssa_route_map)
|
256
256
|
else
|
257
257
|
assert_equal('aaa', ad.nssa_route_map)
|
data/tests/test_tacacs_server.rb
CHANGED
@@ -140,7 +140,7 @@ class TestTacacsServer < CiscoTestCase
|
|
140
140
|
tacacs = TacacsServer.new
|
141
141
|
|
142
142
|
if platform == :nexus
|
143
|
-
assert_equal(sh_run_encryption_password,
|
143
|
+
assert_equal(Utils.add_quotes(sh_run_encryption_password),
|
144
144
|
tacacs.encryption_password,
|
145
145
|
'Error: Tacacs Server, encryption password incorrect')
|
146
146
|
elsif platform == :ios_xr
|
@@ -186,7 +186,7 @@ class TestTacacsServer < CiscoTestCase
|
|
186
186
|
encrypted_type = md.to_s.split(' ').last.to_i
|
187
187
|
assert_equal(encrypted_type, tacacs.encryption_type,
|
188
188
|
'Error: Tacacs Server, encryption type incorrect')
|
189
|
-
assert_equal(encrypted_password, tacacs.encryption_password,
|
189
|
+
assert_equal(Utils.add_quotes(encrypted_password), tacacs.encryption_password,
|
190
190
|
'Error: Tacacs Server, encryption password incorrect')
|
191
191
|
tacacs.destroy
|
192
192
|
end
|
@@ -299,7 +299,7 @@ class TestTacacsSvrHost < CiscoTestCase
|
|
299
299
|
host.encryption_key_set(0, pass)
|
300
300
|
|
301
301
|
if platform != :ios_xr
|
302
|
-
assert_equal(sh_run_pass, host.encryption_password,
|
302
|
+
assert_equal(Utils.add_quotes(sh_run_pass), host.encryption_password,
|
303
303
|
'Error: Tacacs Host encryption password incorrect')
|
304
304
|
else
|
305
305
|
# Only do not-nil checking for IOS XR
|
@@ -339,7 +339,7 @@ class TestTacacsSvrHost < CiscoTestCase
|
|
339
339
|
pass_no_quotes = md.captures[1].gsub(/(?:^\")|(?:\"$)/, '')
|
340
340
|
assert_equal(sh_run_pass, pass_no_quotes,
|
341
341
|
'Error: Tacacs Host encryption password mismatch')
|
342
|
-
assert_equal(sh_run_pass, host.encryption_password,
|
342
|
+
assert_equal(Utils.add_quotes(sh_run_pass), host.encryption_password,
|
343
343
|
'Error: Tacacs Host encryption password incorrect')
|
344
344
|
else
|
345
345
|
# Only do not-nil checking for IOS XR
|
data/tests/test_vlan.rb
CHANGED
@@ -149,6 +149,20 @@ class TestVlan < CiscoTestCase
|
|
149
149
|
v.destroy
|
150
150
|
end
|
151
151
|
|
152
|
+
def test_name_long
|
153
|
+
config 'system vlan long-name'
|
154
|
+
v = Vlan.new(1000)
|
155
|
+
name = 'LONG_NAME' + ('E' * 119)
|
156
|
+
v.vlan_name = name
|
157
|
+
assert_equal(name, v.vlan_name)
|
158
|
+
name = 'LONG_NAME' + ('E' * 120)
|
159
|
+
assert_raises(Cisco::CliError) do
|
160
|
+
v.vlan_name = name
|
161
|
+
end
|
162
|
+
v.destroy
|
163
|
+
config 'no system vlan long-name'
|
164
|
+
end
|
165
|
+
|
152
166
|
def test_state_invalid
|
153
167
|
v = Vlan.new(1000)
|
154
168
|
assert_raises(CliError) do
|
data/tests/test_yum.rb
CHANGED
@@ -122,10 +122,10 @@ class TestYum < CiscoTestCase
|
|
122
122
|
end
|
123
123
|
|
124
124
|
def test_package_does_not_exist_error
|
125
|
-
assert_raises(
|
125
|
+
assert_raises(Cisco::CliError) do
|
126
126
|
Yum.install('bootflash:this_is_not_real.rpm', 'management')
|
127
127
|
end
|
128
|
-
assert_raises(
|
128
|
+
assert_raises(Cisco::CliError) do
|
129
129
|
Yum.install('also_not_real', 'management')
|
130
130
|
end
|
131
131
|
end
|
data/tests/yum_package.yaml
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cisco_node_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Gries
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date:
|
17
|
+
date: 2017-01-10 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: bundler
|
@@ -209,9 +209,11 @@ files:
|
|
209
209
|
- lib/cisco_node_utils/cmd_ref/fabricpath.yaml
|
210
210
|
- lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml
|
211
211
|
- lib/cisco_node_utils/cmd_ref/feature.yaml
|
212
|
+
- lib/cisco_node_utils/cmd_ref/hsrp_global.yaml
|
212
213
|
- lib/cisco_node_utils/cmd_ref/images.yaml
|
213
214
|
- lib/cisco_node_utils/cmd_ref/interface.yaml
|
214
215
|
- lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml
|
216
|
+
- lib/cisco_node_utils/cmd_ref/interface_hsrp_group.yaml
|
215
217
|
- lib/cisco_node_utils/cmd_ref/interface_ospf.yaml
|
216
218
|
- lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml
|
217
219
|
- lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml
|
@@ -270,9 +272,11 @@ files:
|
|
270
272
|
- lib/cisco_node_utils/fabricpath_global.rb
|
271
273
|
- lib/cisco_node_utils/fabricpath_topology.rb
|
272
274
|
- lib/cisco_node_utils/feature.rb
|
275
|
+
- lib/cisco_node_utils/hsrp_global.rb
|
273
276
|
- lib/cisco_node_utils/interface.rb
|
274
277
|
- lib/cisco_node_utils/interface_DEPRECATED.rb
|
275
278
|
- lib/cisco_node_utils/interface_channel_group.rb
|
279
|
+
- lib/cisco_node_utils/interface_hsrp_group.rb
|
276
280
|
- lib/cisco_node_utils/interface_ospf.rb
|
277
281
|
- lib/cisco_node_utils/interface_portchannel.rb
|
278
282
|
- lib/cisco_node_utils/interface_service_vni.rb
|
@@ -372,9 +376,12 @@ files:
|
|
372
376
|
- tests/test_fabricpath_topology.rb
|
373
377
|
- tests/test_feature.rb
|
374
378
|
- tests/test_grpc.rb
|
379
|
+
- tests/test_hsrp_global.rb
|
375
380
|
- tests/test_interface.rb
|
376
381
|
- tests/test_interface_bdi.rb
|
377
382
|
- tests/test_interface_channel_group.rb
|
383
|
+
- tests/test_interface_hsrp.rb
|
384
|
+
- tests/test_interface_hsrp_group.rb
|
378
385
|
- tests/test_interface_ospf.rb
|
379
386
|
- tests/test_interface_portchannel.rb
|
380
387
|
- tests/test_interface_private_vlan.rb
|
@@ -451,7 +458,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
451
458
|
version: 2.1.0
|
452
459
|
requirements: []
|
453
460
|
rubyforge_project:
|
454
|
-
rubygems_version: 2.
|
461
|
+
rubygems_version: 2.4.6
|
455
462
|
signing_key:
|
456
463
|
specification_version: 4
|
457
464
|
summary: Utilities for management of Cisco network nodes
|