cisco_node_utils 1.2.0 → 1.3.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 +2 -0
- data/.rspec +2 -0
- data/.rubocop.yml +13 -0
- data/.travis.yml +4 -1
- data/CHANGELOG.md +81 -2
- data/CONTRIBUTING.md +2 -17
- data/Gemfile +5 -0
- data/README.md +92 -47
- data/Rakefile +23 -1
- data/bin/git/hooks/hook_lib +7 -0
- data/bin/git/hooks/pre-commit/check_unstaged_changes +18 -0
- data/bin/git/hooks/pre-commit/rubocop +7 -2
- data/bin/git/hooks/pre-commit/validate-diffs +18 -4
- data/bin/git/hooks/pre-commit/validate-yaml +18 -0
- data/bin/git/update-hooks +64 -6
- data/cisco_node_utils.gemspec +9 -6
- data/docs/README-develop-best-practices.md +149 -50
- data/docs/README-develop-node-utils-APIs.md +92 -42
- data/docs/README-maintainers.md +7 -4
- data/docs/README-test-execution.md +57 -0
- data/docs/cisco_node_utils.yaml.example +30 -0
- data/docs/template-router.rb +4 -0
- data/ext/mkrf_conf.rb +63 -0
- data/lib/.rubocop.yml +2 -2
- data/lib/cisco_node_utils.rb +5 -0
- data/lib/cisco_node_utils/aaa_authentication_login.rb +5 -6
- data/lib/cisco_node_utils/aaa_authorization_service.rb +1 -1
- data/lib/cisco_node_utils/ace.rb +165 -12
- data/lib/cisco_node_utils/acl.rb +2 -1
- data/lib/cisco_node_utils/bgp.rb +184 -21
- data/lib/cisco_node_utils/bgp_af.rb +94 -249
- data/lib/cisco_node_utils/bgp_neighbor.rb +94 -14
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +75 -8
- data/lib/cisco_node_utils/bridge_domain.rb +183 -0
- data/lib/cisco_node_utils/bridge_domain_vni.rb +206 -0
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +85 -2
- data/lib/cisco_node_utils/client.rb +35 -0
- data/lib/cisco_node_utils/client/client.rb +234 -0
- data/lib/cisco_node_utils/client/grpc.rb +33 -0
- data/lib/cisco_node_utils/client/grpc/client.rb +311 -0
- data/lib/cisco_node_utils/client/grpc/ems.proto +148 -0
- data/lib/cisco_node_utils/client/grpc/ems.rb +111 -0
- data/lib/cisco_node_utils/client/grpc/ems_services.rb +49 -0
- data/lib/cisco_node_utils/client/nxapi.rb +31 -0
- data/lib/cisco_node_utils/client/nxapi/client.rb +305 -0
- data/lib/cisco_node_utils/client/utils.rb +164 -0
- data/lib/cisco_node_utils/cmd_ref/README_YAML.md +222 -254
- data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +11 -8
- data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +22 -15
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +11 -8
- data/lib/cisco_node_utils/cmd_ref/acl.yaml +21 -16
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +239 -109
- data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +114 -55
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +76 -52
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +106 -62
- data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +71 -0
- data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +35 -14
- data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +23 -17
- data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +94 -83
- data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +22 -17
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +76 -26
- data/lib/cisco_node_utils/cmd_ref/images.yaml +3 -2
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +381 -153
- data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +21 -11
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +21 -21
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +30 -21
- data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +18 -13
- data/lib/cisco_node_utils/cmd_ref/inventory.yaml +26 -31
- data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +83 -0
- data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +119 -0
- data/lib/cisco_node_utils/cmd_ref/memory.yaml +17 -6
- data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +10 -3
- data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +17 -5
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +33 -29
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +12 -10
- data/lib/cisco_node_utils/cmd_ref/pim.yaml +16 -19
- data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +40 -25
- data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +17 -12
- data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +71 -35
- data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +10 -5
- data/lib/cisco_node_utils/cmd_ref/show_system.yaml +6 -2
- data/lib/cisco_node_utils/cmd_ref/show_version.yaml +47 -43
- data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +13 -11
- data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +4 -2
- data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +23 -21
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +26 -22
- data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +19 -17
- data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +18 -6
- data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +234 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +24 -9
- data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +5 -3
- data/lib/cisco_node_utils/cmd_ref/system.yaml +4 -3
- data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +22 -20
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +27 -15
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +45 -16
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +21 -11
- data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +3 -2
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +60 -32
- data/lib/cisco_node_utils/cmd_ref/vpc.yaml +118 -101
- data/lib/cisco_node_utils/cmd_ref/vrf.yaml +54 -58
- data/lib/cisco_node_utils/cmd_ref/vrf_af.yaml +118 -0
- data/lib/cisco_node_utils/cmd_ref/vtp.yaml +19 -25
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +28 -18
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +34 -17
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +6 -4
- data/lib/cisco_node_utils/command_reference.rb +261 -142
- data/lib/cisco_node_utils/constants.rb +33 -0
- data/lib/cisco_node_utils/encapsulation.rb +112 -0
- data/lib/cisco_node_utils/environment.rb +102 -0
- data/lib/cisco_node_utils/evpn_vni.rb +5 -3
- data/lib/cisco_node_utils/exceptions.rb +111 -0
- data/lib/cisco_node_utils/fabricpath_global.rb +52 -35
- data/lib/cisco_node_utils/fabricpath_topology.rb +44 -57
- data/lib/cisco_node_utils/feature.rb +165 -3
- data/lib/cisco_node_utils/interface.rb +1051 -260
- data/lib/cisco_node_utils/interface_channel_group.rb +11 -10
- data/lib/cisco_node_utils/interface_ospf.rb +1 -2
- data/lib/cisco_node_utils/interface_portchannel.rb +4 -12
- data/lib/cisco_node_utils/interface_service_vni.rb +7 -7
- data/lib/cisco_node_utils/itd_device_group.rb +248 -0
- data/lib/cisco_node_utils/itd_device_group_node.rb +144 -0
- data/lib/cisco_node_utils/itd_service.rb +523 -0
- data/lib/cisco_node_utils/logger.rb +75 -0
- data/lib/cisco_node_utils/node.rb +62 -192
- data/lib/cisco_node_utils/node_util.rb +56 -10
- data/lib/cisco_node_utils/overlay_global.rb +2 -2
- data/lib/cisco_node_utils/pim.rb +2 -13
- data/lib/cisco_node_utils/pim_group_list.rb +1 -1
- data/lib/cisco_node_utils/pim_rp_address.rb +1 -1
- data/lib/cisco_node_utils/platform.rb +52 -21
- data/lib/cisco_node_utils/portchannel_global.rb +89 -19
- data/lib/cisco_node_utils/radius_server.rb +168 -37
- data/lib/cisco_node_utils/router_ospf.rb +20 -35
- data/lib/cisco_node_utils/router_ospf_vrf.rb +4 -4
- data/lib/cisco_node_utils/snmpserver.rb +1 -6
- data/lib/cisco_node_utils/snmpuser.rb +6 -4
- data/lib/cisco_node_utils/stp_global.rb +676 -0
- data/lib/cisco_node_utils/syslog_server.rb +77 -18
- data/lib/cisco_node_utils/syslog_settings.rb +1 -1
- data/lib/cisco_node_utils/tacacs_server_group.rb +8 -4
- data/lib/cisco_node_utils/tacacs_server_host.rb +115 -25
- data/lib/cisco_node_utils/vdc.rb +12 -0
- data/lib/cisco_node_utils/version.rb +1 -1
- data/lib/cisco_node_utils/vlan.rb +147 -29
- data/lib/cisco_node_utils/vpc.rb +55 -3
- data/lib/cisco_node_utils/vrf.rb +72 -11
- data/lib/cisco_node_utils/vrf_af.rb +114 -29
- data/lib/cisco_node_utils/vtp.rb +34 -52
- data/lib/cisco_node_utils/vxlan_vtep.rb +34 -8
- data/lib/cisco_node_utils/vxlan_vtep_vni.rb +36 -4
- data/lib/minitest/environment_plugin.rb +31 -0
- data/lib/minitest/log_level_plugin.rb +41 -0
- data/spec/client_spec.rb +7 -0
- data/spec/environment_spec.rb +263 -0
- data/spec/grpc_client_spec.rb +23 -0
- data/spec/isolate/all_clients_spec.rb +9 -0
- data/spec/isolate/grpc_only_spec.rb +16 -0
- data/spec/isolate/no_clients_spec.rb +26 -0
- data/spec/isolate/nxapi_only_spec.rb +16 -0
- data/spec/nxapi_client_spec.rb +42 -0
- data/spec/schema.yaml +75 -0
- data/spec/shared_examples_for_clients.rb +14 -0
- data/spec/spec_helper.rb +91 -0
- data/spec/whitespace_spec.rb +10 -0
- data/spec/yaml_spec.rb +42 -0
- data/tests/.rubocop.yml +2 -2
- data/tests/CSCuxdublin-1.0.0-7.0.3.I3.1.lib32_n9000.rpm +0 -0
- data/tests/basetest.rb +96 -36
- data/tests/ciscotest.rb +220 -12
- data/tests/cmd_config.yaml +71 -49
- data/tests/cmd_config_invalid.yaml +1 -1
- data/tests/test_aaa_authentication_login.rb +1 -0
- data/tests/test_aaa_authentication_login_service.rb +9 -0
- data/tests/test_aaa_authorization_service.rb +173 -367
- data/tests/test_ace.rb +171 -100
- data/tests/test_acl.rb +10 -1
- data/tests/test_bgp_af.rb +395 -728
- data/tests/test_bgp_neighbor.rb +274 -115
- data/tests/test_bgp_neighbor_af.rb +178 -77
- data/tests/test_bridge_domain.rb +191 -0
- data/tests/test_bridge_domain_vni.rb +116 -0
- data/tests/test_client_utils.rb +111 -0
- data/tests/test_command_config.rb +9 -5
- data/tests/test_command_reference.rb +380 -102
- data/tests/test_dns_domain.rb +13 -3
- data/tests/test_domain_name.rb +13 -3
- data/tests/test_encapsulation.rb +77 -0
- data/tests/test_evpn_vni.rb +25 -7
- data/tests/test_fabricpath_global.rb +167 -163
- data/tests/test_fabricpath_topology.rb +12 -33
- data/tests/test_feature.rb +215 -0
- data/tests/test_grpc.rb +166 -0
- data/tests/test_interface.rb +585 -344
- data/tests/test_interface_bdi.rb +80 -0
- data/tests/test_interface_channel_group.rb +6 -3
- data/tests/test_interface_ospf.rb +26 -24
- data/tests/test_interface_portchannel.rb +1 -0
- data/tests/test_interface_private_vlan.rb +724 -0
- data/tests/test_interface_service_vni.rb +37 -66
- data/tests/test_interface_svi.rb +98 -101
- data/tests/test_interface_switchport.rb +419 -549
- data/tests/test_itd_device_group.rb +145 -0
- data/tests/test_itd_device_group_node.rb +199 -0
- data/tests/test_itd_service.rb +298 -0
- data/tests/test_logger.rb +43 -0
- data/tests/test_name_server.rb +11 -2
- data/tests/test_node.rb +16 -75
- data/tests/test_node_ext.rb +174 -163
- data/tests/test_node_util.rb +119 -0
- data/tests/test_ntp_config.rb +5 -1
- data/tests/test_ntp_server.rb +2 -2
- data/tests/test_nxapi.rb +221 -0
- data/tests/test_overlay_global.rb +47 -38
- data/tests/test_pim.rb +2 -0
- data/tests/test_pim_group_list.rb +2 -0
- data/tests/test_pim_rp_address.rb +2 -0
- data/tests/test_platform.rb +86 -39
- data/tests/test_portchannel_global.rb +211 -135
- data/tests/test_radius_global.rb +13 -5
- data/tests/test_radius_server.rb +256 -104
- data/tests/test_radius_server_group.rb +2 -0
- data/tests/test_router_bgp.rb +781 -485
- data/tests/test_router_ospf.rb +26 -103
- data/tests/test_router_ospf_vrf.rb +52 -57
- data/tests/test_snmp_notification_receiver.rb +2 -0
- data/tests/test_snmpcommunity.rb +2 -0
- data/tests/test_snmpgroup.rb +2 -0
- data/tests/test_snmpnotification.rb +40 -21
- data/tests/test_snmpserver.rb +2 -0
- data/tests/test_snmpuser.rb +2 -0
- data/tests/test_stp_global.rb +563 -0
- data/tests/test_syslog_server.rb +32 -8
- data/tests/test_syslog_settings.rb +22 -9
- data/tests/test_tacacs_server.rb +32 -27
- data/tests/test_tacacs_server_group.rb +100 -45
- data/tests/test_tacacs_server_host.rb +135 -43
- data/tests/test_vdc.rb +2 -16
- data/tests/test_vlan.rb +106 -54
- data/tests/test_vlan_mt_full.rb +11 -21
- data/tests/test_vlan_private.rb +669 -0
- data/tests/test_vpc.rb +312 -159
- data/tests/test_vrf.rb +122 -113
- data/tests/test_vrf_af.rb +238 -0
- data/tests/test_vtp.rb +58 -102
- data/tests/test_vxlan_vtep.rb +38 -17
- data/tests/test_vxlan_vtep_vni.rb +61 -9
- data/tests/test_yum.rb +49 -25
- metadata +122 -36
- data/lib/cisco_node_utils/cmd_ref/fex.yaml +0 -9
- data/lib/cisco_node_utils/cmd_ref/vni.yaml +0 -76
- data/lib/cisco_node_utils/vni.rb +0 -227
- data/tests/test_vni.rb +0 -106
data/tests/test_router_ospf.rb
CHANGED
|
@@ -17,117 +17,40 @@ require_relative '../lib/cisco_node_utils/router_ospf'
|
|
|
17
17
|
|
|
18
18
|
# TestRouterOspf - Minitest for the RouterOspf node utility class.
|
|
19
19
|
class TestRouterOspf < CiscoTestCase
|
|
20
|
+
@skip_unless_supported = 'ospf'
|
|
21
|
+
|
|
20
22
|
def setup
|
|
21
23
|
super
|
|
22
|
-
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def routerospf_routers_destroy(routers)
|
|
26
|
-
routers.each_value(&:destroy)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_routerospf_collection_empty
|
|
30
|
-
config('no feature ospf')
|
|
31
|
-
routers = RouterOspf.routers
|
|
32
|
-
assert_equal(true, routers.empty?,
|
|
33
|
-
'RouterOspf collection is not empty')
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_routerospf_collection_not_empty
|
|
37
|
-
config('feature ospf', 'router ospf TestOSPF', 'router ospf 100')
|
|
38
|
-
routers = RouterOspf.routers
|
|
39
|
-
assert_equal(false, routers.empty?,
|
|
40
|
-
'RouterOspf collection is empty')
|
|
41
|
-
# validate the collection
|
|
42
|
-
routers.each_key do |name|
|
|
43
|
-
assert_show_match(pattern: /router ospf #{name}/)
|
|
44
|
-
end
|
|
45
|
-
routerospf_routers_destroy(routers)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def test_routerospf_create_name_zero_length
|
|
49
|
-
assert_raises(ArgumentError) do
|
|
50
|
-
RouterOspf.new('')
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def test_routerospf_create_valid
|
|
55
|
-
name = 'ospfTest'
|
|
56
|
-
ospf = RouterOspf.new(name)
|
|
57
|
-
assert_show_match(pattern: /router ospf #{name}/,
|
|
58
|
-
msg: "'router ospf ospfTest' not configured")
|
|
59
|
-
ospf.destroy
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def test_routerospf_create_valid_no_feature
|
|
63
|
-
name = 'ospfTest'
|
|
64
|
-
ospf = RouterOspf.new(name)
|
|
65
|
-
assert_show_match(pattern: /router ospf #{name}/,
|
|
66
|
-
msg: "'router ospf ospfTest' not configured")
|
|
67
|
-
ospf.destroy
|
|
68
|
-
|
|
69
|
-
refute_show_match(command: 'show run all | inc feature | no-more',
|
|
70
|
-
pattern: /feature ospf/,
|
|
71
|
-
msg: "Error: 'feature ospf' still configured")
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def test_routerospf_create_valid_multiple
|
|
75
|
-
name = 'ospfTest_1'
|
|
76
|
-
ospf_1 = RouterOspf.new(name)
|
|
77
|
-
assert_show_match(pattern: /router ospf #{name}/)
|
|
78
|
-
|
|
79
|
-
name = 'ospfTest_2'
|
|
80
|
-
ospf_2 = RouterOspf.new(name)
|
|
81
|
-
assert_show_match(pattern: /router ospf #{name}/)
|
|
82
|
-
|
|
83
|
-
ospf_1.destroy
|
|
84
|
-
ospf_2.destroy
|
|
24
|
+
remove_all_ospfs
|
|
85
25
|
end
|
|
86
26
|
|
|
87
|
-
def
|
|
88
|
-
|
|
89
|
-
ospf = RouterOspf.new(name)
|
|
90
|
-
line = assert_show_match(pattern: /router ospf #{name}/)
|
|
91
|
-
name = line.to_s.split(' ').last
|
|
92
|
-
# puts "name from cli: #{name}"
|
|
93
|
-
# puts "name from get: #{routerospf.name}"
|
|
94
|
-
assert_equal(name, ospf.name,
|
|
95
|
-
'Error: router name not correct')
|
|
96
|
-
ospf.destroy
|
|
97
|
-
end
|
|
27
|
+
def test_create_destroy
|
|
28
|
+
assert_empty(RouterOspf.routers, 'RouterOspf.routers should be empty')
|
|
98
29
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
end
|
|
30
|
+
# Create two ospf instances
|
|
31
|
+
o1_name = 'ospf1'
|
|
32
|
+
o1 = RouterOspf.new(o1_name)
|
|
33
|
+
assert(RouterOspf.routers[o1_name],
|
|
34
|
+
"router ospf #{o1_name} not present")
|
|
35
|
+
assert_equal(o1_name, o1.name)
|
|
106
36
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
msg: "Error: #{name}, not configured")
|
|
37
|
+
o2_name = 'ospf2'
|
|
38
|
+
o2 = RouterOspf.new(o2_name)
|
|
39
|
+
assert(RouterOspf.routers[o2_name],
|
|
40
|
+
"router ospf #{o2_name} not present")
|
|
112
41
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
42
|
+
# Destroy each in turn
|
|
43
|
+
o1.destroy
|
|
44
|
+
assert_nil(RouterOspf.routers[o1_name],
|
|
45
|
+
"router ospf #{o1_name} still present")
|
|
46
|
+
assert(RouterOspf.routers[o2_name],
|
|
47
|
+
"router ospf #{o2_name} not present")
|
|
117
48
|
|
|
118
|
-
|
|
49
|
+
o2.destroy
|
|
50
|
+
assert_nil(RouterOspf.routers[o2_name],
|
|
51
|
+
"router ospf #{o2_name} still present")
|
|
119
52
|
|
|
120
|
-
#
|
|
121
|
-
|
|
122
|
-
assert_equal(false, routers.empty?,
|
|
123
|
-
'Error: RouterOspf collection is empty')
|
|
124
|
-
assert_equal(1, routers.size,
|
|
125
|
-
'Error: RouterOspf collection is not one')
|
|
126
|
-
assert_equal(true, routers.key?(name),
|
|
127
|
-
"Error: #{name}, not found in the collection")
|
|
128
|
-
# validate the collection
|
|
129
|
-
assert_show_match(pattern: /router ospf #{name}/,
|
|
130
|
-
msg: "Error: #{name}, instance not found")
|
|
131
|
-
ospf_2.destroy
|
|
53
|
+
# Negative
|
|
54
|
+
assert_raises(ArgumentError) { RouterOspf.new('') }
|
|
132
55
|
end
|
|
133
56
|
end
|
|
@@ -18,15 +18,17 @@ require_relative '../lib/cisco_node_utils/router_ospf_vrf'
|
|
|
18
18
|
|
|
19
19
|
# TestRouterOspfVrf - Minitest for RouterOspfVrf node utility class
|
|
20
20
|
class TestRouterOspfVrf < CiscoTestCase
|
|
21
|
+
@skip_unless_supported = 'ospf'
|
|
22
|
+
@@pre_clean_needed = true # rubocop:disable Style/ClassVars
|
|
23
|
+
|
|
21
24
|
def setup
|
|
22
|
-
# Disable feature ospf before each test to ensure we
|
|
23
|
-
# are starting with a clean slate for each test.
|
|
24
25
|
super
|
|
25
|
-
|
|
26
|
+
remove_all_ospfs if @@pre_clean_needed
|
|
27
|
+
@@pre_clean_needed = false # rubocop:disable Style/ClassVars
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def teardown
|
|
29
|
-
|
|
31
|
+
remove_all_ospfs
|
|
30
32
|
super
|
|
31
33
|
end
|
|
32
34
|
|
|
@@ -107,7 +109,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
107
109
|
config(*cfg)
|
|
108
110
|
end
|
|
109
111
|
|
|
110
|
-
def
|
|
112
|
+
def test_collection_size
|
|
111
113
|
create_routerospfvrf('green')
|
|
112
114
|
vrfs = RouterOspfVrf.vrfs
|
|
113
115
|
assert_equal(1, vrfs.size, 'Error: Collection is not one')
|
|
@@ -144,7 +146,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
144
146
|
)
|
|
145
147
|
# rubocop:enable Style/AlignHash
|
|
146
148
|
|
|
147
|
-
def
|
|
149
|
+
def test_collection_not_empty_valid
|
|
148
150
|
# pre-populate values
|
|
149
151
|
config_from_hash(MULTIPLE_OSPFS)
|
|
150
152
|
|
|
@@ -176,11 +178,11 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
176
178
|
end
|
|
177
179
|
end
|
|
178
180
|
|
|
179
|
-
def
|
|
181
|
+
def test_create_vrf_nil
|
|
180
182
|
assert_raises(TypeError) { RouterOspfVrf.new(nil, 'testvrf') }
|
|
181
183
|
end
|
|
182
184
|
|
|
183
|
-
def
|
|
185
|
+
def test_create_name_zero_length
|
|
184
186
|
routerospf = RouterOspf.new('testOspf')
|
|
185
187
|
assert_raises(ArgumentError) do
|
|
186
188
|
RouterOspfVrf.new('testOspf', '')
|
|
@@ -188,9 +190,9 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
188
190
|
routerospf.destroy
|
|
189
191
|
end
|
|
190
192
|
|
|
191
|
-
def
|
|
193
|
+
def test_create_valid
|
|
192
194
|
ospfname = 'ospfTest'
|
|
193
|
-
|
|
195
|
+
|
|
194
196
|
vrfname = 'default'
|
|
195
197
|
vrf = RouterOspfVrf.new(ospfname, vrfname)
|
|
196
198
|
assert_match_vrf_line(ospfname, vrfname)
|
|
@@ -199,7 +201,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
199
201
|
vrf.parent.destroy
|
|
200
202
|
end
|
|
201
203
|
|
|
202
|
-
def
|
|
204
|
+
def test_get_parent_name
|
|
203
205
|
routerospf = create_routerospf
|
|
204
206
|
vrf = create_routerospfvrf(routerospf.name)
|
|
205
207
|
assert_equal(routerospf.name, vrf.parent.name,
|
|
@@ -207,7 +209,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
207
209
|
routerospf.destroy
|
|
208
210
|
end
|
|
209
211
|
|
|
210
|
-
def
|
|
212
|
+
def test_get_name
|
|
211
213
|
vrfname = 'default'
|
|
212
214
|
vrf = create_routerospfvrf('green')
|
|
213
215
|
assert_match_vrf_line('green', vrfname)
|
|
@@ -216,7 +218,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
216
218
|
vrf.parent.destroy
|
|
217
219
|
end
|
|
218
220
|
|
|
219
|
-
def
|
|
221
|
+
def test_destroy
|
|
220
222
|
vrfname = 'default'
|
|
221
223
|
vrf = create_routerospfvrf
|
|
222
224
|
assert_raises(RuntimeError) do
|
|
@@ -226,10 +228,10 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
226
228
|
vrf.parent.destroy
|
|
227
229
|
end
|
|
228
230
|
|
|
229
|
-
def
|
|
231
|
+
def test_auto_cost
|
|
230
232
|
vrf = create_routerospfvrf
|
|
231
233
|
auto_cost_value = [400_000, RouterOspfVrf::OSPF_AUTO_COST[:mbps]]
|
|
232
|
-
|
|
234
|
+
|
|
233
235
|
vrf.auto_cost_set(auto_cost_value[0], :mbps)
|
|
234
236
|
pattern = /\s+auto-cost reference-bandwidth #{auto_cost_value[0]}/
|
|
235
237
|
assert_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
@@ -238,12 +240,12 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
238
240
|
vrf.parent.destroy
|
|
239
241
|
end
|
|
240
242
|
|
|
241
|
-
def
|
|
243
|
+
def test_auto_cost_multiple_vrf
|
|
242
244
|
routerospf = create_routerospf
|
|
243
245
|
vrf = create_routerospfvrf(routerospf.name)
|
|
244
246
|
vrf1 = create_routerospfvrf(routerospf.name, 'testvrf')
|
|
245
247
|
auto_cost_value = [600_000, RouterOspfVrf::OSPF_AUTO_COST[:mbps]]
|
|
246
|
-
|
|
248
|
+
|
|
247
249
|
vrf.auto_cost_set(auto_cost_value[0], :mbps)
|
|
248
250
|
pattern = /\s+auto-cost reference-bandwidth #{auto_cost_value[0]}/
|
|
249
251
|
assert_match_vrf_line(routerospf.name, vrf.name, pattern)
|
|
@@ -252,7 +254,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
252
254
|
|
|
253
255
|
# vrf 1
|
|
254
256
|
auto_cost_value = [500_000, RouterOspfVrf::OSPF_AUTO_COST[:mbps]]
|
|
255
|
-
|
|
257
|
+
|
|
256
258
|
vrf1.auto_cost_set(auto_cost_value[0], :mbps)
|
|
257
259
|
pattern = /\s+auto-cost reference-bandwidth #{auto_cost_value[0]}/
|
|
258
260
|
assert_match_vrf_line(routerospf.name, vrf1.name, pattern)
|
|
@@ -261,7 +263,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
261
263
|
routerospf.destroy
|
|
262
264
|
end
|
|
263
265
|
|
|
264
|
-
def
|
|
266
|
+
def test_get_default_auto_cost
|
|
265
267
|
vrf = create_routerospfvrf
|
|
266
268
|
# NXOS specific
|
|
267
269
|
auto_cost_value = [40, RouterOspfVrf::OSPF_AUTO_COST[:gbps]]
|
|
@@ -272,7 +274,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
272
274
|
vrf.parent.destroy
|
|
273
275
|
end
|
|
274
276
|
|
|
275
|
-
def
|
|
277
|
+
def test_default_metric
|
|
276
278
|
vrf = create_routerospfvrf
|
|
277
279
|
metric = 30_000
|
|
278
280
|
vrf.default_metric = metric
|
|
@@ -280,18 +282,18 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
280
282
|
assert_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
281
283
|
assert_equal(metric, vrf.default_metric,
|
|
282
284
|
"Error: #{vrf.name} vrf, default-metric get value mismatch")
|
|
283
|
-
|
|
285
|
+
|
|
284
286
|
vrf.default_metric = vrf.default_default_metric
|
|
285
287
|
refute_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
286
288
|
vrf.parent.destroy
|
|
287
289
|
end
|
|
288
290
|
|
|
289
|
-
def
|
|
291
|
+
def test_default_metric_multiple_vrf
|
|
290
292
|
routerospf = create_routerospf
|
|
291
293
|
vrf = create_routerospfvrf(routerospf.name)
|
|
292
294
|
vrf1 = create_routerospfvrf(routerospf.name, 'testvrf')
|
|
293
295
|
metric = 35_000
|
|
294
|
-
|
|
296
|
+
|
|
295
297
|
vrf.default_metric = metric
|
|
296
298
|
pattern = /\s+default-metric #{metric}/
|
|
297
299
|
assert_match_vrf_line(routerospf.name, vrf.name, pattern)
|
|
@@ -309,7 +311,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
309
311
|
routerospf.destroy
|
|
310
312
|
end
|
|
311
313
|
|
|
312
|
-
def
|
|
314
|
+
def test_log_adjacency_changes
|
|
313
315
|
vrf = create_routerospfvrf
|
|
314
316
|
|
|
315
317
|
assert_equal(:none, vrf.log_adjacency,
|
|
@@ -328,18 +330,17 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
328
330
|
"Error: #{vrf.name} vrf, " \
|
|
329
331
|
'log-adjacency detail get value mismatch')
|
|
330
332
|
|
|
331
|
-
# set default log adjacency
|
|
332
333
|
vrf.log_adjacency = vrf.default_log_adjacency
|
|
333
334
|
pattern = /\s+log-adjacency-changes(.*)/
|
|
334
335
|
refute_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
335
336
|
vrf.parent.destroy
|
|
336
337
|
end
|
|
337
338
|
|
|
338
|
-
def
|
|
339
|
+
def test_log_adjacency_multiple_vrf
|
|
339
340
|
routerospf = create_routerospf
|
|
340
341
|
vrf = create_routerospfvrf(routerospf.name)
|
|
341
342
|
vrf1 = create_routerospfvrf(routerospf.name, 'testvrf')
|
|
342
|
-
|
|
343
|
+
|
|
343
344
|
vrf.log_adjacency = :log
|
|
344
345
|
pattern = /\s+log-adjacency-changes/
|
|
345
346
|
assert_match_vrf_line(routerospf.name, vrf.name, pattern)
|
|
@@ -347,7 +348,6 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
347
348
|
"Error: #{vrf.name} vrf, log-adjacency get value mismatch")
|
|
348
349
|
|
|
349
350
|
# vrf 1
|
|
350
|
-
# set log_adjacency
|
|
351
351
|
vrf1.log_adjacency = :detail
|
|
352
352
|
pattern = /\s+log-adjacency-changes/
|
|
353
353
|
assert_match_vrf_line(routerospf.name, vrf1.name, pattern)
|
|
@@ -357,20 +357,19 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
357
357
|
routerospf.destroy
|
|
358
358
|
end
|
|
359
359
|
|
|
360
|
-
def
|
|
360
|
+
def test_log_adjacency_multiple_vrf_2
|
|
361
361
|
routerospf = create_routerospf
|
|
362
362
|
vrf_default = create_routerospfvrf(routerospf.name)
|
|
363
363
|
vrf1 = create_routerospfvrf(routerospf.name, 'testvrf')
|
|
364
364
|
# DO NOT set log_adjacency for default vrf
|
|
365
365
|
# DO set log_adjacency for non-default vrf
|
|
366
|
-
|
|
366
|
+
|
|
367
367
|
vrf1.log_adjacency = :detail
|
|
368
368
|
pattern = /\s+log-adjacency-changes/
|
|
369
369
|
assert_match_vrf_line(routerospf.name, vrf1.name, pattern)
|
|
370
370
|
assert_equal(:detail, vrf1.log_adjacency,
|
|
371
371
|
"Error: #{vrf1.name} vrf, log-adjacency get value mismatch")
|
|
372
372
|
|
|
373
|
-
# Make sure default vrf is set to :none
|
|
374
373
|
assert_equal(:none, vrf_default.log_adjacency,
|
|
375
374
|
"Error: #{vrf_default.name} vrf_default, " \
|
|
376
375
|
'log-adjacency get value mismatch')
|
|
@@ -378,7 +377,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
378
377
|
routerospf.destroy
|
|
379
378
|
end
|
|
380
379
|
|
|
381
|
-
def
|
|
380
|
+
def test_router_id
|
|
382
381
|
vrf = create_routerospfvrf
|
|
383
382
|
id = '8.1.1.3'
|
|
384
383
|
vrf.router_id = id
|
|
@@ -386,18 +385,18 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
386
385
|
assert_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
387
386
|
assert_equal(id, vrf.router_id,
|
|
388
387
|
"Error: #{vrf.name} vrf, router-id get value mismatch")
|
|
389
|
-
|
|
388
|
+
|
|
390
389
|
vrf.router_id = vrf.default_router_id
|
|
391
390
|
refute_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
392
391
|
vrf.parent.destroy
|
|
393
392
|
end
|
|
394
393
|
|
|
395
|
-
def
|
|
394
|
+
def test_router_id_multiple_vrf
|
|
396
395
|
routerospf = create_routerospf
|
|
397
396
|
vrf = create_routerospfvrf(routerospf.name)
|
|
398
397
|
vrf1 = create_routerospfvrf(routerospf.name, 'testvrf')
|
|
399
398
|
id = '8.1.1.3'
|
|
400
|
-
|
|
399
|
+
|
|
401
400
|
vrf.router_id = id
|
|
402
401
|
pattern = /\s+router-id #{id}/
|
|
403
402
|
assert_match_vrf_line(routerospf.name, vrf.name, pattern)
|
|
@@ -406,7 +405,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
406
405
|
|
|
407
406
|
# vrf 1
|
|
408
407
|
id = '10.1.1.3'
|
|
409
|
-
|
|
408
|
+
|
|
410
409
|
vrf1.router_id = id
|
|
411
410
|
pattern = /\s+router-id #{id}/
|
|
412
411
|
assert_match_vrf_line(routerospf.name, vrf1.name, pattern)
|
|
@@ -416,11 +415,11 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
416
415
|
routerospf.destroy
|
|
417
416
|
end
|
|
418
417
|
|
|
419
|
-
def
|
|
418
|
+
def test_timer_throttle_lsa
|
|
420
419
|
vrf = create_routerospfvrf
|
|
421
420
|
lsa = [] << 100 << 500 << 1000
|
|
422
421
|
vrf.timer_throttle_lsa_set(lsa[0], lsa[1], lsa[2])
|
|
423
|
-
|
|
422
|
+
|
|
424
423
|
pattern = /\s+timers throttle lsa #{lsa[0]} #{lsa[1]} #{lsa[2]}/
|
|
425
424
|
assert_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
426
425
|
assert_equal(lsa, vrf.timer_throttle_lsa,
|
|
@@ -429,14 +428,13 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
429
428
|
vrf.parent.destroy
|
|
430
429
|
end
|
|
431
430
|
|
|
432
|
-
def
|
|
431
|
+
def test_timer_throttle_lsa_multiple_vrf
|
|
433
432
|
routerospf = create_routerospf
|
|
434
433
|
vrf = create_routerospfvrf(routerospf.name)
|
|
435
434
|
vrf1 = create_routerospfvrf(routerospf.name, 'testvrf')
|
|
436
435
|
lsa = [] << 100 << 500 << 1000
|
|
437
|
-
|
|
436
|
+
|
|
438
437
|
vrf.timer_throttle_lsa_set(lsa[0], lsa[1], lsa[2])
|
|
439
|
-
# vrf.send(:timer_throttle_lsa=, lsa[0], lsa[1], lsa[2])
|
|
440
438
|
pattern = /\s+timers throttle lsa #{lsa[0]} #{lsa[1]} #{lsa[2]}/
|
|
441
439
|
assert_match_vrf_line(routerospf.name, vrf.name, pattern)
|
|
442
440
|
assert_equal(lsa, vrf.timer_throttle_lsa,
|
|
@@ -444,9 +442,8 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
444
442
|
'get values mismatch')
|
|
445
443
|
|
|
446
444
|
lsa = [] << 300 << 700 << 2000
|
|
447
|
-
|
|
445
|
+
|
|
448
446
|
vrf1.timer_throttle_lsa_set(lsa[0], lsa[1], lsa[2])
|
|
449
|
-
# vrf1.send(:timer_throttle_lsa=, lsa[0], lsa[1], lsa[2])
|
|
450
447
|
pattern = /\s+timers throttle lsa #{lsa[0]} #{lsa[1]} #{lsa[2]}/
|
|
451
448
|
assert_match_vrf_line(routerospf.name, vrf1.name, pattern)
|
|
452
449
|
assert_equal(lsa, vrf1.timer_throttle_lsa,
|
|
@@ -456,7 +453,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
456
453
|
routerospf.destroy
|
|
457
454
|
end
|
|
458
455
|
|
|
459
|
-
def
|
|
456
|
+
def test_get_default_timer_throttle_lsa
|
|
460
457
|
vrf = create_routerospfvrf
|
|
461
458
|
lsa = [0, 5000, 5000]
|
|
462
459
|
assert_equal(lsa[0], vrf.timer_throttle_lsa_start,
|
|
@@ -474,10 +471,10 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
474
471
|
vrf.parent.destroy
|
|
475
472
|
end
|
|
476
473
|
|
|
477
|
-
def
|
|
474
|
+
def test_timer_throttle_spf
|
|
478
475
|
vrf = create_routerospfvrf
|
|
479
476
|
spf = [250, 500, 1000]
|
|
480
|
-
|
|
477
|
+
|
|
481
478
|
vrf.timer_throttle_spf_set(spf[0], spf[1], spf[2])
|
|
482
479
|
pattern = /\s+timers throttle spf #{spf[0]} #{spf[1]} #{spf[2]}/
|
|
483
480
|
assert_match_vrf_line(vrf.parent.name, vrf.name, pattern)
|
|
@@ -487,14 +484,13 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
487
484
|
vrf.parent.destroy
|
|
488
485
|
end
|
|
489
486
|
|
|
490
|
-
def
|
|
487
|
+
def test_timer_throttle_spf_multiple_vrf
|
|
491
488
|
routerospf = create_routerospf
|
|
492
489
|
vrf = create_routerospfvrf(routerospf.name)
|
|
493
490
|
vrf1 = create_routerospfvrf(routerospf.name, 'testvrf')
|
|
494
491
|
spf = [] << 250 << 500 << 1000
|
|
495
|
-
|
|
492
|
+
|
|
496
493
|
vrf.timer_throttle_spf_set(spf[0], spf[1], spf[2])
|
|
497
|
-
# vrf.send(:timer_throttle_spf=, spf[0], spf[1], spf[2])
|
|
498
494
|
pattern = /\s+timers throttle spf #{spf[0]} #{spf[1]} #{spf[2]}/
|
|
499
495
|
assert_match_vrf_line(routerospf.name, vrf.name, pattern)
|
|
500
496
|
assert_equal(spf, vrf.timer_throttle_spf,
|
|
@@ -502,9 +498,8 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
502
498
|
'get values mismatch')
|
|
503
499
|
|
|
504
500
|
spf = [] << 300 << 700 << 2000
|
|
505
|
-
|
|
501
|
+
|
|
506
502
|
vrf1.timer_throttle_spf_set(spf[0], spf[1], spf[2])
|
|
507
|
-
# vrf1.send(:timer_throttle_spf=, spf[0], spf[1], spf[2])
|
|
508
503
|
pattern = /\s+timers throttle spf #{spf[0]} #{spf[1]} #{spf[2]}/
|
|
509
504
|
assert_match_vrf_line(routerospf.name, vrf1.name, pattern)
|
|
510
505
|
assert_equal(spf, vrf1.timer_throttle_spf,
|
|
@@ -514,7 +509,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
514
509
|
routerospf.destroy
|
|
515
510
|
end
|
|
516
511
|
|
|
517
|
-
def
|
|
512
|
+
def test_get_default_timer_throttle_spf
|
|
518
513
|
vrf = create_routerospfvrf
|
|
519
514
|
spf = [200, 1000, 5000]
|
|
520
515
|
assert_equal(spf[0], vrf.default_timer_throttle_spf_start,
|
|
@@ -535,7 +530,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
535
530
|
vrf.parent.destroy
|
|
536
531
|
end
|
|
537
532
|
|
|
538
|
-
def
|
|
533
|
+
def test_create_valid_destroy_default
|
|
539
534
|
ospfname = 'ospfTest'
|
|
540
535
|
routerospf = RouterOspf.new(ospfname)
|
|
541
536
|
vrfname = 'default'
|
|
@@ -576,7 +571,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
576
571
|
)
|
|
577
572
|
# rubocop:enable Style/AlignHash
|
|
578
573
|
|
|
579
|
-
def
|
|
574
|
+
def test_collection_router_multi_vrfs
|
|
580
575
|
config_from_hash(MULTIPLE_OSPFS_MULTIPLE_VRFS)
|
|
581
576
|
routers = RouterOspf.routers
|
|
582
577
|
# validate the collection
|
|
@@ -609,7 +604,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
609
604
|
end
|
|
610
605
|
end
|
|
611
606
|
|
|
612
|
-
def
|
|
607
|
+
def test_timer_throttle_lsa_start_hold_max
|
|
613
608
|
vrf = create_routerospfvrf
|
|
614
609
|
vrf.timer_throttle_lsa_set(250, 900, 5001)
|
|
615
610
|
assert_equal(250, vrf.timer_throttle_lsa_start,
|
|
@@ -621,7 +616,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
621
616
|
vrf.parent.destroy
|
|
622
617
|
end
|
|
623
618
|
|
|
624
|
-
def
|
|
619
|
+
def test_timer_throttle_spf_start_hold_max
|
|
625
620
|
vrf = create_routerospfvrf
|
|
626
621
|
vrf.timer_throttle_spf_set(250, 900, 5001)
|
|
627
622
|
assert_equal(250, vrf.timer_throttle_spf_start,
|
|
@@ -633,7 +628,7 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
|
633
628
|
vrf.parent.destroy
|
|
634
629
|
end
|
|
635
630
|
|
|
636
|
-
def
|
|
631
|
+
def test_noninstantiated
|
|
637
632
|
routerospf = create_routerospf
|
|
638
633
|
vrf = RouterOspfVrf.new('absent', 'absent', false)
|
|
639
634
|
vrf.auto_cost
|