cisco_node_utils 1.7.0 → 1.8.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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/CONTRIBUTING.md +2 -2
  4. data/README.md +2 -1
  5. data/cisco_node_utils.gemspec +1 -0
  6. data/docs/README-develop-node-utils-APIs.md +2 -1
  7. data/lib/cisco_node_utils/aaa_authentication_login_service.rb +2 -2
  8. data/lib/cisco_node_utils/ace.rb +2 -0
  9. data/lib/cisco_node_utils/bgp.rb +34 -91
  10. data/lib/cisco_node_utils/bridge_domain.rb +8 -13
  11. data/lib/cisco_node_utils/client/nxapi/client.rb +10 -3
  12. data/lib/cisco_node_utils/cmd_ref/DEPRECATED.yaml +12 -12
  13. data/lib/cisco_node_utils/cmd_ref/README_YAML.md +2 -1
  14. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +1 -0
  15. data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +3 -3
  16. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +5 -15
  17. data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +1 -1
  18. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +1 -0
  19. data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +14 -36
  20. data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +1 -1
  21. data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +5 -3
  22. data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +1 -1
  23. data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +1 -1
  24. data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +1 -1
  25. data/lib/cisco_node_utils/cmd_ref/feature.yaml +3 -3
  26. data/lib/cisco_node_utils/cmd_ref/interface.yaml +25 -15
  27. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +5 -0
  28. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +6 -0
  29. data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +1 -1
  30. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +9 -0
  31. data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +1 -1
  32. data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +1 -1
  33. data/lib/cisco_node_utils/cmd_ref/object_group.yaml +32 -0
  34. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +1 -1
  35. data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +9 -7
  36. data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +7 -0
  37. data/lib/cisco_node_utils/cmd_ref/route_map.yaml +26 -25
  38. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +11 -3
  39. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +4 -0
  40. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +5 -1
  41. data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +8 -8
  42. data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +3 -2
  43. data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +21 -1
  44. data/lib/cisco_node_utils/cmd_ref/tacacs_global.yaml +7 -0
  45. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +1 -1
  46. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +5 -4
  47. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +9 -9
  48. data/lib/cisco_node_utils/cmd_ref/vrf.yaml +1 -0
  49. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +1 -0
  50. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +3 -5
  51. data/lib/cisco_node_utils/command_reference.rb +11 -1
  52. data/lib/cisco_node_utils/interface.rb +46 -8
  53. data/lib/cisco_node_utils/interface_ospf.rb +2 -2
  54. data/lib/cisco_node_utils/interface_portchannel.rb +2 -2
  55. data/lib/cisco_node_utils/node.rb +9 -0
  56. data/lib/cisco_node_utils/ntp_auth_key.rb +1 -1
  57. data/lib/cisco_node_utils/object_group.rb +75 -0
  58. data/lib/cisco_node_utils/object_group_entry.rb +143 -0
  59. data/lib/cisco_node_utils/portchannel_global.rb +2 -2
  60. data/lib/cisco_node_utils/radius_global.rb +25 -1
  61. data/lib/cisco_node_utils/router_ospf.rb +3 -3
  62. data/lib/cisco_node_utils/syslog_server.rb +38 -42
  63. data/lib/cisco_node_utils/syslog_settings.rb +74 -3
  64. data/lib/cisco_node_utils/tacacs_global.rb +47 -14
  65. data/lib/cisco_node_utils/tacacs_server.rb +1 -5
  66. data/lib/cisco_node_utils/version.rb +1 -1
  67. data/lib/cisco_node_utils/vpc.rb +1 -4
  68. data/lib/cisco_node_utils/vtp.rb +4 -2
  69. data/spec/schema.yaml +3 -0
  70. data/tests/ciscotest.rb +16 -9
  71. data/tests/test_ace.rb +2 -0
  72. data/tests/test_bgp_af.rb +10 -2
  73. data/tests/test_bgp_neighbor_af.rb +6 -2
  74. data/tests/test_bridge_domain.rb +7 -0
  75. data/tests/test_feature.rb +2 -2
  76. data/tests/test_interface.rb +30 -4
  77. data/tests/test_node_ext.rb +2 -2
  78. data/tests/test_object_group.rb +122 -0
  79. data/tests/test_platform.rb +1 -1
  80. data/tests/test_portchannel_global.rb +1 -0
  81. data/tests/test_radius_global.rb +22 -2
  82. data/tests/test_route_map.rb +11 -8
  83. data/tests/test_router_bgp.rb +7 -132
  84. data/tests/test_router_ospf_area.rb +6 -6
  85. data/tests/test_snmpuser.rb +19 -11
  86. data/tests/test_syslog_server.rb +11 -31
  87. data/tests/test_syslog_settings.rb +46 -5
  88. data/tests/test_tacacs_global.rb +42 -18
  89. data/tests/test_vpc.rb +3 -0
  90. data/tests/test_vxlan_vtep_vni.rb +0 -3
  91. data/tests/yum_package.yaml +5 -0
  92. metadata +21 -3
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # Jonathan Tripathy et al., September 2015
4
4
  #
