cisco_node_utils 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -1
  3. data/Gemfile +1 -1
  4. data/LICENSE +1 -1
  5. data/README.md +1 -1
  6. data/cisco_node_utils.gemspec +1 -1
  7. data/docs/README-develop-node-utils-APIs.md +2 -0
  8. data/docs/README-maintainers.md +45 -80
  9. data/lib/cisco_node_utils/ace.rb +24 -43
  10. data/lib/cisco_node_utils/bfd_global.rb +1 -0
  11. data/lib/cisco_node_utils/bgp_af_aggr_addr.rb +207 -0
  12. data/lib/cisco_node_utils/bgp_neighbor.rb +8 -5
  13. data/lib/cisco_node_utils/bgp_neighbor_af.rb +8 -6
  14. data/lib/cisco_node_utils/cisco_cmn_utils.rb +40 -0
  15. data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +1 -1
  16. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +8 -4
  17. data/lib/cisco_node_utils/cmd_ref/bgp_af_aa.yaml +38 -0
  18. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +9 -4
  19. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +8 -3
  20. data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +2 -1
  21. data/lib/cisco_node_utils/cmd_ref/feature.yaml +5 -0
  22. data/lib/cisco_node_utils/cmd_ref/interface.yaml +8 -0
  23. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +7 -3
  24. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +3 -3
  25. data/lib/cisco_node_utils/cmd_ref/ntp_auth_key.yaml +10 -0
  26. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +13 -0
  27. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +10 -2
  28. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +6 -1
  29. data/lib/cisco_node_utils/cmd_ref/route_map.yaml +8 -0
  30. data/lib/cisco_node_utils/cmd_ref/span_session.yaml +65 -0
  31. data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +2 -1
  32. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +22 -3
  33. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +2 -1
  34. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +6 -3
  35. data/lib/cisco_node_utils/cmd_ref/yum.yaml +48 -4
  36. data/lib/cisco_node_utils/command_reference.rb +5 -2
  37. data/lib/cisco_node_utils/feature.rb +14 -1
  38. data/lib/cisco_node_utils/interface.rb +13 -0
  39. data/lib/cisco_node_utils/interface_channel_group.rb +33 -25
  40. data/lib/cisco_node_utils/itd_device_group.rb +17 -37
  41. data/lib/cisco_node_utils/itd_service.rb +9 -32
  42. data/lib/cisco_node_utils/node.rb +12 -4
  43. data/lib/cisco_node_utils/ntp_auth_key.rb +67 -0
  44. data/lib/cisco_node_utils/ntp_config.rb +19 -1
  45. data/lib/cisco_node_utils/ntp_server.rb +28 -27
  46. data/lib/cisco_node_utils/route_map.rb +33 -51
  47. data/lib/cisco_node_utils/snmpuser.rb +2 -2
  48. data/lib/cisco_node_utils/span_session.rb +149 -0
  49. data/lib/cisco_node_utils/upgrade.rb +21 -17
  50. data/lib/cisco_node_utils/version.rb +2 -2
  51. data/lib/cisco_node_utils/vlan.rb +1 -1
  52. data/lib/cisco_node_utils/vpc.rb +40 -0
  53. data/lib/cisco_node_utils/yum.rb +136 -13
  54. data/spec/schema.yaml +2 -0
  55. data/tests/ciscotest.rb +36 -0
  56. data/tests/test_ace.rb +6 -0
  57. data/tests/test_bfd_global.rb +1 -7
  58. data/tests/test_bgp_af.rb +2 -2
  59. data/tests/test_bgp_af_aa.rb +108 -0
  60. data/tests/test_bgp_neighbor.rb +2 -1
  61. data/tests/test_bgp_neighbor_af.rb +6 -6
  62. data/tests/test_dhcp_relay_global.rb +1 -0
  63. data/tests/test_interface.rb +18 -2
  64. data/tests/test_interface_channel_group.rb +47 -0
  65. data/tests/test_interface_svi.rb +1 -1
  66. data/tests/test_ntp_auth_key.rb +77 -0
  67. data/tests/test_ntp_config.rb +51 -4
  68. data/tests/test_ntp_server.rb +69 -9
  69. data/tests/test_overlay_global.rb +1 -0
  70. data/tests/test_route_map.rb +13 -24
  71. data/tests/test_router_bgp.rb +14 -9
  72. data/tests/test_span_session.rb +155 -0
  73. data/tests/test_stp_global.rb +1 -0
  74. data/tests/test_upgrade.rb +2 -3
  75. data/tests/test_vlan.rb +24 -3
  76. data/tests/test_vlan_private.rb +1 -1
  77. data/tests/test_vpc.rb +42 -17
  78. data/tests/test_vxlan_vtep.rb +1 -0
  79. data/tests/test_vxlan_vtep_vni.rb +5 -1
  80. data/tests/test_yum.rb +7 -30
  81. data/tests/yum_package.yaml +20 -0
  82. metadata +13 -3
