cisco_node_utils 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +66 -0
  4. data/Gemfile +1 -0
  5. data/README.md +44 -43
  6. data/bin/.rubocop.yml +18 -0
  7. data/bin/show_running_yang.rb +233 -0
  8. data/cisco_node_utils.gemspec +1 -1
  9. data/docs/README-maintainers.md +1 -0
  10. data/docs/README-utilities.md +14 -0
  11. data/lib/.rubocop.yml +1 -1
  12. data/lib/cisco_node_utils/aaa_authentication_login_service.rb +8 -3
  13. data/lib/cisco_node_utils/aaa_authorization_service.rb +6 -0
  14. data/lib/cisco_node_utils/bfd_global.rb +300 -0
  15. data/lib/cisco_node_utils/bgp.rb +6 -4
  16. data/lib/cisco_node_utils/bgp_af.rb +2 -0
  17. data/lib/cisco_node_utils/bgp_neighbor.rb +14 -0
  18. data/lib/cisco_node_utils/bgp_neighbor_af.rb +4 -1
  19. data/lib/cisco_node_utils/cisco_cmn_utils.rb +126 -0
  20. data/lib/cisco_node_utils/client/client.rb +6 -2
  21. data/lib/cisco_node_utils/client/grpc/client.rb +120 -36
  22. data/lib/cisco_node_utils/client/nxapi/client.rb +6 -2
  23. data/lib/cisco_node_utils/cmd_ref/DEPRECATED.yaml +118 -0
  24. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +14 -0
  25. data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +117 -0
  26. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +7 -7
  27. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +7 -0
  28. data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +125 -0
  29. data/lib/cisco_node_utils/cmd_ref/feature.yaml +10 -0
  30. data/lib/cisco_node_utils/cmd_ref/interface.yaml +141 -49
  31. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +44 -0
  32. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +6 -0
  33. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +6 -0
  34. data/lib/cisco_node_utils/cmd_ref/ospf_area.yaml +91 -0
  35. data/lib/cisco_node_utils/cmd_ref/ospf_area_vlink.yaml +88 -0
  36. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +0 -3
  37. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +3 -3
  38. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +39 -15
  39. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +43 -21
  40. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +48 -19
  41. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +0 -0
  42. data/lib/cisco_node_utils/cmd_ref/tacacs_global.yaml +30 -0
  43. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +18 -6
  44. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +4 -0
  45. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +1 -0
  46. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +23 -10
  47. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +8 -2
  48. data/lib/cisco_node_utils/cmd_ref/yang.yaml +7 -0
  49. data/lib/cisco_node_utils/cmd_ref/yum.yaml +10 -1
  50. data/lib/cisco_node_utils/constants.rb +8 -1
  51. data/lib/cisco_node_utils/dhcp_relay_global.rb +302 -0
  52. data/lib/cisco_node_utils/exceptions.rb +29 -0
  53. data/lib/cisco_node_utils/feature.rb +28 -0
  54. data/lib/cisco_node_utils/interface.rb +493 -402
  55. data/lib/cisco_node_utils/interface_DEPRECATED.rb +513 -0
  56. data/lib/cisco_node_utils/interface_ospf.rb +126 -0
  57. data/lib/cisco_node_utils/interface_portchannel.rb +16 -0
  58. data/lib/cisco_node_utils/logger.rb +3 -0
  59. data/lib/cisco_node_utils/node.rb +29 -1
  60. data/lib/cisco_node_utils/overlay_global.rb +1 -12
  61. data/lib/cisco_node_utils/pim.rb +1 -0
  62. data/lib/cisco_node_utils/pim_group_list.rb +1 -0
  63. data/lib/cisco_node_utils/pim_rp_address.rb +1 -0
  64. data/lib/cisco_node_utils/platform.rb +9 -2
  65. data/lib/cisco_node_utils/router_ospf.rb +1 -1
  66. data/lib/cisco_node_utils/router_ospf_area.rb +416 -0
  67. data/lib/cisco_node_utils/router_ospf_area_vlink.rb +313 -0
  68. data/lib/cisco_node_utils/router_ospf_vrf.rb +17 -0
  69. data/lib/cisco_node_utils/snmp_notification_receiver.rb +27 -9
  70. data/lib/cisco_node_utils/snmpcommunity.rb +34 -8
  71. data/lib/cisco_node_utils/snmpserver.rb +4 -4
  72. data/lib/cisco_node_utils/snmpuser.rb +0 -0
  73. data/lib/cisco_node_utils/tacacs_global.rb +102 -0
  74. data/lib/cisco_node_utils/tacacs_server.rb +8 -7
  75. data/lib/cisco_node_utils/vdc.rb +25 -7
  76. data/lib/cisco_node_utils/version.rb +1 -1
  77. data/lib/cisco_node_utils/vlan.rb +30 -56
  78. data/lib/cisco_node_utils/vlan_DEPRECATED.rb +108 -0
  79. data/lib/cisco_node_utils/yang.rb +160 -0
  80. data/lib/cisco_node_utils/yum.rb +25 -32
  81. data/tests/.rubocop.yml +3 -0
  82. data/tests/ciscotest.rb +136 -19
  83. data/tests/cmd_config_invalid.yaml +1 -1
  84. data/tests/noop.rb +7 -0
  85. data/tests/tacacs_server.yaml.example +6 -0
  86. data/tests/test_aaa_authentication_login.rb +24 -1
  87. data/tests/test_aaa_authentication_login_service.rb +9 -16
  88. data/tests/test_aaa_authorization_service.rb +111 -84
  89. data/tests/test_bfd_global.rb +278 -0
  90. data/tests/test_bgp_neighbor.rb +20 -0
  91. data/tests/test_bridge_domain_vni.rb +2 -9
  92. data/tests/test_cmn_utils.rb +76 -0
  93. data/tests/test_dhcp_relay_global.rb +284 -0
  94. data/tests/test_dns_domain.rb +4 -4
  95. data/tests/test_domain_name.rb +2 -2
  96. data/tests/test_encapsulation.rb +2 -4
  97. data/tests/test_evpn_vni.rb +14 -7
  98. data/tests/test_fabricpath_global.rb +12 -13
  99. data/tests/test_feature.rb +35 -17
  100. data/tests/test_interface.rb +352 -127
  101. data/tests/test_interface_bdi.rb +2 -2
  102. data/tests/test_interface_channel_group.rb +1 -1
  103. data/tests/test_interface_ospf.rb +153 -23
  104. data/tests/test_interface_portchannel.rb +15 -6
  105. data/tests/test_interface_private_vlan.rb +200 -576
  106. data/tests/test_interface_svi.rb +5 -52
  107. data/tests/test_interface_switchport.rb +80 -240
  108. data/tests/test_itd_device_group.rb +2 -2
  109. data/tests/test_itd_device_group_node.rb +2 -2
  110. data/tests/test_itd_service.rb +1 -1
  111. data/tests/test_name_server.rb +3 -3
  112. data/tests/test_node_ext.rb +15 -17
  113. data/tests/test_ntp_config.rb +1 -1
  114. data/tests/test_ntp_server.rb +3 -3
  115. data/tests/test_nxapi.rb +1 -0
  116. data/tests/test_overlay_global.rb +15 -19
  117. data/tests/test_pim.rb +5 -5
  118. data/tests/test_pim_group_list.rb +1 -37
  119. data/tests/test_pim_rp_address.rb +1 -1
  120. data/tests/test_platform.rb +9 -11
  121. data/tests/test_portchannel_global.rb +43 -3
  122. data/tests/test_radius_server.rb +1 -1
  123. data/tests/test_radius_server_group.rb +1 -1
  124. data/tests/test_router_bgp.rb +17 -30
  125. data/tests/test_router_ospf_area.rb +433 -0
  126. data/tests/test_router_ospf_area_vlink.rb +298 -0
  127. data/tests/test_router_ospf_vrf.rb +17 -0
  128. data/tests/test_snmp_notification_receiver.rb +11 -11
  129. data/tests/test_snmpcommunity.rb +177 -69
  130. data/tests/test_snmpgroup.rb +7 -7
  131. data/tests/test_snmpserver.rb +164 -253
  132. data/tests/test_snmpuser.rb +73 -69
  133. data/tests/test_stp_global.rb +15 -15
  134. data/tests/test_syslog_settings.rb +1 -1
  135. data/tests/test_tacacs_global.rb +80 -0
  136. data/tests/test_tacacs_server.rb +129 -51
  137. data/tests/test_tacacs_server_group.rb +3 -29
  138. data/tests/test_tacacs_server_host.rb +24 -27
  139. data/tests/test_vlan.rb +57 -59
  140. data/tests/test_vlan_private.rb +271 -284
  141. data/tests/test_vpc.rb +10 -4
  142. data/tests/test_vrf.rb +2 -0
  143. data/tests/test_vrf_af.rb +2 -5
  144. data/tests/test_vtp.rb +5 -2
  145. data/tests/test_vxlan_vtep.rb +20 -44
  146. data/tests/test_vxlan_vtep_vni.rb +23 -16
  147. data/tests/test_yang.rb +369 -0
  148. data/tests/test_yum.rb +34 -42
  149. data/tests/yum_package.yaml +35 -0
  150. metadata +31 -4
  151. data/tests/test_vlan_mt_full.rb +0 -85
