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.
Files changed (255) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +13 -0
  5. data/.travis.yml +4 -1
  6. data/CHANGELOG.md +81 -2
  7. data/CONTRIBUTING.md +2 -17
  8. data/Gemfile +5 -0
  9. data/README.md +92 -47
  10. data/Rakefile +23 -1
  11. data/bin/git/hooks/hook_lib +7 -0
  12. data/bin/git/hooks/pre-commit/check_unstaged_changes +18 -0
  13. data/bin/git/hooks/pre-commit/rubocop +7 -2
  14. data/bin/git/hooks/pre-commit/validate-diffs +18 -4
  15. data/bin/git/hooks/pre-commit/validate-yaml +18 -0
  16. data/bin/git/update-hooks +64 -6
  17. data/cisco_node_utils.gemspec +9 -6
  18. data/docs/README-develop-best-practices.md +149 -50
  19. data/docs/README-develop-node-utils-APIs.md +92 -42
  20. data/docs/README-maintainers.md +7 -4
  21. data/docs/README-test-execution.md +57 -0
  22. data/docs/cisco_node_utils.yaml.example +30 -0
  23. data/docs/template-router.rb +4 -0
  24. data/ext/mkrf_conf.rb +63 -0
  25. data/lib/.rubocop.yml +2 -2
  26. data/lib/cisco_node_utils.rb +5 -0
  27. data/lib/cisco_node_utils/aaa_authentication_login.rb +5 -6
  28. data/lib/cisco_node_utils/aaa_authorization_service.rb +1 -1
  29. data/lib/cisco_node_utils/ace.rb +165 -12
  30. data/lib/cisco_node_utils/acl.rb +2 -1
  31. data/lib/cisco_node_utils/bgp.rb +184 -21
  32. data/lib/cisco_node_utils/bgp_af.rb +94 -249
  33. data/lib/cisco_node_utils/bgp_neighbor.rb +94 -14
  34. data/lib/cisco_node_utils/bgp_neighbor_af.rb +75 -8
  35. data/lib/cisco_node_utils/bridge_domain.rb +183 -0
  36. data/lib/cisco_node_utils/bridge_domain_vni.rb +206 -0
  37. data/lib/cisco_node_utils/cisco_cmn_utils.rb +85 -2
  38. data/lib/cisco_node_utils/client.rb +35 -0
  39. data/lib/cisco_node_utils/client/client.rb +234 -0
  40. data/lib/cisco_node_utils/client/grpc.rb +33 -0
  41. data/lib/cisco_node_utils/client/grpc/client.rb +311 -0
  42. data/lib/cisco_node_utils/client/grpc/ems.proto +148 -0
  43. data/lib/cisco_node_utils/client/grpc/ems.rb +111 -0
  44. data/lib/cisco_node_utils/client/grpc/ems_services.rb +49 -0
  45. data/lib/cisco_node_utils/client/nxapi.rb +31 -0
  46. data/lib/cisco_node_utils/client/nxapi/client.rb +305 -0
  47. data/lib/cisco_node_utils/client/utils.rb +164 -0
  48. data/lib/cisco_node_utils/cmd_ref/README_YAML.md +222 -254
  49. data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +11 -8
  50. data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +22 -15
  51. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +11 -8
  52. data/lib/cisco_node_utils/cmd_ref/acl.yaml +21 -16
  53. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +239 -109
  54. data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +114 -55
  55. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +76 -52
  56. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +106 -62
  57. data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +71 -0
  58. data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +33 -0
  59. data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +35 -14
  60. data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +25 -0
  61. data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +23 -17
  62. data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +94 -83
  63. data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +22 -17
  64. data/lib/cisco_node_utils/cmd_ref/feature.yaml +76 -26
  65. data/lib/cisco_node_utils/cmd_ref/images.yaml +3 -2
  66. data/lib/cisco_node_utils/cmd_ref/interface.yaml +381 -153
  67. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +21 -11
  68. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +21 -21
  69. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +30 -21
  70. data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +18 -13
  71. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +26 -31
  72. data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +83 -0
  73. data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +119 -0
  74. data/lib/cisco_node_utils/cmd_ref/memory.yaml +17 -6
  75. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +10 -3
  76. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +17 -5
  77. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +33 -29
  78. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +12 -10
  79. data/lib/cisco_node_utils/cmd_ref/pim.yaml +16 -19
  80. data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +40 -25
  81. data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +17 -12
  82. data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +71 -35
  83. data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +10 -5
  84. data/lib/cisco_node_utils/cmd_ref/show_system.yaml +6 -2
  85. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +47 -43
  86. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +13 -11
  87. data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +4 -2
  88. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +23 -21
  89. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +26 -22
  90. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +19 -17
  91. data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +18 -6
  92. data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +234 -0
  93. data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +24 -9
  94. data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +5 -3
  95. data/lib/cisco_node_utils/cmd_ref/system.yaml +4 -3
  96. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +22 -20
  97. data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +27 -15
  98. data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +45 -16
  99. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +21 -11
  100. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +3 -2
  101. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +60 -32
  102. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +118 -101
  103. data/lib/cisco_node_utils/cmd_ref/vrf.yaml +54 -58
  104. data/lib/cisco_node_utils/cmd_ref/vrf_af.yaml +118 -0
  105. data/lib/cisco_node_utils/cmd_ref/vtp.yaml +19 -25
  106. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +28 -18
  107. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +34 -17
  108. data/lib/cisco_node_utils/cmd_ref/yum.yaml +6 -4
  109. data/lib/cisco_node_utils/command_reference.rb +261 -142
  110. data/lib/cisco_node_utils/constants.rb +33 -0
  111. data/lib/cisco_node_utils/encapsulation.rb +112 -0
  112. data/lib/cisco_node_utils/environment.rb +102 -0
  113. data/lib/cisco_node_utils/evpn_vni.rb +5 -3
  114. data/lib/cisco_node_utils/exceptions.rb +111 -0
  115. data/lib/cisco_node_utils/fabricpath_global.rb +52 -35
  116. data/lib/cisco_node_utils/fabricpath_topology.rb +44 -57
  117. data/lib/cisco_node_utils/feature.rb +165 -3
  118. data/lib/cisco_node_utils/interface.rb +1051 -260
  119. data/lib/cisco_node_utils/interface_channel_group.rb +11 -10
  120. data/lib/cisco_node_utils/interface_ospf.rb +1 -2
  121. data/lib/cisco_node_utils/interface_portchannel.rb +4 -12
  122. data/lib/cisco_node_utils/interface_service_vni.rb +7 -7
  123. data/lib/cisco_node_utils/itd_device_group.rb +248 -0
  124. data/lib/cisco_node_utils/itd_device_group_node.rb +144 -0
  125. data/lib/cisco_node_utils/itd_service.rb +523 -0
  126. data/lib/cisco_node_utils/logger.rb +75 -0
  127. data/lib/cisco_node_utils/node.rb +62 -192
  128. data/lib/cisco_node_utils/node_util.rb +56 -10
  129. data/lib/cisco_node_utils/overlay_global.rb +2 -2
  130. data/lib/cisco_node_utils/pim.rb +2 -13
  131. data/lib/cisco_node_utils/pim_group_list.rb +1 -1
  132. data/lib/cisco_node_utils/pim_rp_address.rb +1 -1
  133. data/lib/cisco_node_utils/platform.rb +52 -21
  134. data/lib/cisco_node_utils/portchannel_global.rb +89 -19
  135. data/lib/cisco_node_utils/radius_server.rb +168 -37
  136. data/lib/cisco_node_utils/router_ospf.rb +20 -35
  137. data/lib/cisco_node_utils/router_ospf_vrf.rb +4 -4
  138. data/lib/cisco_node_utils/snmpserver.rb +1 -6
  139. data/lib/cisco_node_utils/snmpuser.rb +6 -4
  140. data/lib/cisco_node_utils/stp_global.rb +676 -0
  141. data/lib/cisco_node_utils/syslog_server.rb +77 -18
  142. data/lib/cisco_node_utils/syslog_settings.rb +1 -1
  143. data/lib/cisco_node_utils/tacacs_server_group.rb +8 -4
  144. data/lib/cisco_node_utils/tacacs_server_host.rb +115 -25
  145. data/lib/cisco_node_utils/vdc.rb +12 -0
  146. data/lib/cisco_node_utils/version.rb +1 -1
  147. data/lib/cisco_node_utils/vlan.rb +147 -29
  148. data/lib/cisco_node_utils/vpc.rb +55 -3
  149. data/lib/cisco_node_utils/vrf.rb +72 -11
  150. data/lib/cisco_node_utils/vrf_af.rb +114 -29
  151. data/lib/cisco_node_utils/vtp.rb +34 -52
  152. data/lib/cisco_node_utils/vxlan_vtep.rb +34 -8
  153. data/lib/cisco_node_utils/vxlan_vtep_vni.rb +36 -4
  154. data/lib/minitest/environment_plugin.rb +31 -0
  155. data/lib/minitest/log_level_plugin.rb +41 -0
  156. data/spec/client_spec.rb +7 -0
  157. data/spec/environment_spec.rb +263 -0
  158. data/spec/grpc_client_spec.rb +23 -0
  159. data/spec/isolate/all_clients_spec.rb +9 -0
  160. data/spec/isolate/grpc_only_spec.rb +16 -0
  161. data/spec/isolate/no_clients_spec.rb +26 -0
  162. data/spec/isolate/nxapi_only_spec.rb +16 -0
  163. data/spec/nxapi_client_spec.rb +42 -0
  164. data/spec/schema.yaml +75 -0
  165. data/spec/shared_examples_for_clients.rb +14 -0
  166. data/spec/spec_helper.rb +91 -0
  167. data/spec/whitespace_spec.rb +10 -0
  168. data/spec/yaml_spec.rb +42 -0
  169. data/tests/.rubocop.yml +2 -2
  170. data/tests/CSCuxdublin-1.0.0-7.0.3.I3.1.lib32_n9000.rpm +0 -0
  171. data/tests/basetest.rb +96 -36
  172. data/tests/ciscotest.rb +220 -12
  173. data/tests/cmd_config.yaml +71 -49
  174. data/tests/cmd_config_invalid.yaml +1 -1
  175. data/tests/test_aaa_authentication_login.rb +1 -0
  176. data/tests/test_aaa_authentication_login_service.rb +9 -0
  177. data/tests/test_aaa_authorization_service.rb +173 -367
  178. data/tests/test_ace.rb +171 -100
  179. data/tests/test_acl.rb +10 -1
  180. data/tests/test_bgp_af.rb +395 -728
  181. data/tests/test_bgp_neighbor.rb +274 -115
  182. data/tests/test_bgp_neighbor_af.rb +178 -77
  183. data/tests/test_bridge_domain.rb +191 -0
  184. data/tests/test_bridge_domain_vni.rb +116 -0
  185. data/tests/test_client_utils.rb +111 -0
  186. data/tests/test_command_config.rb +9 -5
  187. data/tests/test_command_reference.rb +380 -102
  188. data/tests/test_dns_domain.rb +13 -3
  189. data/tests/test_domain_name.rb +13 -3
  190. data/tests/test_encapsulation.rb +77 -0
  191. data/tests/test_evpn_vni.rb +25 -7
  192. data/tests/test_fabricpath_global.rb +167 -163
  193. data/tests/test_fabricpath_topology.rb +12 -33
  194. data/tests/test_feature.rb +215 -0
  195. data/tests/test_grpc.rb +166 -0
  196. data/tests/test_interface.rb +585 -344
  197. data/tests/test_interface_bdi.rb +80 -0
  198. data/tests/test_interface_channel_group.rb +6 -3
  199. data/tests/test_interface_ospf.rb +26 -24
  200. data/tests/test_interface_portchannel.rb +1 -0
  201. data/tests/test_interface_private_vlan.rb +724 -0
  202. data/tests/test_interface_service_vni.rb +37 -66
  203. data/tests/test_interface_svi.rb +98 -101
  204. data/tests/test_interface_switchport.rb +419 -549
  205. data/tests/test_itd_device_group.rb +145 -0
  206. data/tests/test_itd_device_group_node.rb +199 -0
  207. data/tests/test_itd_service.rb +298 -0
  208. data/tests/test_logger.rb +43 -0
  209. data/tests/test_name_server.rb +11 -2
  210. data/tests/test_node.rb +16 -75
  211. data/tests/test_node_ext.rb +174 -163
  212. data/tests/test_node_util.rb +119 -0
  213. data/tests/test_ntp_config.rb +5 -1
  214. data/tests/test_ntp_server.rb +2 -2
  215. data/tests/test_nxapi.rb +221 -0
  216. data/tests/test_overlay_global.rb +47 -38
  217. data/tests/test_pim.rb +2 -0
  218. data/tests/test_pim_group_list.rb +2 -0
  219. data/tests/test_pim_rp_address.rb +2 -0
  220. data/tests/test_platform.rb +86 -39
  221. data/tests/test_portchannel_global.rb +211 -135
  222. data/tests/test_radius_global.rb +13 -5
  223. data/tests/test_radius_server.rb +256 -104
  224. data/tests/test_radius_server_group.rb +2 -0
  225. data/tests/test_router_bgp.rb +781 -485
  226. data/tests/test_router_ospf.rb +26 -103
  227. data/tests/test_router_ospf_vrf.rb +52 -57
  228. data/tests/test_snmp_notification_receiver.rb +2 -0
  229. data/tests/test_snmpcommunity.rb +2 -0
  230. data/tests/test_snmpgroup.rb +2 -0
  231. data/tests/test_snmpnotification.rb +40 -21
  232. data/tests/test_snmpserver.rb +2 -0
  233. data/tests/test_snmpuser.rb +2 -0
  234. data/tests/test_stp_global.rb +563 -0
  235. data/tests/test_syslog_server.rb +32 -8
  236. data/tests/test_syslog_settings.rb +22 -9
  237. data/tests/test_tacacs_server.rb +32 -27
  238. data/tests/test_tacacs_server_group.rb +100 -45
  239. data/tests/test_tacacs_server_host.rb +135 -43
  240. data/tests/test_vdc.rb +2 -16
  241. data/tests/test_vlan.rb +106 -54
  242. data/tests/test_vlan_mt_full.rb +11 -21
  243. data/tests/test_vlan_private.rb +669 -0
  244. data/tests/test_vpc.rb +312 -159
  245. data/tests/test_vrf.rb +122 -113
  246. data/tests/test_vrf_af.rb +238 -0
  247. data/tests/test_vtp.rb +58 -102
  248. data/tests/test_vxlan_vtep.rb +38 -17
  249. data/tests/test_vxlan_vtep_vni.rb +61 -9
  250. data/tests/test_yum.rb +49 -25
  251. metadata +122 -36
  252. data/lib/cisco_node_utils/cmd_ref/fex.yaml +0 -9
  253. data/lib/cisco_node_utils/cmd_ref/vni.yaml +0 -76
  254. data/lib/cisco_node_utils/vni.rb +0 -227
  255. data/tests/test_vni.rb +0 -106