@@ -70,6 +70,7 @@ class TestOverlayGlobal < CiscoTestCase
70
70
  def test_dup_host_mac_detection
71
71
  o = OverlayGlobal.new
72
72
 
73
+ skip_incompat_version?('overlay_global', 'dup_host_mac_detection')
73
74
  # Set to a non-default value
74
75
  val = [160, 16]
75
76
  o.dup_host_mac_detection_set(*val)
@@ -20,12 +20,6 @@ def evergreen_or_later?
20
20
  true
21
21
  end
22
22
 
23
- def older_n9k?
24
- return true if Utils.image_version?(/7.0.3.I2|I3|I4/) &&
25
- node.product_id[/N9K/]
26
- false
27
- end
28
-
29
23
  def dplus_n9k?
30
24
  return true if Utils.image_version?(/7.0.3.I4/) &&
31
25
  node.product_id[/N9K/]
@@ -340,9 +334,9 @@ class TestRouteMap < CiscoTestCase
340
334
  end
341
335
 
342
336
  def test_match_metric
343
- # bug CSCvc82934 on fretta and n9k running dplus
344
- skip('platform not supported for this test') if node.product_id[/N9.*-F/] ||
345
- dplus_n9k?
337
+ # bug CSCvc82934 on n9k running dplus
338
+ skip('platform not supported for this test') if dplus_n9k?
339
+ skip_incompat_version?('route_map', 'match_metric')
346
340
  rm = create_route_map
347
341
  assert_equal(rm.default_match_metric, rm.match_metric)
348
342
  metric = [%w(1 0), %w(8 0), %w(224 9), %w(23 0), %w(5 8), %w(6 0)]
@@ -430,7 +424,6 @@ class TestRouteMap < CiscoTestCase
430
424
  end
431
425
 
432
426
  def test_match_ospf_area
433
- skip('platform not supported for this test') unless evergreen_or_later?
434
427
  rm = create_route_map
435
428
  if validate_property_excluded?('route_map', 'match_ospf_area')
436
429
  assert_nil(rm.match_ospf_area)
@@ -439,6 +432,7 @@ class TestRouteMap < CiscoTestCase
439
432
  end
440
433
  return
441
434
  end
435
+ skip_incompat_version?('route_map', 'match_ospf_area')
442
436
  assert_equal(rm.default_match_ospf_area, rm.match_ospf_area)
443
437
  array = %w(10 7 222)
444
438
  rm.match_ospf_area = array
@@ -678,7 +672,7 @@ class TestRouteMap < CiscoTestCase
678
672
  end
679
673
 
680
674
  def test_set_ipv4_next_hop_redist
681
- skip('platform not supported for this test') unless evergreen_or_later?
675
+ skip_incompat_version?('route_map', 'set_ipv4_next_hop_redist')
682
676
  rm = lset_ip_next_hop_helper(v4red: true)
683
677
  assert(rm.set_ipv4_next_hop_redist)
684
678
  hash = {}
@@ -1001,9 +995,8 @@ class TestRouteMap < CiscoTestCase
1001
995
 
1002
996
  def test_set_ipv4_next_hop_load_share
1003
997
  # bug on fretta