5
- # Copyright (c) 2014-2016 Cisco and/or its affiliates.
5
+ # Copyright (c) 2014-2017 Cisco and/or its affiliates.
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
8
8
  # you may not use this file except in compliance with the License.
@@ -42,14 +42,82 @@ module Cisco
42
42
  name == other.name
43
43
  end
44
44
 
45
+ def default_console
46
+ config_get_default('syslog_settings', 'console')
47
+ end
48
+
49
+ def console
50
+ console = config_get('syslog_settings', 'console')
51
+ if console.is_a?(Array)
52
+ console = console[0] == 'no' ? 'unset' : console[1]
53
+ end
54
+ console
55
+ end
56
+
57
+ def console=(severity)
58
+ if severity
59
+ config_set(
60
+ 'syslog_settings', 'console',
61
+ state: '', severity: severity)
62
+ else
63
+ config_set(
64
+ 'syslog_settings', 'console',
65
+ state: 'no', severity: '')
66
+ end
67
+ end
68
+
69
+ def default_monitor
70
+ config_get_default('syslog_settings', 'monitor')
71
+ end
72
+
73
+ def monitor
74
+ monitor = config_get('syslog_settings', 'monitor')
75
+ if monitor.is_a?(Array)
76
+ monitor = monitor[0] == 'no' ? 'unset' : monitor[1]
77
+ end
78
+ monitor
79
+ end
80
+
81
+ def monitor=(severity)
82
+ if severity
83
+ config_set(
84
+ 'syslog_settings', 'monitor',
85
+ state: '', severity: severity)
86
+ else
87
+ config_set(
88
+ 'syslog_settings', 'monitor',
89
+ state: 'no', severity: '')
90
+ end
91
+ end
92
+
93
+ def default_source_interface
94
+ config_get_default('syslog_settings', 'source_interface')
95
+ end
96
+
97
+ def source_interface
98
+ i = config_get('syslog_settings', 'source_interface')
99
+ i.nil? ? default_source_interface : i.downcase
100
+ end
101
+
102
+ def source_interface=(name)
103
+ if name
104
+ config_set(
105
+ 'syslog_settings', 'source_interface',
106
+ state: '', source_interface: name)
107
+ else
108
+ config_set(
109
+ 'syslog_settings', 'source_interface',
110
+ state: 'no', source_interface: '')
111
+ end
112
+ end
113
+
45
114
  def timestamp
46
115
  config_get('syslog_settings', 'timestamp')
47
116
  end
48
117
 
49
118
  def timestamp=(val)
50
- fail TypeError unless val.is_a?(String)
51
119
  fail TypeError \
52
- unless %w(seconds milliseconds).include?(val)
120
+ unless %w(seconds milliseconds).include?(val.to_s)
53
121
 
54
122
  # There is no unset version as timestamp has a default value
55
123
  config_set('syslog_settings',
@@ -57,5 +125,8 @@ module Cisco
57
125
  state: '',
58
126
  units: val)
59
127
  end
