cisco_node_utils 1.3.0 → 1.4.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/.gitignore +1 -0
- data/CHANGELOG.md +66 -0
- data/Gemfile +1 -0
- data/README.md +44 -43
- data/bin/.rubocop.yml +18 -0
- data/bin/show_running_yang.rb +233 -0
- data/cisco_node_utils.gemspec +1 -1
- data/docs/README-maintainers.md +1 -0
- data/docs/README-utilities.md +14 -0
- data/lib/.rubocop.yml +1 -1
- data/lib/cisco_node_utils/aaa_authentication_login_service.rb +8 -3
- data/lib/cisco_node_utils/aaa_authorization_service.rb +6 -0
- data/lib/cisco_node_utils/bfd_global.rb +300 -0
- data/lib/cisco_node_utils/bgp.rb +6 -4
- data/lib/cisco_node_utils/bgp_af.rb +2 -0
- data/lib/cisco_node_utils/bgp_neighbor.rb +14 -0
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +4 -1
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +126 -0
- data/lib/cisco_node_utils/client/client.rb +6 -2
- data/lib/cisco_node_utils/client/grpc/client.rb +120 -36
- data/lib/cisco_node_utils/client/nxapi/client.rb +6 -2
- data/lib/cisco_node_utils/cmd_ref/DEPRECATED.yaml +118 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +117 -0
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +7 -7
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +125 -0
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +10 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +141 -49
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +44 -0
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/ospf_area.yaml +91 -0
- data/lib/cisco_node_utils/cmd_ref/ospf_area_vlink.yaml +88 -0
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +0 -3
- data/lib/cisco_node_utils/cmd_ref/show_version.yaml +3 -3
- data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +39 -15
- data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +43 -21
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +48 -19
- data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +0 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_global.yaml +30 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +18 -6
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +4 -0
- data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +1 -0
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +23 -10
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +8 -2
- data/lib/cisco_node_utils/cmd_ref/yang.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +10 -1
- data/lib/cisco_node_utils/constants.rb +8 -1
- data/lib/cisco_node_utils/dhcp_relay_global.rb +302 -0
- data/lib/cisco_node_utils/exceptions.rb +29 -0
- data/lib/cisco_node_utils/feature.rb +28 -0
- data/lib/cisco_node_utils/interface.rb +493 -402
- data/lib/cisco_node_utils/interface_DEPRECATED.rb +513 -0
- data/lib/cisco_node_utils/interface_ospf.rb +126 -0
- data/lib/cisco_node_utils/interface_portchannel.rb +16 -0
- data/lib/cisco_node_utils/logger.rb +3 -0
- data/lib/cisco_node_utils/node.rb +29 -1
- data/lib/cisco_node_utils/overlay_global.rb +1 -12
- data/lib/cisco_node_utils/pim.rb +1 -0
- data/lib/cisco_node_utils/pim_group_list.rb +1 -0
- data/lib/cisco_node_utils/pim_rp_address.rb +1 -0
- data/lib/cisco_node_utils/platform.rb +9 -2
- data/lib/cisco_node_utils/router_ospf.rb +1 -1
- data/lib/cisco_node_utils/router_ospf_area.rb +416 -0
- data/lib/cisco_node_utils/router_ospf_area_vlink.rb +313 -0
- data/lib/cisco_node_utils/router_ospf_vrf.rb +17 -0
- data/lib/cisco_node_utils/snmp_notification_receiver.rb +27 -9
- data/lib/cisco_node_utils/snmpcommunity.rb +34 -8
- data/lib/cisco_node_utils/snmpserver.rb +4 -4
- data/lib/cisco_node_utils/snmpuser.rb +0 -0
- data/lib/cisco_node_utils/tacacs_global.rb +102 -0
- data/lib/cisco_node_utils/tacacs_server.rb +8 -7
- data/lib/cisco_node_utils/vdc.rb +25 -7
- data/lib/cisco_node_utils/version.rb +1 -1
- data/lib/cisco_node_utils/vlan.rb +30 -56
- data/lib/cisco_node_utils/vlan_DEPRECATED.rb +108 -0
- data/lib/cisco_node_utils/yang.rb +160 -0
- data/lib/cisco_node_utils/yum.rb +25 -32
- data/tests/.rubocop.yml +3 -0
- data/tests/ciscotest.rb +136 -19
- data/tests/cmd_config_invalid.yaml +1 -1
- data/tests/noop.rb +7 -0
- data/tests/tacacs_server.yaml.example +6 -0
- data/tests/test_aaa_authentication_login.rb +24 -1
- data/tests/test_aaa_authentication_login_service.rb +9 -16
- data/tests/test_aaa_authorization_service.rb +111 -84
- data/tests/test_bfd_global.rb +278 -0
- data/tests/test_bgp_neighbor.rb +20 -0
- data/tests/test_bridge_domain_vni.rb +2 -9
- data/tests/test_cmn_utils.rb +76 -0
- data/tests/test_dhcp_relay_global.rb +284 -0
- data/tests/test_dns_domain.rb +4 -4
- data/tests/test_domain_name.rb +2 -2
- data/tests/test_encapsulation.rb +2 -4
- data/tests/test_evpn_vni.rb +14 -7
- data/tests/test_fabricpath_global.rb +12 -13
- data/tests/test_feature.rb +35 -17
- data/tests/test_interface.rb +352 -127
- data/tests/test_interface_bdi.rb +2 -2
- data/tests/test_interface_channel_group.rb +1 -1
- data/tests/test_interface_ospf.rb +153 -23
- data/tests/test_interface_portchannel.rb +15 -6
- data/tests/test_interface_private_vlan.rb +200 -576
- data/tests/test_interface_svi.rb +5 -52
- data/tests/test_interface_switchport.rb +80 -240
- data/tests/test_itd_device_group.rb +2 -2
- data/tests/test_itd_device_group_node.rb +2 -2
- data/tests/test_itd_service.rb +1 -1
- data/tests/test_name_server.rb +3 -3
- data/tests/test_node_ext.rb +15 -17
- data/tests/test_ntp_config.rb +1 -1
- data/tests/test_ntp_server.rb +3 -3
- data/tests/test_nxapi.rb +1 -0
- data/tests/test_overlay_global.rb +15 -19
- data/tests/test_pim.rb +5 -5
- data/tests/test_pim_group_list.rb +1 -37
- data/tests/test_pim_rp_address.rb +1 -1
- data/tests/test_platform.rb +9 -11
- data/tests/test_portchannel_global.rb +43 -3
- data/tests/test_radius_server.rb +1 -1
- data/tests/test_radius_server_group.rb +1 -1
- data/tests/test_router_bgp.rb +17 -30
- data/tests/test_router_ospf_area.rb +433 -0
- data/tests/test_router_ospf_area_vlink.rb +298 -0
- data/tests/test_router_ospf_vrf.rb +17 -0
- data/tests/test_snmp_notification_receiver.rb +11 -11
- data/tests/test_snmpcommunity.rb +177 -69
- data/tests/test_snmpgroup.rb +7 -7
- data/tests/test_snmpserver.rb +164 -253
- data/tests/test_snmpuser.rb +73 -69
- data/tests/test_stp_global.rb +15 -15
- data/tests/test_syslog_settings.rb +1 -1
- data/tests/test_tacacs_global.rb +80 -0
- data/tests/test_tacacs_server.rb +129 -51
- data/tests/test_tacacs_server_group.rb +3 -29
- data/tests/test_tacacs_server_host.rb +24 -27
- data/tests/test_vlan.rb +57 -59
- data/tests/test_vlan_private.rb +271 -284
- data/tests/test_vpc.rb +10 -4
- data/tests/test_vrf.rb +2 -0
- data/tests/test_vrf_af.rb +2 -5
- data/tests/test_vtp.rb +5 -2
- data/tests/test_vxlan_vtep.rb +20 -44
- data/tests/test_vxlan_vtep_vni.rb +23 -16
- data/tests/test_yang.rb +369 -0
- data/tests/test_yum.rb +34 -42
- data/tests/yum_package.yaml +35 -0
- metadata +31 -4
- data/tests/test_vlan_mt_full.rb +0 -85
|
@@ -18,7 +18,7 @@ require_relative '../lib/cisco_node_utils/itd_device_group'
|
|
|
18
18
|
include Cisco
|
|
19
19
|
# TestInterface - Minitest for general functionality
|
|
20
20
|
# of the ItdDeviceGroup class.
|
|
21
|
-
class
|
|
21
|
+
class TestItdDevGrp < CiscoTestCase
|
|
22
22
|
@skip_unless_supported = 'itd_device_group'
|
|
23
23
|
# Tests
|
|
24
24
|
|
|
@@ -32,7 +32,7 @@ class TestItdDeviceGroup < CiscoTestCase
|
|
|
32
32
|
super
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def
|
|
35
|
+
def test_create_destroy
|
|
36
36
|
skip_nexus_i2_image?
|
|
37
37
|
i1 = ItdDeviceGroup.new('abc')
|
|
38
38
|
i2 = ItdDeviceGroup.new('BCD')
|
|
@@ -18,7 +18,7 @@ require_relative '../lib/cisco_node_utils/itd_device_group_node'
|
|
|
18
18
|
include Cisco
|
|
19
19
|
# TestInterface - Minitest for general functionality
|
|
20
20
|
# of the ItdDeviceGroup class.
|
|
21
|
-
class
|
|
21
|
+
class TestItdDevGrpNode < CiscoTestCase
|
|
22
22
|
@skip_unless_supported = 'itd_device_group'
|
|
23
23
|
# Tests
|
|
24
24
|
|
|
@@ -32,7 +32,7 @@ class TestItdDeviceGroupNode < CiscoTestCase
|
|
|
32
32
|
super
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def
|
|
35
|
+
def test_create_destroy
|
|
36
36
|
skip_nexus_i2_image?
|
|
37
37
|
itddg1 = ItdDeviceGroup.new('abc')
|
|
38
38
|
n1 = ItdDeviceGroupNode.new(itddg1.name, '1.1.1.1', 'ip')
|
data/tests/test_itd_service.rb
CHANGED
|
@@ -19,7 +19,7 @@ require_relative '../lib/cisco_node_utils/itd_service'
|
|
|
19
19
|
include Cisco
|
|
20
20
|
# TestInterface - Minitest for general functionality
|
|
21
21
|
# of the ItdService class.
|
|
22
|
-
class
|
|
22
|
+
class TestItdSvc < CiscoTestCase
|
|
23
23
|
@skip_unless_supported = 'itd_service'
|
|
24
24
|
# Tests
|
|
25
25
|
|
data/tests/test_name_server.rb
CHANGED
|
@@ -49,7 +49,7 @@ class TestNameServer < CiscoTestCase
|
|
|
49
49
|
|
|
50
50
|
# TESTS
|
|
51
51
|
|
|
52
|
-
def
|
|
52
|
+
def test_ipv4
|
|
53
53
|
id = '7.7.7.7'
|
|
54
54
|
refute_includes(Cisco::NameServer.nameservers, id)
|
|
55
55
|
|
|
@@ -61,7 +61,7 @@ class TestNameServer < CiscoTestCase
|
|
|
61
61
|
refute_includes(Cisco::NameServer.nameservers, id)
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
def
|
|
64
|
+
def test_ipv6
|
|
65
65
|
id = '2001:4860:4860::7777'
|
|
66
66
|
refute_includes(Cisco::NameServer.nameservers, id)
|
|
67
67
|
|
|
@@ -73,7 +73,7 @@ class TestNameServer < CiscoTestCase
|
|
|
73
73
|
refute_includes(Cisco::NameServer.nameservers, id)
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def
|
|
76
|
+
def test_multiple
|
|
77
77
|
id1 = '7.7.7.7'
|
|
78
78
|
id2 = '2001:4860:4860::7777'
|
|
79
79
|
refute_includes(Cisco::NameServer.nameservers, id1)
|
data/tests/test_node_ext.rb
CHANGED
|
@@ -326,12 +326,9 @@ class TestNodeExt < CiscoTestCase
|
|
|
326
326
|
def test_get_last_reset_time
|
|
327
327
|
if validate_property_excluded?('show_version', 'last_reset_time')
|
|
328
328
|
assert_nil(node.last_reset_time)
|
|
329
|
-
|
|
329
|
+
else
|
|
330
|
+
refute_nil(node.last_reset_time)
|
|
330
331
|
end
|
|
331
|
-
assert_output_check(command: 'show version',
|
|
332
|
-
pattern: /.*\nLast reset at \d+ usecs after (.*)\n/,
|
|
333
|
-
check: node.last_reset_time,
|
|
334
|
-
msg: 'Error, Last reset time does not match')
|
|
335
332
|
end
|
|
336
333
|
|
|
337
334
|
def test_get_last_reset_reason
|
|
@@ -348,16 +345,9 @@ class TestNodeExt < CiscoTestCase
|
|
|
348
345
|
def test_get_system_cpu_utilization
|
|
349
346
|
if validate_property_excluded?('system', 'resources')
|
|
350
347
|
assert_nil(node.system_cpu_utilization)
|
|
351
|
-
|
|
348
|
+
else
|
|
349
|
+
refute_nil(node.system_cpu_utilization)
|
|
352
350
|
end
|
|
353
|
-
cpu_utilization = node.system_cpu_utilization
|
|
354
|
-
md = assert_show_match(
|
|
355
|
-
command: 'show system resources',
|
|
356
|
-
pattern: /.*CPU states : (\d+\.\d+)% user, (\d+\.\d+)% kernel/)
|
|
357
|
-
observed_cpu_utilization = md[1].to_f + md[2].to_f
|
|
358
|
-
delta = cpu_utilization - observed_cpu_utilization
|
|
359
|
-
assert(delta > -15.0 && delta < 15.0,
|
|
360
|
-
"Error: delta #{delta}, not +- 15.0")
|
|
361
351
|
end
|
|
362
352
|
|
|
363
353
|
def test_get_boot
|
|
@@ -379,7 +369,7 @@ class TestNodeExt < CiscoTestCase
|
|
|
379
369
|
end
|
|
380
370
|
|
|
381
371
|
def test_get_system
|
|
382
|
-
if validate_property_excluded?('
|
|
372
|
+
if validate_property_excluded?('show_version', 'system_image')
|
|
383
373
|
assert_nil(node.system)
|
|
384
374
|
return
|
|
385
375
|
end
|
|
@@ -388,9 +378,17 @@ class TestNodeExt < CiscoTestCase
|
|
|
388
378
|
# system image file is: bootflash:///n7000-s2-kickstart.7.3.0.D1.1.bin
|
|
389
379
|
# /N(3|8|9)/
|
|
390
380
|
# NXOS image file is: bootflash:///nxos.7.0.3.I3.1.bin
|
|
381
|
+
# /ios_xr/
|
|
382
|
+
# xrv9k-xr-6.1.1.19I version=6.1.1.19I [Boot image]
|
|
391
383
|
|
|
392
|
-
|
|
393
|
-
|
|
384
|
+
if platform[/ios_xr/]
|
|
385
|
+
cmd = 'show install active'
|
|
386
|
+
pattern = /^\s*(\S*)\s*version.*\[Boot image\]$/
|
|
387
|
+
else
|
|
388
|
+
cmd = 'show version'
|
|
389
|
+
pattern = /(?:system|NXOS) image file is:\s+(.*)$/
|
|
390
|
+
end
|
|
391
|
+
assert_output_check(command: cmd,
|
|
394
392
|
pattern: pattern,
|
|
395
393
|
check: node.system,
|
|
396
394
|
msg: 'Error, System Image does not match')
|
data/tests/test_ntp_config.rb
CHANGED
data/tests/test_ntp_server.rb
CHANGED
|
@@ -40,7 +40,7 @@ class TestNtpServer < CiscoTestCase
|
|
|
40
40
|
|
|
41
41
|
# TESTS
|
|
42
42
|
|
|
43
|
-
def
|
|
43
|
+
def test_ipv4
|
|
44
44
|
id = '130.88.203.12'
|
|
45
45
|
refute_includes(Cisco::NtpServer.ntpservers, id)
|
|
46
46
|
|
|
@@ -52,7 +52,7 @@ class TestNtpServer < CiscoTestCase
|
|
|
52
52
|
refute_includes(Cisco::NtpServer.ntpservers, id)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
def
|
|
55
|
+
def test_ipv6
|
|
56
56
|
id = '2003::5'
|
|
57
57
|
refute_includes(Cisco::NtpServer.ntpservers, id)
|
|
58
58
|
|
|
@@ -64,7 +64,7 @@ class TestNtpServer < CiscoTestCase
|
|
|
64
64
|
refute_includes(Cisco::NtpServer.ntpservers, id)
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
def
|
|
67
|
+
def test_multiple
|
|
68
68
|
id1 = '130.88.203.12'
|
|
69
69
|
id2 = '2003::5'
|
|
70
70
|
refute_includes(Cisco::NtpServer.ntpservers, id1)
|
data/tests/test_nxapi.rb
CHANGED
|
@@ -25,11 +25,15 @@ class TestOverlayGlobal < CiscoTestCase
|
|
|
25
25
|
|
|
26
26
|
def setup
|
|
27
27
|
super
|
|
28
|
-
|
|
29
|
-
vdc_lc_state('f3')
|
|
28
|
+
vdc_limit_f3_no_intf_needed(:set)
|
|
30
29
|
config_no_warn('no feature fabric forwarding')
|
|
31
30
|
config_no_warn('no nv overlay evpn')
|
|
32
|
-
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def teardown
|
|
34
|
+
config_no_warn('no feature fabric forwarding')
|
|
35
|
+
config_no_warn('no nv overlay evpn')
|
|
36
|
+
vdc_limit_f3_no_intf_needed(:clear) if first_or_last_teardown
|
|
33
37
|
end
|
|
34
38
|
|
|
35
39
|
def test_dup_host_ip_addr_detection
|
|
@@ -42,9 +46,10 @@ class TestOverlayGlobal < CiscoTestCase
|
|
|
42
46
|
return
|
|
43
47
|
end
|
|
44
48
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
49
|
+
assert_equal(o.default_dup_host_ip_addr_detection_host_moves,
|
|
50
|
+
o.dup_host_ip_addr_detection_host_moves)
|
|
51
|
+
assert_equal(o.default_dup_host_ip_addr_detection_timeout,
|
|
52
|
+
o.dup_host_ip_addr_detection_timeout)
|
|
48
53
|
|
|
49
54
|
# Set them to the default value and they should now be present
|
|
50
55
|
default = [o.default_dup_host_ip_addr_detection_host_moves,
|
|
@@ -64,11 +69,6 @@ class TestOverlayGlobal < CiscoTestCase
|
|
|
64
69
|
|
|
65
70
|
def test_dup_host_mac_detection
|
|
66
71
|
o = OverlayGlobal.new
|
|
67
|
-
# These properties always exist, even without 'nv overlay evpn'
|
|
68
|
-
default = [o.default_dup_host_mac_detection_host_moves,
|
|
69
|
-
o.default_dup_host_mac_detection_timeout]
|
|
70
|
-
assert_equal(default, o.dup_host_mac_detection)
|
|
71
|
-
refute(Feature.nv_overlay_evpn_enabled?)
|
|
72
72
|
|
|
73
73
|
# Set to a non-default value
|
|
74
74
|
val = [160, 16]
|
|
@@ -76,12 +76,9 @@ class TestOverlayGlobal < CiscoTestCase
|
|
|
76
76
|
assert_equal(val, o.dup_host_mac_detection)
|
|
77
77
|
refute(Feature.nv_overlay_evpn_enabled?)
|
|
78
78
|
|
|
79
|
-
#
|
|
80
|
-
o.
|
|
81
|
-
|
|
82
|
-
refute(Feature.nv_overlay_evpn_enabled?)
|
|
83
|
-
|
|
84
|
-
# Set explicitly to default too
|
|
79
|
+
# These properties always exist, even without 'nv overlay evpn'
|
|
80
|
+
default = [o.default_dup_host_mac_detection_host_moves,
|
|
81
|
+
o.default_dup_host_mac_detection_timeout]
|
|
85
82
|
o.dup_host_mac_detection_set(*default)
|
|
86
83
|
assert_equal(default, o.dup_host_mac_detection)
|
|
87
84
|
refute(Feature.nv_overlay_evpn_enabled?)
|
|
@@ -94,8 +91,7 @@ class TestOverlayGlobal < CiscoTestCase
|
|
|
94
91
|
return
|
|
95
92
|
end
|
|
96
93
|
|
|
97
|
-
|
|
98
|
-
assert_nil(o.anycast_gateway_mac)
|
|
94
|
+
assert_equal(o.default_anycast_gateway_mac, o.anycast_gateway_mac)
|
|
99
95
|
|
|
100
96
|
# Explicitly set to default and it should be enabled
|
|
101
97
|
o.anycast_gateway_mac = o.default_anycast_gateway_mac
|
data/tests/test_pim.rb
CHANGED
|
@@ -81,7 +81,7 @@ class TestPim < CiscoTestCase
|
|
|
81
81
|
|
|
82
82
|
# Tests single ssm range none under default vrf
|
|
83
83
|
#-----------------------------------------------
|
|
84
|
-
def
|
|
84
|
+
def test_ssm_range
|
|
85
85
|
%w(ipv4).each do |afi|
|
|
86
86
|
create_single_ssm_range_single_vrf(afi)
|
|
87
87
|
end
|
|
@@ -98,7 +98,7 @@ class TestPim < CiscoTestCase
|
|
|
98
98
|
|
|
99
99
|
# Tests single ssm range none under default vrf
|
|
100
100
|
#-----------------------------------------------
|
|
101
|
-
def
|
|
101
|
+
def test_ssm_range_none
|
|
102
102
|
%w(ipv4).each do |afi|
|
|
103
103
|
create_single_ssm_range_none_single_vrf(afi)
|
|
104
104
|
end
|
|
@@ -123,7 +123,7 @@ class TestPim < CiscoTestCase
|
|
|
123
123
|
|
|
124
124
|
# Tests multiple ssm ranges under different vrfs
|
|
125
125
|
#-----------------------------------------------
|
|
126
|
-
def
|
|
126
|
+
def test_ssm_range_multiple
|
|
127
127
|
%w(ipv4).each do |afi|
|
|
128
128
|
create_multiple_ssm_range_multiple_vrfs(afi)
|
|
129
129
|
end
|
|
@@ -153,7 +153,7 @@ class TestPim < CiscoTestCase
|
|
|
153
153
|
|
|
154
154
|
# Tests multiple ssm ranges overwrite under different vrfs
|
|
155
155
|
#-----------------------------------------------
|
|
156
|
-
def
|
|
156
|
+
def test_ssm_range_multiple_overwrite
|
|
157
157
|
%w(ipv4).each do |afi|
|
|
158
158
|
create_multiple_ssm_range_overwrite_multiple_vrfs(afi)
|
|
159
159
|
end
|
|
@@ -171,7 +171,7 @@ class TestPim < CiscoTestCase
|
|
|
171
171
|
|
|
172
172
|
# Tests single invalid ssm range under vrf default
|
|
173
173
|
#---------------------------------------------------
|
|
174
|
-
def
|
|
174
|
+
def test_ssm_range_inv
|
|
175
175
|
%w(ipv4).each do |afi|
|
|
176
176
|
create_single_invalid_ssm_range_single_vrf(afi)
|
|
177
177
|
end
|
|
@@ -31,7 +31,7 @@ require_relative '../lib/cisco_node_utils/pim_group_list'
|
|
|
31
31
|
include Cisco
|
|
32
32
|
|
|
33
33
|
# TestPim - Minitest for PimGrouplist
|
|
34
|
-
class
|
|
34
|
+
class TestPimGrpLst < CiscoTestCase
|
|
35
35
|
@skip_unless_supported = 'pim'
|
|
36
36
|
|
|
37
37
|
# Enables feature pim
|
|
@@ -144,40 +144,4 @@ class TestPimGroupList < CiscoTestCase
|
|
|
144
144
|
all_group_lists(afi)
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
|
-
|
|
148
|
-
# Creates single invalid rp address single grouplist vrf default
|
|
149
|
-
#---------------------------------------------------------------
|
|
150
|
-
def create_single_invalid_rpaddr_single_grouplist_single_vrf(afi)
|
|
151
|
-
rp_addr = '256.256.256.256'
|
|
152
|
-
grouplist = '224.0.0.0/8'
|
|
153
|
-
assert_raises(CliError) do
|
|
154
|
-
PimGroupList.new(afi, 'default', rp_addr, grouplist)
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
# Tests single invalid rp address single grouplist vrf default
|
|
159
|
-
#---------------------------------------------------------------
|
|
160
|
-
def test_single_invalid_rpaddr_single_grouplist_single_vrf
|
|
161
|
-
%w(ipv4).each do |afi|
|
|
162
|
-
create_single_invalid_rpaddr_single_grouplist_single_vrf(afi)
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
# Creates single rp address single invalid grouplist single vrf
|
|
167
|
-
#---------------------------------------------------------------
|
|
168
|
-
def create_single_rpaddr_single_invalid_grouplist_single_vrf(afi)
|
|
169
|
-
rp_addr = '25.25.25.25'
|
|
170
|
-
grouplist = '25.0.0.0/8'
|
|
171
|
-
assert_raises(CliError) do
|
|
172
|
-
PimGroupList.new(afi, 'red', rp_addr, grouplist)
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# Tests single rp address single invalid grouplist single vrf
|
|
177
|
-
#---------------------------------------------------------------
|
|
178
|
-
def test_single_rpaddr_single_invalid_grouplist_single_vrf
|
|
179
|
-
%w(ipv4).each do |afi|
|
|
180
|
-
create_single_rpaddr_single_invalid_grouplist_single_vrf(afi)
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
147
|
end
|
|
@@ -147,7 +147,7 @@ class TestPimRpAddress < CiscoTestCase
|
|
|
147
147
|
|
|
148
148
|
# Tests single invalid rp address under vrf default
|
|
149
149
|
#---------------------------------------------------
|
|
150
|
-
def
|
|
150
|
+
def test_rpaddr
|
|
151
151
|
%w(ipv4).each do |afi|
|
|
152
152
|
create_single_invalid_rpaddr_single_vrf(afi)
|
|
153
153
|
end
|
data/tests/test_platform.rb
CHANGED
|
@@ -42,7 +42,7 @@ class TestPlatform < CiscoTestCase
|
|
|
42
42
|
if platform == :ios_xr
|
|
43
43
|
assert_nil(Platform.system_image)
|
|
44
44
|
elsif platform == :nexus
|
|
45
|
-
s = @device.cmd('show version |
|
|
45
|
+
s = @device.cmd('show version | inc image | exc kickstart').scan(/ (\S+)$/).flatten.first
|
|
46
46
|
assert_equal(s, Platform.system_image)
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -115,16 +115,6 @@ class TestPlatform < CiscoTestCase
|
|
|
115
115
|
assert_equal(s.gsub(/\d+ sec/, ''), Platform.uptime.gsub(/\d+ sec/, ''))
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
-
def test_last_reset
|
|
119
|
-
s = @device.cmd('sh ver').scan(/usecs after\s+(.*)/).flatten.first
|
|
120
|
-
if Utils.nexus_i2_image
|
|
121
|
-
# Platform issue CSCuy72214, uncertain if this will ever be fixed in I2
|
|
122
|
-
assert_nil(Platform.last_reset)
|
|
123
|
-
else
|
|
124
|
-
assert_equal(s, Platform.last_reset)
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
118
|
def test_reset_reason
|
|
129
119
|
s = @device.cmd('sh ver').scan(/Reason: (.*)/).flatten.first
|
|
130
120
|
assert_equal(s, Platform.reset_reason)
|
|
@@ -221,6 +211,14 @@ class TestPlatform < CiscoTestCase
|
|
|
221
211
|
end
|
|
222
212
|
|
|
223
213
|
def test_virtual_services
|
|
214
|
+
if validate_property_excluded?('virtual_service', 'services')
|
|
215
|
+
assert_nil(node.config_get('virtual_service', 'services'))
|
|
216
|
+
return
|
|
217
|
+
end
|
|
218
|
+
# Only run this test if a virtual-service is installed
|
|
219
|
+
if config('show virtual-service global')[/services installed : 0$/]
|
|
220
|
+
skip('This test requires a virtual-service to be installed')
|
|
221
|
+
end
|
|
224
222
|
# this would be beyond ugly to parse from ascii, utilize config_get
|
|
225
223
|
vir_arr = node.config_get('virtual_service', 'services')
|
|
226
224
|
vir_arr = [vir_arr] if vir_arr.is_a? Hash
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
require_relative 'ciscotest'
|
|
16
16
|
require_relative '../lib/cisco_node_utils/portchannel_global'
|
|
17
|
+
require_relative '../lib/cisco_node_utils/platform'
|
|
17
18
|
|
|
18
19
|
# TestX__CLASS_NAME__X - Minitest for X__CLASS_NAME__X node utility class
|
|
19
20
|
class TestPortchannelGlobal < CiscoTestCase
|
|
@@ -37,13 +38,18 @@ class TestPortchannelGlobal < CiscoTestCase
|
|
|
37
38
|
config_no_warn "no port-channel load-balance #{ethernet}"
|
|
38
39
|
end
|
|
39
40
|
|
|
41
|
+
def n3k_is_t2?
|
|
42
|
+
return unless /N3/ =~ node.product_id
|
|
43
|
+
Platform.chassis['descr'][/(Nexus3000 C31|Nexus 31)/] ? true : false
|
|
44
|
+
end
|
|
45
|
+
|
|
40
46
|
def n3k_in_n3k_mode?
|
|
41
47
|
return unless /N3/ =~ node.product_id
|
|
42
48
|
mode = config('show system switch-mode')
|
|
43
49
|
# note: an n3k in n9k mode displays: 'system switch-mode n9k'
|
|
44
50
|
patterns = ['system switch-mode n3k',
|
|
45
|
-
'Switch mode configuration is not
|
|
46
|
-
mode
|
|
51
|
+
'Switch mode configuration is not.*applicable']
|
|
52
|
+
mode.match("#{patterns[0]}|#{patterns[1]}") ? true : false
|
|
47
53
|
end
|
|
48
54
|
|
|
49
55
|
def create_portchannel_global(name=DEFAULT_NAME)
|
|
@@ -113,11 +119,45 @@ class TestPortchannelGlobal < CiscoTestCase
|
|
|
113
119
|
global.resilient = global.default_resilient
|
|
114
120
|
assert_equal(global.default_resilient, global.resilient)
|
|
115
121
|
end
|
|
122
|
+
rescue Cisco::CliError => e
|
|
123
|
+
check_and_raise_error(e, 'This feature is not supported on this platform')
|
|
116
124
|
end
|
|
117
125
|
|
|
118
|
-
def
|
|
126
|
+
def test_load_balance_no_rotate_no_symmetry
|
|
119
127
|
skip('Test not supported on this platform') unless n3k_in_n3k_mode?
|
|
120
128
|
|
|
129
|
+
global = create_portchannel_global
|
|
130
|
+
global.send(:port_channel_load_balance=,
|
|
131
|
+
'src-dst', 'ip-only', nil, nil, false, nil, nil)
|
|
132
|
+
assert_equal('src-dst',
|
|
133
|
+
global.bundle_select)
|
|
134
|
+
assert_equal('ip-only',
|
|
135
|
+
global.bundle_hash)
|
|
136
|
+
assert_equal(false, global.symmetry)
|
|
137
|
+
global.send(
|
|
138
|
+
:port_channel_load_balance=,
|
|
139
|
+
global.default_bundle_select,
|
|
140
|
+
global.default_bundle_hash,
|
|
141
|
+
nil,
|
|
142
|
+
nil,
|
|
143
|
+
global.default_symmetry,
|
|
144
|
+
nil,
|
|
145
|
+
nil)
|
|
146
|
+
assert_equal(
|
|
147
|
+
global.default_bundle_select,
|
|
148
|
+
global.bundle_select)
|
|
149
|
+
assert_equal(
|
|
150
|
+
global.default_bundle_hash,
|
|
151
|
+
global.bundle_hash)
|
|
152
|
+
assert_equal(
|
|
153
|
+
global.default_symmetry,
|
|
154
|
+
global.symmetry)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def test_load_balance_no_rotate
|
|
158
|
+
skip('Test not supported on this platform') unless
|
|
159
|
+
n3k_is_t2? && n3k_in_n3k_mode?
|
|
160
|
+
|
|
121
161
|
global = create_portchannel_global
|
|
122
162
|
global.send(:port_channel_load_balance=,
|
|
123
163
|
'src-dst', 'ip-only', nil, nil, true, nil, nil)
|