1004
- skip('platform not supported for this test') if node.product_id[/(N5|N6|N9.*-F)/]
1005
- # bug on old n9k
1006
- skip('platform not supported for this test') if older_n9k?
998
+ skip('platform not supported for this test') if node.product_id[/(N5|N6)/]
999
+ skip_incompat_version?('route_map', 'set_ipv4_next_hop_load_share')
1007
1000
  arr = %w(1.1.1.1 2.2.2.2 3.3.3.3)
1008
1001
  rm = lset_ip_next_hop_helper(v4nh: arr)
1009
1002
  assert_equal(arr, rm.set_ipv4_next_hop)
@@ -1034,7 +1027,7 @@ class TestRouteMap < CiscoTestCase
1034
1027
  end
1035
1028
 
1036
1029
  def test_set_ipv6_next_hop_redist
1037
- skip('platform not supported for this test') unless evergreen_or_later?
1030
+ skip_incompat_version?('route_map', 'set_ipv6_next_hop_redist')
1038
1031
  rm = lset_ip_next_hop_helper(v6red: true)
1039
1032
  assert(rm.set_ipv6_next_hop_redist)
1040
1033
  hash = {}
@@ -1102,9 +1095,8 @@ class TestRouteMap < CiscoTestCase
1102
1095
 
1103
1096
  def test_set_ipv6_next_hop_load_share
1104
1097
  # bug on fretta
1105
- skip('platform not supported for this test') if node.product_id[/(N5|N6|N9.*-F)/]
1106
- # bug on old n9k
1107
- skip('platform not supported for this test') if older_n9k?
1098
+ skip('platform not supported for this test') if node.product_id[/(N5|N6)/]
1099
+ skip_incompat_version?('route_map', 'set_ipv6_next_hop_load_share')
1108
1100
  arr = %w(2000::1 2000::11 2000::22)
1109
1101
  rm = lset_ip_next_hop_helper(v6nh: arr)
1110
1102
  assert_equal(arr, rm.set_ipv6_next_hop)
@@ -1128,8 +1120,7 @@ class TestRouteMap < CiscoTestCase
1128
1120
  def test_set_community_no_asn
1129
1121
  # bug on n5/6k
1130
1122
  skip('platform not supported for this test') if node.product_id[/(N5|N6)/]
1131
- # bug on old n9k
1132
- skip('platform not supported for this test') if older_n9k?
1123
+ skip_incompat_version?('route_map', 'set_community')
1133
1124
  rm = create_route_map
1134
1125
  assert_equal(rm.default_set_community_additive,
1135
1126
  rm.set_community_additive)
@@ -1228,8 +1219,7 @@ class TestRouteMap < CiscoTestCase
1228
1219
  end
1229
1220
 
1230
1221
  def test_set_community_asn
1231
- # bug on old n9k
1232
- skip('platform not supported for this test') if older_n9k?
1222
+ skip_incompat_version?('route_map', 'set_community')
1233
1223
  rm = create_route_map
1234
1224
  none = false
1235
1225
  noadv = true
@@ -1285,8 +1275,7 @@ class TestRouteMap < CiscoTestCase
1285
1275
  end
1286
1276
 
1287
1277
  def test_extcommunity_4bytes
1288
- # bug on fretta
1289
- skip('platform not supported for this test') if node.product_id[/N9.*-F/]
1278
+ skip_incompat_version?('route_map', 'set_extcommunity_4bytes')
1290
1279
  rm = create_route_map
1291
1280
  assert_equal(rm.default_set_extcommunity_4bytes_transitive,
1292
1281
  rm.set_extcommunity_4bytes_transitive)
@@ -64,7 +64,7 @@ def newer_image_version?
64
64
  new = true
65
65
  new = false if Utils.image_version?(/7.0.3.I2|I3|I4/) ||
66
66
  node.product_id[/(N5|N6|N7|N9.*-F)/]
67
- new = true if Utils.image_version?(/8.0/)
67
+ new = true if Utils.image_version?(/8.0|8.1/)
68
68
  new
69
69
  end
70
70
 