@@ -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
- @default_show_command = "show run | include '^router ospf .*'"
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 test_routerospf_get_name
88
- name = 'ospfTest'
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
- def test_routerospf_destroy
100
- name = 'ospfTest'
101
- ospf = RouterOspf.new(name)
102
- ospf.destroy
103
- refute_show_match(pattern: /router ospf #{name}/,
104
- msg: "'router ospf ospfTest' not destroyed")
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
- def test_routerospf_create_valid_multiple_delete_one
108
- name = 'ospfTest_1'
109
- ospf_1 = RouterOspf.new(name)
110
- assert_show_match(pattern: /router ospf #{name}/,
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
- name = 'ospfTest_2'
114
- ospf_2 = RouterOspf.new(name)
115
- assert_show_match(pattern: /router ospf #{name}/,
116
- msg: "Error: #{name}, not configured")
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
- ospf_1.destroy
49
+ o2.destroy
50
+ assert_nil(RouterOspf.routers[o2_name],
51
+ "router ospf #{o2_name} still present")
119
52
 
120
- # Remove one router then check that we only have one router left
121
- routers = RouterOspf.routers
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
- config('no feature ospf')
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
- config('no feature ospf')
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 test_routerospfvrf_collection_size
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 test_routerospfvrf_collection_not_empty_valid
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 test_routerospfvrf_create_vrf_nil
181
+ def test_create_vrf_nil
180
182
  assert_raises(TypeError) { RouterOspfVrf.new(nil, 'testvrf') }
181
183
  end
182
184
 
183
- def test_routerospfvrf_create_name_zero_length
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 test_routerospfvrf_create_valid
193
+ def test_create_valid
192
194
  ospfname = 'ospfTest'
193
- # routerospf = RouterOspf.new(ospfname)
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 test_routerospfvrf_get_parent_name
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 test_routerospfvrf_get_name
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 test_routerospfvrf_destroy
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 test_routerospfvrf_auto_cost
231
+ def test_auto_cost
230
232
  vrf = create_routerospfvrf
231
233
  auto_cost_value = [400_000, RouterOspfVrf::OSPF_AUTO_COST[:mbps]]
232
- # set auto-cost
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 test_routerospfvrf_auto_cost_multiple_vrf
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
- # set auto-cost
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
- # set cost
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 test_routerospfvrf_get_default_auto_cost
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 test_routerospfvrf_default_metric
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
- # set default metric
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 test_routerospfvrf_default_metric_multiple_vrf
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
- # set metric
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 test_routerospfvrf_log_adjacency_changes
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 test_routerospfvrf_log_adjacency_multiple_vrf
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
- # set log_adjacency
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 test_routerospfvrf_log_adjacency_multiple_vrf_2
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
- # set log_adjacency
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 test_routerospfvrf_router_id
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
- # set default router id
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 test_routerospfvrf_router_id_multiple_vrf
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
- # set id
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
- # set id
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 test_routerospfvrf_timer_throttle_lsa
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
- # vrf.send(:timer_throttle_lsa=, lsa[0], lsa[1], lsa[2])
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 test_routerospfvrf_timer_throttle_lsa_multiple_vrf
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
- # set lsa
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
- # set lsa
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 test_routerospfvrf_get_default_timer_throttle_lsa
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 test_routerospfvrf_timer_throttle_spf
474
+ def test_timer_throttle_spf
478
475
  vrf = create_routerospfvrf
479
476
  spf = [250, 500, 1000]
480
- # vrf.send(:timer_throttle_spf=, spf[0], spf[1], spf[2])
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 test_routerospfvrf_timer_throttle_spf_multiple_vrf
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
- # set spf
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
- # set spf
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 test_routerospfvrf_get_default_timer_throttle_spf
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 test_routerospfvrf_create_valid_destroy_default
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 test_routerospfvrf_collection_router_multi_vrfs
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 test_routerospfvrf_timer_throttle_lsa_start_hold_max
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 test_routerospfvrf_timer_throttle_spf_start_hold_max
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 test_routerospfvrf_noninstantiated
631
+ def test_noninstantiated
637
632
  routerospf = create_routerospf
638
633
  vrf = RouterOspfVrf.new('absent', 'absent', false)
639
634
  vrf.auto_cost