128
+
129
+ alias_method :time_stamp_units, :timestamp
130
+ alias_method :time_stamp_units=, :timestamp=
60
131
  end # class
61
132
  end # module
@@ -1,8 +1,8 @@
1
1
  # Tacacs Global provider class
2
2
 
3
- # TP HONEY et al., June 2014-2016
3
+ # TP HONEY et al., June 2014-2017
4
4
 
5
- # Copyright (c) 2014-2016 Cisco and/or its affiliates.
5
+ # Copyright (c) 2014-2017 Cisco and/or its affiliates.
6
6
 
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
8
8
  # you may not use this file except in compliance with the License.
@@ -20,10 +20,6 @@ require_relative 'node_util'
20
20
 
21
21
  # Tacacs Global configuration management
22
22
  module Cisco
23
- TACACS_GLOVAL_ENC_NONE = 0
24
- TACACS_GLOBAL_ENC_CISCO_TYPE_7 = 7
25
- TACACS_GLOBAL_ENC_UNKNOWN = 8
26
-
27
23
  # TacacsGlobal - node utility class for
28
24
  class TacacsGlobal < NodeUtil
29
25
  attr_reader :name
@@ -33,7 +29,6 @@ module Cisco
33
29
  fail ArgumentError,
34
30
  "This provider only accepts an id of 'default'" \
35
31
  unless name.eql?('default')
36
- Feature.tacacs_enable unless Feature.tacacs_enabled?
37
32
  @name = name
38
33
  end
39
34
 
@@ -48,6 +43,7 @@ module Cisco
48
43
  end
49
44
 
50
45
  def timeout
46
+ return nil unless Feature.tacacs_enabled?
51
47
  config_get('tacacs_global', 'timeout')
52
48
  end
53
49
 
@@ -62,11 +58,11 @@ module Cisco
62
58
  end
63
59
 
64
60
  if val.nil?
65
- config_set('tacacs_global',
66
- 'timeout',
67
- state: 'no',
68
- timeout: timeout)
61
+ fail ArgumentError, 'timeout cannot be unset if TACACS enabled - ' \
62
+ "use default value #{default_timeout}" \
63
+ if Feature.tacacs_enabled?
69
64
  else