@@ -67,56 +67,7 @@ class TestSvi < CiscoTestCase
67
67
  end
68
68
  end
69
69
 
70
- def test_private_vlan_mapping
71
- if validate_property_excluded?('interface',
72
- 'private_vlan_mapping')
73
- assert_nil(svi.private_vlan_mapping)
74
- return
75
- end
76
- input = %w(10-20 30)
77
- result = ['10-20,30']
78
- svi.private_vlan_mapping = input
79
- assert_equal(result,
80
- svi.private_vlan_mapping,
81
- 'Error: svi private mapping not configured')
82
-
83
- input = %w(11-13)
84
- result = %w(11-13)
85
- svi.private_vlan_mapping = input
86
- assert_equal(result,
87
- svi.private_vlan_mapping,
88
- 'Error: svi private mapping not configured')
89
-
90
- input = []
91
- result = []
92
- svi.private_vlan_mapping = input
93
- input = svi.private_vlan_mapping
94
- assert_equal(input, result,
95
- 'Err: wrong config for svi pvlan mapping')
96
- end
97
-
98
- def test_private_vlan_mapping_bad_args
99
- if validate_property_excluded?('interface',
100
- 'private_vlan_mapping')
101
- assert_nil(svi.private_vlan_mapping)
102
- return
103
- end
104
- input = %w(10 20)
105
- result = ['10,20']
106
- svi.private_vlan_mapping = input
107
- input = svi.private_vlan_mapping
108
- assert_equal(result,
109
- svi.private_vlan_mapping,
110
- 'Error: svi private mapping not configured')
111
-
112
- input = %w(23)
113
- assert_raises(RuntimeError,
114
- 'svi pvlan mapping did not raise RuntimeError') do
115
- svi.private_vlan_mapping = input
116
- end
117
- end
118
-
119
- def test_prop_nil_when_ethernet
70
+ def test_prop_nil_when_eth
120
71
  skip_autostate_test?