@@ -503,7 +503,7 @@ class TestRouterBgp < CiscoTestCase
503
503
  end
504
504
 
505
505
  def test_disable_policy_batching_ipv4
506
- if platform == :ios_xr || node.product_id[/N(5|6|7)/]
506
+ if platform == :ios_xr || node.product_id[/N(5|6)/]
507
507
  b = RouterBgp.new(1)
508
508
  assert_nil(b.disable_policy_batching_ipv4)
509
509
  assert_nil(b.default_disable_policy_batching_ipv4)
@@ -512,6 +512,7 @@ class TestRouterBgp < CiscoTestCase
512
512
  end
513
513
  return
514
514
  end
515
+ skip_incompat_version?('bgp', 'disable_policy_batching_ipv4')
515
516
  bgp = setup_default
516
517
  default = bgp.default_disable_policy_batching_ipv4
517
518
  assert_equal(default, bgp.disable_policy_batching_ipv4,
@@ -532,7 +533,7 @@ class TestRouterBgp < CiscoTestCase
532
533
  end
533
534
 
534
535
  def test_disable_policy_batching_ipv6
535
- if platform == :ios_xr || node.product_id[/N(5|6|7)/]
536
+ if platform == :ios_xr || node.product_id[/N(5|6)/]
536
537
  b = RouterBgp.new(1)
537
538
  assert_nil(b.disable_policy_batching_ipv6)
538
539
  assert_nil(b.default_disable_policy_batching_ipv6)
@@ -541,6 +542,7 @@ class TestRouterBgp < CiscoTestCase
541
542
  end
542
543
  return
543
544
  end
545
+ skip_incompat_version?('bgp', 'disable_policy_batching_ipv6')
544
546
  bgp = setup_default
545
547
  default = bgp.default_disable_policy_batching_ipv6
546
548
  assert_equal(default, bgp.disable_policy_batching_ipv6,
@@ -669,7 +671,7 @@ class TestRouterBgp < CiscoTestCase
669
671
  assert_equal('false', bgp.event_history_errors)
670
672
  bgp.event_history_errors = 'size_small'
671
673
  assert_equal('size_small', bgp.event_history_errors) unless
672
- Utils.image_version?(/8.0/)
674
+ Utils.image_version?(/8.0|8.1/)
673
675
  bgp.event_history_errors = 'size_large'
674
676
  assert_equal('size_large', bgp.event_history_errors)
675
677
  bgp.event_history_errors = 'size_medium'
@@ -756,7 +758,7 @@ class TestRouterBgp < CiscoTestCase
756
758
  bgp.event_history_periodic)
757
759
  bgp.event_history_periodic = 'false'
758
760
  assert_equal('false', bgp.event_history_periodic) unless
759
- Utils.image_version?(/8.0/)
761
+ Utils.image_version?(/8.0|8.1/)
760
762
  bgp.event_history_periodic = 'size_small'
761
763
  assert_equal('size_small', bgp.event_history_periodic)
762
764
  bgp.event_history_periodic = 'size_large'
@@ -775,7 +777,7 @@ class TestRouterBgp < CiscoTestCase
775
777
  bgp.event_history_periodic = 'true'
776
778
  if newer_image_version?
777
779
  assert_equal('true', bgp.event_history_periodic) unless
778
- Utils.image_version?(/8.0/)
780
+ Utils.image_version?(/8.0|8.1/)
779
781
  else
780
782
  assert_equal(bgp.default_event_history_periodic,
781
783
  bgp.event_history_periodic)
@@ -1148,7 +1150,7 @@ class TestRouterBgp < CiscoTestCase
1148
1150
  end
1149
1151
 
1150
1152
  def test_neighbor_down_fib_accelerate
1151
- if platform == :ios_xr || node.product_id[/N(5|6|7)/]
1153
+ if platform == :ios_xr || node.product_id[/N(5|6)/]
1152
1154
  b = RouterBgp.new(1)
1153
1155
  assert_nil(b.neighbor_down_fib_accelerate)
1154
1156
  assert_nil(b.default_neighbor_down_fib_accelerate)
@@ -1157,6 +1159,7 @@ class TestRouterBgp < CiscoTestCase
1157
1159
  end
1158
1160
  return
1159
1161
  end
1162
+ skip_incompat_version?('bgp', 'neighbor_down_fib_accelerate')
1160
1163
  %w(test_default test_vrf).each do |t|
1161
1164
  if t == 'test_default'
1162
1165
  bgp = setup_default
@@ -1184,7 +1187,7 @@ class TestRouterBgp < CiscoTestCase
1184
1187
  end
1185
1188
 
1186
1189
  def test_reconnect_interval
1187
- if platform == :ios_xr || node.product_id[/N(5|6|7)/]
1190
+ if platform == :ios_xr || node.product_id[/N(5|6)/]
1188
1191
  b = RouterBgp.new(1)
1189
1192
  assert_nil(b.reconnect_interval)
1190
1193
  assert_nil(b.default_reconnect_interval)
@@ -1193,6 +1196,7 @@ class TestRouterBgp < CiscoTestCase
1193
1196
  end
1194
1197
  return
1195
1198
  end
1199
+ skip_incompat_version?('bgp', 'reconnect_interval')
1196
1200
  %w(test_default test_vrf).each do |t|
1197
1201
  if t == 'test_default'
1198
1202
  bgp = setup_default
@@ -1221,6 +1225,7 @@ class TestRouterBgp < CiscoTestCase
1221
1225
  assert_nil(bgp.reconnect_interval,
1222
1226
  'reconnect_interval should return nil on XR')
1223
1227
  else
1228
+ skip_incompat_version?('bgp', 'reconnect_interval')
1224
1229
  assert_equal(bgp.default_reconnect_interval, bgp.reconnect_interval,
1225
1230
  "reconnect_interval should be set to default value of '60'")
1226
1231
  bgp.destroy
@@ -1315,7 +1320,7 @@ class TestRouterBgp < CiscoTestCase
1315
1320
  end
1316
1321
 
1317
1322
  def test_suppress_fib_pending
1318
- skip_legacy_defect?('7.0.3.I4.5',
1323
+ skip_legacy_defect?('7.0.3.I4',
1319
1324
  'CSCvd41536: Unable to remove suppress-fib-pending')
1320
1325
  bgp = setup_default
1321
1326
  if validate_property_excluded?('bgp', 'suppress_fib_pending')
@@ -0,0 +1,155 @@
1
+ require_relative 'ciscotest'
2
+ require_relative '../lib/cisco_node_utils/span_session'
3
+ require_relative '../lib/cisco_node_utils/interface'
4
+ require_relative '../lib/cisco_node_utils/vlan'
5
+ require_relative '../lib/cisco_node_utils/cisco_cmn_utils'
6
+
7
+ include Cisco
8
+
9
+ # TestSpanSession - Minitest for SPAN session node utility
10
+ class TestSpanSession < CiscoTestCase
11
+ @skip_unless_supported = 'span_session'
12
+ @@cleaned = false # rubocop:disable Style/ClassVars
13
+
14
+ def setup
15
+ super
16
+ cleanup unless @@cleaned
17
+ @@cleaned = true # rubocop:disable Style/ClassVars
18
+ end
19
+
20
+ def teardown
21
+ cleanup
22
+ end
23
+
24
+ def cleanup
25
+ SpanSession.sessions.each do |_session, obj|
26
+ obj.destroy
27
+ end
28
+ end
29
+
30
+ def test_create_new_session
31
+ span = SpanSession.new(1)
32
+
33
+ assert_equal(span.session_id, 1)
34
+ assert_equal(span.type, 'local') # default session type
35
+ assert(span.shutdown)
36
+ end
37
+
38
+ def test_remove_session
39
+ span = SpanSession.new(1)
40
+ span.destroy
41
+ refute(span.session_id, 'Session was not cleaned up correctly...')
42
+ end
43
+
44
+ def test_create_session_invalid_id
45
+ e = assert_raises(CliError) { SpanSession.new(33) }
46
+ assert_match(/Invalid value.range/, e.message)
47
+ end
48
+
49
+ def test_session_type
50
+ span = SpanSession.new(2)
51
+ erspan_type = 'erspan-source'
52
+ span.type = erspan_type
53
+ assert_equal(span.type, erspan_type)
54
+ end
55
+
56
+ def test_session_description
57
+ span = SpanSession.new(3)
58
+ desc = 'SPAN session 1'
59
+ span.description = desc
60
+ assert_equal(span.description, desc)
61
+ end
62
+
63
+ def test_session_source_interfaces
64
+ span = SpanSession.new(4)
65
+ po_int = Interface.new('port-channel1')
66
+ int1 = interfaces[0]
67
+ int2 = interfaces[1]
68
+ int3 = interfaces[2]
69
+
70
+ # Test default case
71
+ assert_equal(span.default_source_interfaces, span.source_interfaces)
72
+
73
+ # Non-default case
74
+ intla = { int1 => 'rx',
75
+ int2 => 'tx',
76
+ 'port-channel1' => 'both',
77
+ 'sup-eth0' => 'rx' }
78
+
79
+ span.source_interfaces = intla
80
+ assert_equal(intla.to_a.sort, span.source_interfaces.sort)
81
+
82
+ # intla and intlb are identical
83
+ intlb = { int1 => 'rx',
84
+ int2 => 'tx',
85
+ 'port-channel1' => 'both',
86
+ 'sup-eth0' => 'rx' }
87
+
88
+ span.source_interfaces = intlb
89
+ assert_equal(intlb.to_a.sort, span.source_interfaces.sort)
90
+
91
+ # intla/c same size but 1 element different
92
+ intlc = { int2 => 'both',
93
+ int1 => 'rx',
94
+ 'port-channel1' => 'both',
95
+ 'sup-eth0' => 'rx' }
96
+
97
+ span.source_interfaces = intlc
98
+ assert_equal(intlc.to_a.sort, span.source_interfaces.sort)
99
+
100
+ # intla/d different sizes and diff/same elements
101
+ intld = { int2 => 'tx',
102
+ int1 => 'both',
103
+ 'port-channel1' => 'both' }
104
+
105
+ span.source_interfaces = intld
106
+ assert_equal(intld.to_a.sort, span.source_interfaces.sort)
107
+
108
+ # Empty list
109
+ intle = {}
110
+
111
+ span.source_interfaces = intle
112
+ assert_equal(intle.to_a.sort, span.source_interfaces.sort)
113
+
114
+ # intlf is larger then intla
115
+ intlf = { int3 => 'both',
116
+ int1 => 'rx',
117
+ int2 => 'tx',
118
+ 'port-channel1' => 'both',
119
+ 'sup-eth0' => 'rx' }
120
+
121
+ span.source_interfaces = intlf
122
+ assert_equal(intlf.to_a.sort, span.source_interfaces.sort)
123
+
124
+ po_int.destroy
125
+ end
126
+
127
+ def test_session_source_vlans
128
+ span = SpanSession.new(5)
129
+
130
+ # Default case
131
+ assert_equal(span.source_vlans, span.default_source_vlans)
132
+
133
+ # Non-default case
134
+ vlans = %w(1 2-5 6)
135
+ span.source_vlans = { vlans: vlans, direction: 'rx' }
136
+ assert_equal(%w(1-6), span.source_vlans[0])
137
+ assert_equal('rx', span.source_vlans[1])
138
+
139
+ vlans = %w(1 3-4 6)
140
+ span.source_vlans = { vlans: vlans, direction: 'rx' }
141
+ assert_equal(%w(1 3-4 6), span.source_vlans[0])
142
+ assert_equal('rx', span.source_vlans[1])
143
+
144
+ # Set back to default
145
+ span.source_vlans = { vlans: [], direction: '' }
146
+ assert_equal(span.source_vlans, span.default_source_vlans)
147
+ end
148
+
149
+ def test_session_destination_int
150
+ span = SpanSession.new(6)
151
+ dest_int = interfaces[2]
152
+ span.destination = dest_int
153
+ assert_equal(span.destination, dest_int)
154
+ end
155
+ end
@@ -185,6 +185,7 @@ class TestStpGlobal < CiscoTestCase
185
185
  global.domain = 200
186
186
  end
187
187
  else
188
+ skip_incompat_version?('stp_global', 'domain')
188
189
  global.domain = 100
189
190
  assert_equal(100, global.domain)
190
191
  global.domain =
@@ -80,8 +80,7 @@ class TestUpgrade < CiscoTestCase
80
80
 
81
81
  def test_upgrade
82
82
  image_info = preconfig_upgrade_info
83
- version = Upgrade.image_version(image_info['install_image'], image_info['install_uri'])
84
- Upgrade.upgrade(version, image_info['install_image'], image_info['install_uri'])
83
+ Upgrade.upgrade(image_info['install_image'], image_info['install_uri'])
85
84
  # Wait 15 seconds for device to start rebooting
86
85
  # TODO : Consider getting the sleep value dynamically
87
86
  sleep 15
@@ -100,7 +99,7 @@ class TestUpgrade < CiscoTestCase
100
99
  image = image_uri.split('/')[-1]
101
100
  uri = image_uri.split('/')[0]
102
101
  skip('Boot image not on bootflash:') unless uri == 'bootflash:'
103
- Upgrade.upgrade(Upgrade.image_version, image, uri)
102
+ Upgrade.upgrade(image, uri)
104
103
  assert(Upgrade.upgraded?)
105
104
  end
106
105
  end
data/tests/test_vlan.rb CHANGED
@@ -127,7 +127,7 @@ class TestVlan < CiscoTestCase
127
127
  end
128
128
 
129
129
  def test_name_zero_length
130
- skip_legacy_defect?('7.0.3.I5.2',
130
+ skip_legacy_defect?('7.0.3.I5.2|7.0.3.I5.3',
131
131
  'CSCvd09257: Configuration of vlan name via nxapi should be noop')
132
132
  v = Vlan.new(1000)
133
133
  v.vlan_name = ''
@@ -161,6 +161,27 @@ class TestVlan < CiscoTestCase
161
161
  config 'no system vlan long-name'
162
162
  end
163
163
 
164
+ def test_id_similar
165
+ config 'system vlan long-name'
166
+ v2 = Vlan.new(2)
167
+ v102 = Vlan.new(102)
168
+ v222 = Vlan.new(222)
169
+
170
+ v2.vlan_name = 'NEW_YORK_OFFICE'
171
+ v102.vlan_name = 'RALEIGH_OFFICE'
172
+ long_name = 'LONG_NAME' + ('E' * 119)
173
+ v222.vlan_name = long_name
174
+
175
+ assert_equal('NEW_YORK_OFFICE', v2.vlan_name)
176
+ assert_equal('RALEIGH_OFFICE', v102.vlan_name)
177
+ assert_equal(long_name, v222.vlan_name)
178
+
179
+ v2.destroy
180
+ v102.destroy
181
+ v222.destroy
182
+ config 'no system vlan long-name'
183
+ end
184
+
164
185
  def test_state_invalid
165
186
  v = Vlan.new(1000)
166
187
  assert_raises(CliError) do
@@ -186,7 +207,7 @@ class TestVlan < CiscoTestCase
186
207
 
187
208
  def test_shutdown_extended
188
209
  v = Vlan.new(2000)
189
- assert_raises(RuntimeError, 'vlan misconfig did not raise RuntimeError') do
210
+ assert_raises(CliError, 'vlan misconfig did not raise CliError') do
190
211
  v.shutdown = 'shutdown'
191
212
  end
192
213
  v.destroy
@@ -317,7 +338,7 @@ class TestVlan < CiscoTestCase
317
338
  assert(vlan.fabric_control)
318
339
  another_vlan = Vlan.new(101)
319
340
 
320
- assert_raises(RuntimeError,
341
+ assert_raises(CliError,
321
342
  'VLAN misconfig did not raise CliError') do
322
343
  another_vlan.fabric_control = true
323
344
  end