65
+ Feature.tacacs_enable
70
66
  config_set('tacacs_global',
71
67
  'timeout',
72
68
  state: '',
@@ -80,6 +76,7 @@ module Cisco
80
76
  end
81
77
 
82
78
  def key
79
+ return nil unless Feature.tacacs_enabled?
83
80
  str = config_get('tacacs_global', 'key')
84
81
  return TacacsGlobal.default_key if str.empty?
85
82
  str = str[1].strip
@@ -92,14 +89,50 @@ module Cisco
92
89
  end
93
90
 
94
91
  def encryption_key_set(key_format, key)
95
- key = Utils.add_quotes(key)
96
- if key_format == TACACS_GLOBAL_ENC_UNKNOWN
92
+ # If we get an empty key - remove default if configured
93
+ if key.nil? || key.to_s.empty?
94
+ key = self.key
95
+ return if key.empty?
96
+ key_format = self.key_format
97
97
  config_set('tacacs_server', 'encryption', state: 'no',
98
98
  option: key_format, key: key)
99
99
  else
100
- config_set('tacacs_server', 'encryption', state: '', option: key_format,
100
+ Feature.tacacs_enable
101
+ key = Utils.add_quotes(key)
102
+ if key_format.nil? || key_format.to_s.empty?
103
+ config_set('tacacs_server', 'encryption', state: '', option: '',
101
104
  key: key)
105
+ else
106
+ config_set('tacacs_server', 'encryption', state: '',
107
+ option: key_format, key: key)
108
+ end
109
+ end
110
+ end
111
+
112
+ # Get default source interface
113
+ def default_source_interface
114
+ config_get_default('tacacs_global', 'source_interface')
115
+ end
116
+
117
+ # Set source interface
118
+ def source_interface=(name)
119
+ if name
120
+ Feature.tacacs_enable
121
+ config_set(
122
+ 'tacacs_global', 'source_interface',
123
+ state: '', source_interface: name)
124
+ else
125
+ config_set(
126
+ 'tacacs_global', 'source_interface',
127
+ state: 'no', source_interface: '')
102
128
  end
103
129
  end
130
+
131
+ # Get source interface
132
+ def source_interface
133
+ return nil unless Feature.tacacs_enabled?
134
+ i = config_get('tacacs_global', 'source_interface')
135
+ i.nil? ? default_source_interface : i.downcase
136
+ end
104
137
  end # class
105
138
  end # module
@@ -30,11 +30,7 @@ module Cisco
30
30
 
31
31
  # Check feature enablement
32
32
  def self.enabled
33
- config_get('tacacs_server', 'feature')
34
- rescue Cisco::CliError => e
35
- # cmd will syntax reject when feature is not enabled
36
- raise unless e.clierror =~ /Syntax error/
37
- return false
33
+ Feature.tacacs_enabled?
38
34
  end
39
35
 
40
36
  # Enable tacacs_server feature
@@ -14,7 +14,7 @@
14
14
 
15
15
  # Container module for version number only.
16
16
  module CiscoNodeUtils
17
- VERSION = '1.7.0'
17
+ VERSION = '1.8.0'
18
18
  gem_version = Gem::Version.new(Gem::VERSION)
19
19
  min_gem_version = Gem::Version.new('2.1.0')
20
20
  fail 'Required rubygems version >= 2.1.0' if gem_version < min_gem_version
@@ -35,13 +35,10 @@ module Cisco
35
35
 
36
36
  def self.domains
37
37
  hash = {}
38
+ return hash unless Vpc.enabled
38
39
  my_domain = config_get('vpc', 'domain')
39
40
  hash[my_domain] = Vpc.new(my_domain, false) unless my_domain.nil?
40
41
  hash
41
- rescue Cisco::CliError => e
42
- # cmd will syntax reject when feature is not enabled
43
- raise unless e.clierror =~ /Syntax error/
44
- return {}
45
42
  end
46
43
 
47
44
  def self.enabled
@@ -32,10 +32,12 @@ module Cisco
32
32
 
33
33
  # Get vtp domain name
34
34
  def self.domain
35
+ dom_def = config_get_default('vtp', 'domain')
35
36
  if Feature.vtp_enabled?
36
- config_get('vtp', 'domain')
37
+ dom = config_get('vtp', 'domain')
38
+ return dom == '-' ? dom_def : dom
37
39
  else
38
- config_get_default('vtp', 'domain')
40
+ dom_def
39
41
  end
40
42
  end
41
43
 
data/spec/schema.yaml CHANGED
@@ -15,7 +15,9 @@ mapping:
15
15
  - 'C3064'
16
16
  - 'C3132'
17
17
  - 'C3172'
18
+ - 'N35'
18
19
  - 'N3k'
20
+ - 'N3k-F'
19
21
  - 'N5k'
20
22
  - 'N6k'
21
23
  - 'N7k'
@@ -33,6 +35,7 @@ mapping:
33
35
  C3132: *base
34
36
  C3172: *base
35
37
  N3k: *base
38
+ N3k-F: *base
36
39
  N5k: *base
37
40
  N6k: *base
38
41
  N7k: *base
data/tests/ciscotest.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2013-2016 Cisco and/or its affiliates.
1
+ # Copyright (c) 2013-2017 Cisco and/or its affiliates.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -185,8 +185,12 @@ class CiscoTestCase < TestCase
185
185
  key_values = e.split(':')
186
186
  larr = key_values[0].split(',')
187
187
  larr.each do |lkey|
188
- fail "Unrecognized product_id: #{lkey}" unless
189
- lkey.downcase[/n(3|5|6|7|9)/]
188
+ if lkey.to_s == 'C3548'
189
+ # Special case N3k Platform
190
+ else
191
+ fail "Unrecognized product_id: #{lkey}" unless
192
+ lkey.downcase[/n(3|5|6|7|9)/]
193
+ end
190
194
  next unless lkey.downcase.strip == product_tag
191
195
  ver = key_values[1]
192
196
  break if ver
@@ -219,7 +223,7 @@ class CiscoTestCase < TestCase
219
223
 
220
224
  def skip_legacy_defect?(pattern, msg)
221
225
  msg = "Defect in legacy image: [#{msg}]"
222
- skip(msg) if system_image.match(Regexp.new(pattern))
226
+ skip(msg) if Utils.image_version?(Regexp.new(pattern))
223
227
  end
224
228
 
225
229
  def interfaces
@@ -296,7 +300,8 @@ class CiscoTestCase < TestCase
296
300
  Vrf.vrfs.each do |vrf, obj|
297
301
  next if vrf[/management/]
298
302
  # TBD: Remove vrf workaround below after CSCuz56697 is resolved
299
- config 'vrf context ' + vrf if node.product_id[/N9K.*-F/]
303
+ config 'vrf context ' + vrf if
304
+ node.product_id[/N9K.*-F/] || node.product_id[/N3K.*-F/]
300
305
  obj.destroy
301
306
  end
302
307
  end
@@ -460,7 +465,7 @@ class CiscoTestCase < TestCase
460
465
  # Returns the output of the command.
461
466
  def shell_command(command, context='bash')
462
467
  fail "shell_command api not supported on #{node.product_id}" unless
463
- node.product_id[/N3K|N9K.*-F|N9K/]
468
+ node.product_id[/N3K|N3K.*-F|N9K.*-F|N9K/]
464
469
  unless context == 'bash' || context == 'guestshell'
465
470
  fail "Context must be either 'bash' or 'guestshell'"
466
471
  end
@@ -470,7 +475,7 @@ class CiscoTestCase < TestCase
470
475
  def backup_resolv_file(context='bash')
471
476
  # Configuration bleeding is only a problem on some platforms, so
472
477
  # only backup the resolv.conf file on required plaforms.
473
- return unless node.product_id[/N3K|N9K.*-F|N9K/]
478
+ return unless node.product_id[/N3K|N3K.*-F|N9K.*-F|N9K/]
474
479
  time_stamp = Time.now.strftime('%Y-%m-%d_%H-%M-%S')
475
480
  backup_filename = "/tmp/resolv.conf.#{time_stamp}"
476
481
  shell_command("cp /etc/resolv.conf #{backup_filename}", context)
@@ -478,7 +483,7 @@ class CiscoTestCase < TestCase
478
483
  end
479
484
 
480
485
  def restore_resolv_file(filename, context='bash')
481
- return unless node.product_id[/N3K|N9K.*-F|N9K/]
486
+ return unless node.product_id[/N3K|N3K.*-F|N9K.*-F|N9K/]
482
487
  shell_command("sudo cp #{filename} /etc/resolv.conf", context)
483
488
  shell_command("rm #{filename}", context)
484
489
  end
@@ -502,8 +507,10 @@ class CiscoTestCase < TestCase
502
507
  def product_tag
503
508
  @product_id ||= node.product_id
504
509
  case @product_id
510
+ when /N3K-C35/
511
+ tag = 'n35'
505
512
  when /N3/
506
- tag = 'n3k'
513
+ tag = Utils.image_version?(/7.0.3.F/) ? 'n3k-f' : 'n3k'
507
514
  when /N5/
508
515
  tag = 'n5k'
509
516
  when /N6/
data/tests/test_ace.rb CHANGED
@@ -66,6 +66,8 @@ class TestAce < CiscoTestCase
66
66
  %w(ipv4 ipv6).each do |afi|
67
67
  a = ace_helper(afi, remark: afi)
68
68
  assert_equal(afi, a.remark)
69
+ assert_nil(a.log)
70
+ assert_nil(a.established)
69
71
  end
70
72
  end
71
73
 
data/tests/test_bgp_af.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # Richard Wellum, August, 2015
6
6
  #
7
- # Copyright (c) 2015-2016 Cisco and/or its affiliates.
7
+ # Copyright (c) 2015-2017 Cisco and/or its affiliates.
8
8
  #
9
9
  # Licensed under the Apache License, Version 2.0 (the "License");
10
10
  # you may not use this file except in compliance with the License.
@@ -124,6 +124,7 @@ class TestBgpAF < CiscoTestCase
124
124
  # Tests that are successful even though a rule below says otherwise
125
125
  [:next_hop_route_map, :nexus, 'default', %w(l2vpn evpn), :success],
126
126
  [:additional_paths_send, :nexus, 'default', %w(l2vpn evpn), :runtime],
127
+ [:additional_paths_receive, :nexus, 'default', %w(l2vpn evpn), :runtime],
127
128
  [:additional_paths_selection, :nexus, 'default', %w(l2vpn evpn), :runtime],
128
129
  [:maximum_paths, :nexus, 'default', %w(l2vpn evpn), :runtime],
129
130
  [:maximum_paths_ibgp, :nexus, 'default', %w(l2vpn evpn), :runtime],
@@ -169,10 +170,17 @@ class TestBgpAF < CiscoTestCase
169
170
  # triggers a version check below.
170
171
  if expect == :runtime
171
172
  case Platform.image_version
172
- when /8.0|8.1/
173
+ when /8.0|8.1|8.2|F3.2/
173
174
  expect = :success
175
+ expect = :runtime if test == :additional_paths_receive && Platform.image_version[/8.0|8.1/]
174
176
  when /I5.2|I5.3|I6/
175
177
  expect = :success if test == :maximum_paths || test == :maximum_paths_ibgp
178
+ when /I7/
179
+ expect = :success if test == :maximum_paths ||
180
+ test == :maximum_paths_ibgp ||
181
+ test == :additional_paths_send ||
182
+ test == :additional_paths_receive ||
183
+ test == :additional_paths_selection
176
184
  else
177
185
  expect = :CliError
178
186
  end
@@ -429,8 +429,10 @@ class TestBgpNeighborAF < CiscoTestCase
429
429
 
430
430
  # Test false with value
431
431
  af.allowas_in_set(false)
432
+ # skip setting this to false due to bug CSCve58319
432
433
  refute(af.allowas_in,
433
- "Test 3. #{dbg} Failed to set state to False")
434
+ "Test 3. #{dbg} Failed to set state to False") unless
435
+ Platform.image_version[/I5|I6|F3.3/]
434
436
 
435
437
  # Test true with value, from false
436
438
  af.allowas_in_set(true, 4)
@@ -440,8 +442,10 @@ class TestBgpNeighborAF < CiscoTestCase
440
442
 
441
443
  # Test default_state
442
444
  af.allowas_in_set(af.default_allowas_in)
445
+ # skip setting this to false due to bug CSCve58319
443
446
  refute(af.allowas_in,
444
- "Test 5. #{dbg} Failed to set state to default")
447
+ "Test 5. #{dbg} Failed to set state to default") unless
448
+ Platform.image_version[/I5|I6|F3.3/]
445
449
 
446
450
  # Test true with value set to default
447
451
  af.allowas_in_set(true, af.default_allowas_in_max)
@@ -101,6 +101,8 @@ class TestBridgeDomain < CiscoTestCase
101
101
  refute(bd.shutdown)
102
102
  bd.shutdown = true
103
103
  assert(bd.shutdown)
104
+ bd.shutdown = false
105
+ refute(bd.shutdown)
104
106
  bd.destroy
105
107
  end
106
108
 
@@ -114,6 +116,11 @@ class TestBridgeDomain < CiscoTestCase
114
116
  assert_equal(name, bd.bd_name,
115
117
  'Error: Bridge-Domain name not updated to #{name}')
116
118
 
119
+ name = ''
120
+ bd.bd_name = name
121
+ assert_equal(bd.default_bd_name, bd.default_bd_name,
122
+ 'Error: Bridge-Domain name not updated to default')
123
+
117
124
  bd.bd_name = bd.default_bd_name
118
125
  assert_equal(bd.default_bd_name, bd.bd_name,
119
126
  'Error: Bridge-Domain name not restored to default')