121
72
  intf = Interface.new(interfaces[0])
122
73
  assert_nil(intf.svi_autostate,
@@ -161,6 +112,8 @@ class TestSvi < CiscoTestCase
161
112
  end
162
113
 
163
114
  def test_get_autostate
115
+ # TBD: autostate is also tested in test_interface_switchport.rb so remove
116
+ # tests from one or the other
164
117
  skip_autostate_test?
165
118
 
166
119
  config('interface vlan 23', 'no autostate')
@@ -233,14 +186,14 @@ class TestSvi < CiscoTestCase
233
186
  end
234
187
  end
235
188
 
236
- def test_create_interface_description
189
+ def test_description
237
190
  description = 'Test description'
238
191
  svi.description = description
239
192
  assert_equal(description, svi.description,
240
193
  'Error: Description not configured')
241
194
  end
242
195
 
243
- def test_system_default_svi_autostate_on_off
196
+ def test_sys_def_svi_autostate
244
197
  skip_autostate_test?
245
198
  interface = Interface.new(interfaces[0])
246
199
 
@@ -55,7 +55,6 @@ end
55
55
  # TestSwitchport - general interface switchport tests.
56
56
  class TestSwitchport < TestInterfaceSwitchport
57
57
  DEFAULT_IF_ACCESS_VLAN = 1
58
- DEFAULT_IF_SWITCHPORT_ALLOWED_VLAN = '1-4094'
59
58
  DEFAULT_IF_SWITCHPORT_NATIVE_VLAN = 1
60
59
 
61
60
  def system_default_switchport(state='')
@@ -66,7 +65,7 @@ class TestSwitchport < TestInterfaceSwitchport
66
65
  config("#{state} system default switchport shutdown")
67
66
  end
68
67
 
69
- def test_interface_get_access_vlan
68
+ def test_access_vlan
70
69
  interface.switchport_mode = :disabled
71
70
  if platform == :ios_xr
72
71
  assert_raises(Cisco::UnsupportedError) do
@@ -79,7 +78,7 @@ class TestSwitchport < TestInterfaceSwitchport
79
78
  end
80
79
  end
81
80
 
82
- def test_interface_get_access_vlan_switchport_disabled
81
+ def test_access_vlan_sw_disabled
83
82
  interface.switchport_mode = :disabled
84
83
  if platform == :ios_xr
85
84
  assert_nil(interface.access_vlan)
@@ -88,7 +87,7 @@ class TestSwitchport < TestInterfaceSwitchport
88
87
  end
89
88
  end
90
89
 
91
- def test_interface_get_access_vlan_switchport_trunk
90
+ def test_access_vlan_sw_trunk
92
91
  interface.switchport_mode = :disabled
93
92
  if platform == :ios_xr
94
93
  assert_raises(Cisco::UnsupportedError) do
@@ -101,24 +100,22 @@ class TestSwitchport < TestInterfaceSwitchport
101
100
  end
102
101
  end
103
102
 
104
- def test_switchport_vtp_disabled_feature_disabled_eth1_1
103
+ def test_sw_vtp_disabled
105
104
  refute(interface.switchport_vtp,
106
105
  'Error: interface, access, vtp not disabled')
107
- end
108
106
 
109
- def test_switchport_vtp_disabled_feature_disabled_mgmt_intf
107
+ # mgmt
110
108
  interface = Interface.new(mgmt_intf)
111
109
  refute(interface.switchport_vtp,
112
110
  'Error: interface, access, vtp not disabled')
113
- end
114
111
 
115
- def test_switchport_vtp_disabled_unsupported_mode_disabled
112
+ # no switchport
116
113
  interface.switchport_mode = :disabled
117
114
  refute(interface.switchport_vtp,
118
115
  'Error: interface, access, vtp not disabled')
119
116
  end
120
117
 
121
- def test_switchport_vtp_disabled_unsupported_mode_fex
118
+ def test_sw_vtp_disabled_fex
122
119
  if validate_property_excluded?('feature', 'fex')
123
120
  assert_raises(Cisco::UnsupportedError) do
124
121
  Feature.fex_enable
@@ -135,23 +132,19 @@ class TestSwitchport < TestInterfaceSwitchport
135
132
  refute(interface.switchport_vtp,
136
133
  'Error: interface, access, vtp not disabled')
137
134
  rescue Cisco::CliError => e
138
- msg = "[#{interfaces[0]}] switchport_mode is not supported " \
139
- 'on this interface'
140
- assert_equal(msg.downcase, e.message)
135
+ incompatible_interface?(e.message)
141
136
  end
142
137
 
143
- def test_switchport_autostate_disabled_feature_disabled_eth1_1
138
+ def test_sw_autostate_disabled
144
139
  refute(interface.switchport_autostate_exclude,
145
140
  'Error: interface, access, autostate exclude not disabled')
146
- end
147
141
 
148
- def test_switchport_autostate_disabled_feature_disabled_mgmt_intf
142
+ # mgmt
149
143
  interface = Interface.new(mgmt_intf)
150
144
  refute(interface.switchport_autostate_exclude,
151
145
  'Error: interface, access, autostate exclude not disabled')
152
- end
153
146
 
154
- def test_switchport_autostate_disabled_unsupported_mode
147
+ # no switchport
155
148
  if platform == :ios_xr
156
149
  assert_nil(interface.switchport_autostate_exclude)
157
150
  else
@@ -161,7 +154,7 @@ class TestSwitchport < TestInterfaceSwitchport
161
154
  end
162
155
  end
163
156
 
164
- def test_raise_error_switchport_not_enabled
157
+ def test_sw_mode_disabled
165
158
  if platform == :ios_xr
166
159
  assert_raises(Cisco::UnsupportedError) do
167
160
  interface.switchport_autostate_exclude = true
@@ -175,18 +168,16 @@ class TestSwitchport < TestInterfaceSwitchport
175
168
  end
176
169
  end
177
170
 
178
- def test_interface_switchport_mode_invalid
171
+ def test_sw_mode_invalid
179
172
  assert_raises(ArgumentError) { interface.switchport_mode = :unknown }
180
- end
181
173
 
182
- def test_interface_switchport_mode_not_supported
183
174
  interface = Interface.new(mgmt_intf)
184
175
  assert_raises(Cisco::CliError, Cisco::UnsupportedError) do
185
176
  interface.switchport_mode = :access
186
177
  end
187
178
  end
188
179
 
189
- def test_interface_switchport_mode_valid
180
+ def test_sw_mode_valid
190
181
  if platform == :ios_xr
191
182
  # We don't support any switchport modes on IOS XR
192
183
  # but we allow the user to set :disabled since that's the default.
@@ -229,7 +220,7 @@ class TestSwitchport < TestInterfaceSwitchport
229
220
  end
230
221
  end
231
222
 
232
- def test_interface_switchport_mode_valid_fex
223
+ def test_sw_mode_valid_fex
233
224
  if validate_property_excluded?('feature', 'fex')
234
225
  assert_raises(Cisco::UnsupportedError) do
235
226
  Feature.fex_enable
@@ -244,10 +235,11 @@ class TestSwitchport < TestInterfaceSwitchport
244
235
  end
245
236
 
246
237
  interface.switchport_mode = :fex_fabric
247
- assert_equal(interface.switchport_mode, :fex_fabric)
238
+ rescue Cisco::CliError => e
239
+ incompatible_interface?(e.message)
248
240
  end
249
241
 
250
- def test_interface_switchport_trunk_allowed_vlan
242
+ def test_sw_trunk_allowed_vlan
251
243
  if platform == :ios_xr
252
244
  assert_nil(interface.default_switchport_trunk_allowed_vlan)
253
245
  assert_nil(interface.switchport_trunk_allowed_vlan)
@@ -263,7 +255,7 @@ class TestSwitchport < TestInterfaceSwitchport
263
255
  else
264
256
  interface.switchport_enable
265
257
  interface.switchport_trunk_allowed_vlan = 'all'
266
- assert_equal(DEFAULT_IF_SWITCHPORT_ALLOWED_VLAN,
258
+ assert_equal(interface.default_switchport_trunk_allowed_vlan,
267
259
  interface.switchport_trunk_allowed_vlan)
268
260
 
269
261
  interface.switchport_trunk_allowed_vlan = '20'
@@ -274,22 +266,24 @@ class TestSwitchport < TestInterfaceSwitchport
274
266
 
275
267
  interface.switchport_trunk_allowed_vlan =
276
268
  interface.default_switchport_trunk_allowed_vlan
277
- assert_equal(DEFAULT_IF_SWITCHPORT_ALLOWED_VLAN,
269
+ assert_equal(interface.default_switchport_trunk_allowed_vlan,
278
270
  interface.switchport_trunk_allowed_vlan)
279
271
 
280
- assert_raises(RuntimeError) do
281
- interface.switchport_trunk_allowed_vlan = 'hello'
282
- end
283
-
284
272
  interface.switchport_trunk_allowed_vlan = 'none'
285
273
  assert_equal('none', interface.switchport_trunk_allowed_vlan)
286
274
 
287
275
  interface.switchport_trunk_allowed_vlan = '20, 30'
288
276
  assert_equal('20,30', interface.switchport_trunk_allowed_vlan)
277
+
278
+ # Some images have behavior where 'vlan add' is separate line
279
+ # This behavior is triggered for vlan ranges that exceed character limit
280
+ vlans = '500-528,530,532,534,587,590-593,597-598,600,602,604'
281
+ interface.switchport_trunk_allowed_vlan = vlans
282
+ assert_equal(vlans, interface.switchport_trunk_allowed_vlan)
289
283
  end
290
284
  end
291
285
 
292
- def test_interface_switchport_trunk_native_vlan
286
+ def test_sw_trunk_native_vlan
293
287
  if platform == :ios_xr
294
288
  assert_nil(interface.switchport_trunk_native_vlan)
295
289
  assert_nil(interface.default_switchport_trunk_native_vlan)
@@ -309,14 +303,10 @@ class TestSwitchport < TestInterfaceSwitchport
309
303
  interface.default_switchport_trunk_native_vlan
310
304
  assert_equal(DEFAULT_IF_SWITCHPORT_NATIVE_VLAN,
311
305
  interface.switchport_trunk_native_vlan)
312
-
313
- assert_raises(RuntimeError) do
314
- interface.switchport_trunk_native_vlan = '20, 30'
315
- end
316
306
  end
317
307
  end
318
308
 
319
- def test_system_default_switchport_on_off
309
+ def test_sys_def_sw_on_off
320
310
  if platform == :nexus
321
311
  system_default_switchport('')
322
312
  assert(interface.system_default_switchport,
@@ -333,7 +323,7 @@ class TestSwitchport < TestInterfaceSwitchport
333
323
  flunk(e.message)
334
324
  end
335
325
 
336
- def test_system_default_switchport_shutdown_on_off
326
+ def test_sys_def_sw_shut_on_off
337
327
  if platform == :nexus
338
328
  system_default_switchport_shutdown('no ')
339
329
  refute(interface.system_default_switchport_shutdown,
@@ -346,7 +336,7 @@ class TestSwitchport < TestInterfaceSwitchport
346
336
  'Test for enabled - failed')
347
337
  end
348
338
 
349
- def test_interface_svi_command_on_non_vlan
339
+ def test_svi_cmd_on_non_vlan
350
340
  assert_raises(RuntimeError) { interface.svi_autostate = true }
351
341
  assert_raises(RuntimeError) { interface.svi_management = true }
352
342
  end
@@ -355,7 +345,7 @@ end
355
345
  # TestInterfaceSwitchportSvi
356
346
  # Minitest for Interface switchport configuration in combo with interface-vlan
357
347
  # Not applicable to IOS XR
358
- class TestInterfaceSwitchportSvi < TestInterfaceSwitchport
348
+ class TestInterfaceSwSvi < TestInterfaceSwitchport
359
349
  attr_reader :svi
360
350
 
361
351
  def setup
@@ -365,121 +355,53 @@ class TestInterfaceSwitchportSvi < TestInterfaceSwitchport
365
355
  end
366
356
 
367
357
  def teardown
368
- svi.destroy unless platform == :ios_xr
358
+ svi.destroy unless platform == :ios_xr || svi.nil?
369
359
  super
370
360
  end
371
361
 
372
- def cmd_ref_switchport_autostate_exclude
373
- ref = cmd_ref.lookup('interface',
374
- 'switchport_autostate_exclude')
375
- assert(ref, 'Error, reference not found for switchport_autostate_exclude')
376
- ref
377
- end
378
-
379
- def test_switchport_autostate_disabled_feature_enabled
380
- refute(interface.switchport_autostate_exclude,
381
- 'Error: interface, access, autostate exclude not disabled')
382
- end
383
-
384
- def test_switchport_autostate_enabled_access
385
- config("interface ethernet #{interfaces_id[0]}",
386
- 'switchport',
387
- 'switchport autostate exclude')
388
-
389
- cmd_ref = cmd_ref_switchport_autostate_exclude
390
- if cmd_ref.setter?
391
- assert(interface.switchport_autostate_exclude,
392
- 'Error: interface, access, autostate exclude not enabled')
393
- else
394
- assert_equal(interface.default_switchport_autostate_exclude,
395
- interface.switchport_autostate_exclude,
396
- 'Error: interface, access, autostate exclude not disabled')
397
- end
398
- end
399
-
400
- def test_switchport_autostate_disabled_access
401
- refute(interface.switchport_autostate_exclude,
402
- 'Error: interface, access, autostate exclude not disabled')
403
- end
404
-
405
- def test_switchport_autostate_enabled_trunk
406
- interface.switchport_mode = :trunk
407
- config("interface ethernet #{interfaces_id[0]}",
408
- 'switchport autostate exclude')
409
-
410
- cmd_ref = cmd_ref_switchport_autostate_exclude
411
- if cmd_ref.setter?
412
- assert(interface.switchport_autostate_exclude,
413
- 'Error: interface, access, autostate exclude not enabled')
414
- else
415
- assert_equal(interface.default_switchport_autostate_exclude,
416
- interface.switchport_autostate_exclude,
417
- 'Error: interface, access, autostate exclude not disabled')
362
+ def test_sw_autostate
363
+ i = interface
364
+ if validate_property_excluded?('interface', 'switchport_autostate_exclude')
365
+ assert_raises(Cisco::UnsupportedError) do
366
+ i.switchport_autostate_exclude = false
367
+ end
368
+ return
418
369
  end
419
- end
420
370
 
421
- def test_switchport_autostate_disabled_trunk
422
- interface.switchport_mode = :trunk
423
- config("interface ethernet #{interfaces_id[0]}",
424
- 'no switchport autostate exclude')
371
+ default = i.default_switchport_autostate_exclude
425
372
 
426
- refute(interface.switchport_autostate_exclude,
427
- 'Error: interface, access, autostate exclude not disabled')
428
- end
373
+ # access
374
+ i.switchport_mode = :access
375
+ assert_equal(default, i.switchport_autostate_exclude)
429
376
 
430
- def test_switchport_autostate_access
431
- # switchport must be enabled to configure autostate
432
- interface.switchport_enable(true)
377
+ i.switchport_autostate_exclude = true
378
+ assert(i.switchport_autostate_exclude)
433
379
 
434
- interface.switchport_autostate_exclude = true
435
- assert(interface.switchport_autostate_exclude,
436
- 'Error: interface, access, autostate exclude not enabled')
380
+ i.switchport_autostate_exclude = false
381
+ refute(i.switchport_autostate_exclude)
437
382
 
438
- interface.switchport_autostate_exclude = false
439
- refute(interface.switchport_autostate_exclude,
440
- 'Error: interface, access, autostate exclude not disabled')
383
+ i.switchport_autostate_exclude = default
384
+ assert_equal(default, i.switchport_autostate_exclude)
441
385
 
442
- result = interface.default_switchport_autostate_exclude
443
- interface.switchport_autostate_exclude = result
444
- assert_equal(result, interface.switchport_autostate_exclude,
445
- 'Error: interface, access, autostate exclude not disabled')
446
- end
447
-
448
- def test_switchport_autostate_trunk
449
- interface.switchport_mode = :trunk
386
+ # trunk
387
+ i.switchport_mode = :trunk
388
+ i.switchport_autostate_exclude = true
389
+ assert(i.switchport_autostate_exclude)
450
390
 
451
- # switchport must be enabled to configure autostate
452
- interface.switchport_enable(true)
391
+ i.switchport_autostate_exclude = false
392
+ refute(i.switchport_autostate_exclude)
453
393
 
454
- interface.switchport_autostate_exclude = true
455
- assert(interface.switchport_autostate_exclude,
456
- 'Error: interface, access, autostate exclude not enabled')
394
+ i.switchport_autostate_exclude = default
395
+ assert_equal(default, i.switchport_autostate_exclude)
457
396
 
458
- interface.switchport_autostate_exclude = false
459
- refute(interface.switchport_autostate_exclude,
460
- 'Error: interface, access, autostate exclude not disabled')
461
-
462
- result = interface.default_switchport_autostate_exclude
463
- interface.switchport_autostate_exclude = result
464
- assert_equal(result, interface.switchport_autostate_exclude,
465
- 'Error: interface, access, autostate exclude not disabled')
466
- end
467
-
468
- def test_switchport_autostate_unsupported_mode_disabled
397
+ # disabled
469
398
  interface.switchport_mode = :disabled
470
-
471
399
  assert_raises RuntimeError do
472
400
  interface.switchport_autostate_exclude = true
473
401
  end
474
- assert_raises RuntimeError do
475
- interface.switchport_autostate_exclude = false
476
- end
477
- end
478
402
 
479
- def test_set_switchport_autostate_true_unsupported_mgmt_intf
480
- interface = Interface.new(mgmt_intf)
481
403
  assert_raises RuntimeError do
482
- interface.switchport_autostate_exclude = true
404
+ interface.switchport_autostate_exclude = false
483
405
  end
484
406
  end
485
407
  end
@@ -487,7 +409,7 @@ end
487
409
  # TestInterfaceSwitchportVtp
488
410
  # Minitest for Interface switchport configuration in combo with Vtp class
489
411
  # Not applicable to IOS XR
490
- class TestInterfaceSwitchportVtp < TestInterfaceSwitchport
412
+ class TestInterfaceSwVtp < TestInterfaceSwitchport
491
413
  attr_reader :vtp
492
414
 
493
415
  def setup
@@ -501,131 +423,49 @@ class TestInterfaceSwitchportVtp < TestInterfaceSwitchport
501
423
  super
502
424
  end
503
425
 
504
- def test_switchport_vtp_disabled_feature_enabled
505
- refute(interface.switchport_vtp,
506
- 'Error: interface, access, vtp not disabled')
507
- end
508
-
509
- def test_switchport_vtp_enabled_access
510
- platform_supports_vtp_switchport_access?
511
- interface.switchport_mode = :access
512
- config("interface ethernet #{interfaces_id[0]}", 'vtp')
513
-
514
- assert(interface.switchport_vtp,
515
- 'Error: interface, access, vtp not enabled')
516
- end
517
-
518
- def test_switchport_vtp_disabled_access
519
- interface.switchport_mode = :access
520
- config("interface ethernet #{interfaces_id[0]}", 'no vtp')
521
-
426
+ def test_mode_access
427
+ # Basic test
522
428
  refute(interface.switchport_vtp,
523
429
  'Error: interface, access, vtp not disabled')
524
- end
525
-
526
- def test_switchport_vtp_enabled_trunk
527
- interface.switchport_mode = :trunk
528
- config("interface ethernet #{interfaces_id[0]}", 'vtp')
529
-
530
- assert(interface.switchport_vtp,
531
- 'Error: interface, trunk, vtp not enabled')
532
- end
533
430
 
534
- def test_switchport_vtp_disabled_trunk
535
- interface.switchport_mode = :trunk
536
- refute(interface.switchport_vtp,
537
- 'Error: interface, trunk, vtp not disabled')
538
- end
539
-
540
- def test_set_switchport_vtp_default_access
431
+ # Now :access
541
432
  platform_supports_vtp_switchport_access?
542
433
  interface.switchport_mode = :access
543
434
 
544
- interface.switchport_vtp = interface.default_switchport_vtp
545
- refute(interface.switchport_vtp,
546
- 'Error:(1) mode :access, vtp should be default (false)')
435
+ default = interface.default_switchport_vtp
436
+ assert_equal(default, interface.switchport_vtp)
547
437
 
548
438
  interface.switchport_vtp = true
549
- assert(interface.switchport_vtp,
550
- 'Error:(2) mode :access, vtp should be true')
551
-
552
- interface.switchport_vtp = interface.default_switchport_vtp
553
- refute(interface.switchport_vtp,
554
- 'Error:(3) mode :access, vtp should be default (false)')
555
- end
556
-
557
- def test_set_switchport_vtp_default_trunk
558
- interface.switchport_mode = :trunk
559
- interface.switchport_vtp = interface.default_switchport_vtp
560
- refute(interface.switchport_vtp,
561
- 'Error:(1) mode :trunk, vtp should be default (false)')
439
+ assert(interface.switchport_vtp)
562
440
 
563
- interface.switchport_vtp = true
564
- assert(interface.switchport_vtp,
565
- 'Error:(2) mode :trunk, vtp should be true')
441
+ interface.switchport_vtp = false
442
+ refute(interface.switchport_vtp)
566
443
 
567
- interface.switchport_vtp = interface.default_switchport_vtp
568
- refute(interface.switchport_vtp,
569
- 'Error:(3) mode :trunk, vtp should be default (false)')
444
+ interface.switchport_vtp = default
445
+ assert_equal(default, interface.switchport_vtp)
570
446
  end
571
447
 
572
- def test_set_switchport_vtp_true_access
448
+ def test_mode_trunk
573
449
  platform_supports_vtp_switchport_access?
574
- interface.switchport_mode = :access
575
- interface.switchport_vtp = true
576
- assert(interface.switchport_vtp,
577
- 'Error: interface, access, vtp not enabled')
578
- end
579
-
580
- def test_set_switchport_vtp_true_trunk
581
450
  interface.switchport_mode = :trunk
582
- interface.switchport_vtp = true
583
- assert(interface.switchport_vtp,
584
- 'Error: interface, access, vtp not enabled')
585
- end
586
451
 
587
- def test_set_switchport_vtp_true_unsupported_mode_disabled
588
- interface.switchport_mode = :disabled
589
- refute(interface.switchport_vtp,
590
- 'Error: interface, access, vtp is enabled')
591
- end
592
-
593
- def test_set_switchport_vtp_true_unsupported_mgmt_intf
594
- interface = Interface.new(mgmt_intf)
452
+ default = interface.default_switchport_vtp
453
+ assert_equal(default, interface.switchport_vtp)
595
454
 
596
455
  interface.switchport_vtp = true
597
- refute(interface.switchport_vtp,
598
- 'Error: interface, access, vtp is enabled')
599
- end
456
+ assert(interface.switchport_vtp)
600
457
 
601
- def test_set_switchport_vtp_false_access
602
- interface.switchport_mode = :access
603
458
  interface.switchport_vtp = false
604
- refute(interface.switchport_vtp,
605
- 'Error: interface, access, vtp not disabled')
606
- end
459
+ refute(interface.switchport_vtp)
607
460
 
608
- def test_set_switchport_vtp_false_trunk
609
- interface.switchport_mode = :trunk
610
- interface.switchport_vtp = false
611
- refute(interface.switchport_vtp,
612
- 'Error: interface, access, vtp not disabled')
461
+ interface.switchport_vtp = default
462
+ assert_equal(default, interface.switchport_vtp)
613
463
  end
614
464
 
615
- def test_set_switchport_vtp_false_unsupported_mode_disabled
465
+ def test_mode_disabled
466
+ platform_supports_vtp_switchport_access?
616
467
  interface.switchport_mode = :disabled
617
- interface.switchport_vtp = false
618
468
  refute(interface.switchport_vtp,
619
- 'Error: mode :disabled, vtp should be false')
620
- end
621
-
622
- def test_default_switchport_vtp
623
- [:access, :disabled].each do |mode|
624
- interface.switchport_mode = mode
625
- interface.switchport_vtp = interface.default_switchport_vtp
626
- assert_equal(interface.switchport_vtp, interface.default_switchport_vtp,
627
- "Error: mode :#{mode}, "\
628
- 'switchport_vtp should equal default_switchport_vtp')
629
- end
469
+ 'Error: interface, access, vtp is enabled')
630
470
  end
631
471
  end