cisco_node_utils 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e72699d560ddb617cfe0a637565d0313ba7ba9f6
4
- data.tar.gz: a25d1820c2a7bc3bf28ef1fdc79c2124bbb51b49
3
+ metadata.gz: 564e7f738b94277341aac0cd79f9969311c1e7cd
4
+ data.tar.gz: 93ae60e8ff3348f14d1f7ad98125ad06bd535a1a
5
5
  SHA512:
6
- metadata.gz: a5a0cbafbb485e2c47fa4ab9bab300c713ecaba4609fc23f8f8bcf940019d74c5cd054e7e637fd50ab381bdb1cf2a7d27eb7326ca236ccab6537f66a2e6494aa
7
- data.tar.gz: 7ed873f928991caf6088cf48753af8bb0ec9afc5e1c005aa5da49f82cea8c3cfea52843fb7673173ffac940eb1c846b09100018a8f12a5bcd8bcdf59e3da2635
6
+ metadata.gz: 8cde277306e924d1f0edce1549b6f3e835fb389098005770258ab3e4dd7c2b0301b22291516b174d44f270dd9d0041fd81356f8aed8c9ed91e88287eb5b89328
7
+ data.tar.gz: dcc9931ea33f770f3864a07c3b9e1859df09a7aa52e5003f97a0bd956fa0379e29d8970949732a8ece42eb92b82eb1f1e599cf6e2878e7339b15e502e91ebb6e
data/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## [v1.4.1]
5
+
6
+ ### Added
7
+
8
+ * Extend bgp with attributes:
9
+ * `event_history_errors`
10
+ * `event_history_objstore`
11
+ * Added support for Cisco NX-OS software release `7.3(0)I5(1)`
12
+
4
13
  ## [v1.4.0]
5
14
 
6
15
  ### New feature support
@@ -359,6 +368,7 @@ Changelog
359
368
  [git-flow]: https://github.com/petervanderdoes/gitflow-avh
360
369
  [SimpleCov]: https://github.com/colszowka/simplecov
361
370
 
371
+ [v1.4.1]: https://github.com/cisco/cisco-network-node-utils/compare/v1.4.0...v1.4.1
362
372
  [v1.4.0]: https://github.com/cisco/cisco-network-node-utils/compare/v1.3.0...v1.4.0
363
373
  [v1.3.0]: https://github.com/cisco/cisco-network-node-utils/compare/v1.2.0...v1.3.0
364
374
  [v1.2.0]: https://github.com/cisco/cisco-network-node-utils/compare/v1.1.0...v1.2.0
@@ -416,13 +416,16 @@ module Cisco
416
416
  match = config_get('bgp', 'event_history_cli', @get_args)
417
417
  if match.is_a?(Array)
418
418
  return 'false' if match[0] == 'no '
419
- return 'size_' + match[1] if match[1]
419
+ if match[1]
420
+ return match[1] if match[1][/\A\d+\z/]
421
+ return 'size_' + match[1]
422
+ end
420
423
  end
421
424
  default_event_history_cli
422
425
  end
423
426
 
424
427
  def event_history_cli=(val)
425
- size = val[/small|medium|large|disable/]
428
+ size = val[/small|medium|large|disable|\A\d+\z/]
426
429
  @set_args[:size] = size.nil? ? '' : "size #{size}"
427
430
  @set_args[:state] = val[/false/] ? 'no' : ''
428
431
  config_set('bgp', 'event_history_cli', @set_args)
@@ -437,16 +440,19 @@ module Cisco
437
440
  # Nvgen as True With optional 'size <size>
438
441
  def event_history_detail
439
442
  match = config_get('bgp', 'event_history_detail', @get_args)
440
- # This property requires auto_default=false
441
443
  if match.is_a?(Array)
442
444
  return 'false' if match[0] == 'no '
443
- return 'size_' + match[1] if match[1]
445
+ if match[1]
446
+ return match[1] if match[1][/\A\d+\z/]
447
+ return 'size_' + match[1]
448
+ end
449
+ return 'true'
444
450
  end
445
451
  default_event_history_detail
446
452
  end
447
453
 
448
454
  def event_history_detail=(val)
449
- size = val[/small|medium|large|disable/]
455
+ size = val[/small|medium|large|disable|\A\d+\z/]
450
456
  @set_args[:size] = size.nil? ? '' : "size #{size}"
451
457
  @set_args[:state] = val[/false/] ? 'no' : ''
452
458
  config_set('bgp', 'event_history_detail', @set_args)
@@ -457,19 +463,48 @@ module Cisco
457
463
  config_get_default('bgp', 'event_history_detail')
458
464
  end
459
465
 
466
+ # event-history errors [ size <size> ]
467
+ # Nvgen as True With optional 'size <size>
468
+ def event_history_errors
469
+ match = config_get('bgp', 'event_history_errors', @get_args)
470
+ if match.is_a?(Array)
471
+ return 'false' if match[0] == 'no '
472
+ if match[1]
473
+ return match[1] if match[1][/\A\d+\z/]
474
+ return 'size_' + match[1]
475
+ end
476
+ end
477
+ default_event_history_errors
478
+ end
479
+
480
+ def event_history_errors=(val)
481
+ size = val[/small|medium|large|disable|\A\d+\z/]
482
+ @set_args[:size] = size.nil? ? '' : "size #{size}"
483
+ @set_args[:state] = val[/false/] ? 'no' : ''
484
+ config_set('bgp', 'event_history_errors', @set_args)
485
+ set_args_keys_default
486
+ end
487
+
488
+ def default_event_history_errors
489
+ config_get_default('bgp', 'event_history_errors')
490
+ end
491
+
460
492
  # event-history events [ size <size> ]
461
493
  # Nvgen as True With optional 'size <size>
462
494
  def event_history_events
463
495
  match = config_get('bgp', 'event_history_events', @get_args)
464
496
  if match.is_a?(Array)
465
- return 'size_disable' if match[0] == 'no '
466
- return 'size_' + match[1] if match[1]
497
+ return 'false' if match[0] == 'no '
498
+ if match[1]
499
+ return match[1] if match[1][/\A\d+\z/]
500
+ return 'size_' + match[1]
501
+ end
467
502
  end
468
503
  default_event_history_events
469
504
  end
470
505
 
471
506
  def event_history_events=(val)
472
- size = val[/small|medium|large|disable/]
507
+ size = val[/small|medium|large|disable|\A\d+\z/]
473
508
  @set_args[:size] = size.nil? ? '' : "size #{size}"
474
509
  @set_args[:state] = val[/false/] ? 'no' : ''
475
510
  config_set('bgp', 'event_history_events', @set_args)
@@ -477,7 +512,39 @@ module Cisco
477
512
  end
478
513
 
479
514
  def default_event_history_events
480
- config_get_default('bgp', 'event_history_events')
515
+ if Utils.image_version?(/7.0.3.I2|I3|I4/) ||
516
+ Utils.chassis_pid?(/N(5|6|7|8)/)
517
+ config_get_default('bgp', 'event_history_events')
518
+ else
519
+ config_get('bgp', 'event_history_events_bytes', @get_args)
520
+ end
521
+ end
522
+
523
+ # event-history objstore [ size <size> ]
524
+ # Nvgen as True With optional 'size <size>
525
+ def event_history_objstore
526
+ match = config_get('bgp', 'event_history_objstore', @get_args)
527
+ if match.is_a?(Array)
528
+ return 'false' if match[0] == 'no '
529
+ if match[1]
530
+ return match[1] if match[1][/\A\d+\z/]
531
+ return 'size_' + match[1]
532
+ end
533
+ return 'true'
534
+ end
535
+ default_event_history_objstore
536
+ end
537
+
538
+ def event_history_objstore=(val)
539
+ size = val[/small|medium|large|disable|\A\d+\z/]
540
+ @set_args[:size] = size.nil? ? '' : "size #{size}"
541
+ @set_args[:state] = val[/false/] ? 'no' : ''
542
+ config_set('bgp', 'event_history_objstore', @set_args)
543
+ set_args_keys_default
544
+ end
545
+
546
+ def default_event_history_objstore
547
+ config_get_default('bgp', 'event_history_objstore')
481
548
  end
482
549
 
483
550
  # event-history periodic [ size <size> ]
@@ -486,13 +553,19 @@ module Cisco
486
553
  match = config_get('bgp', 'event_history_periodic', @get_args)
487
554
  if match.is_a?(Array)
488
555
  return 'false' if match[0] == 'no '
489
- return 'size_' + match[1] if match[1]
556
+ if match[1]
557
+ return match[1] if match[1][/\A\d+\z/]
558
+ return 'size_' + match[1]
559
+ end
560
+ else
561
+ return default_event_history_periodic
490
562
  end
563
+ return 'true' unless default_event_history_periodic[/size/]
491
564
  default_event_history_periodic
492
565
  end
493
566
 
494
567
  def event_history_periodic=(val)
495
- size = val[/small|medium|large|disable/]
568
+ size = val[/small|medium|large|disable|\A\d+\z/] unless val[/false|true/]
496
569
  @set_args[:size] = size.nil? ? '' : "size #{size}"
497
570
  @set_args[:state] = val[/false/] ? 'no' : ''
498
571
  config_set('bgp', 'event_history_periodic', @set_args)
@@ -500,7 +573,12 @@ module Cisco
500
573
  end
501
574
 
502
575
  def default_event_history_periodic
503
- config_get_default('bgp', 'event_history_periodic')
576
+ if Utils.image_version?(/7.0.3.I2|I3|I4/) ||
577
+ Utils.chassis_pid?(/N(5|6|7|8)/)
578
+ config_get_default('bgp', 'event_history_periodic')
579
+ else
580
+ config_get('bgp', 'event_history_periodic_bytes', @get_args)
581
+ end
504
582
  end
505
583
 
506
584
  # Fast External fallover (Getter/Setter/Default)
@@ -565,7 +565,7 @@ module Cisco
565
565
  # sense to split up the individual methods to support them
566
566
  def send_community
567
567
  val = config_get('bgp_neighbor_af', 'send_community', @get_args)
568
- return default_send_community if val.nil?
568
+ return default_send_community if val.nil? || val.empty?
569
569
  platform == :nexus ? send_community_nexus(val) : send_community_xr(val)
570
570
  end
571
571
 
@@ -573,7 +573,9 @@ module Cisco
573
573
  # NOTE: 'standard' is default but does not nvgen on some platforms
574
574
  # Returns: none, both, extended, or standard
575
575
  def send_community_nexus(val)
576
- val = val.split.last
576
+ reg = 'send-community extended|send-community standard|send-community'
577
+ return 'both' if val.grep(/#{reg}/).size == 2
578
+ val = val[0].split.last
577
579
  return 'standard' if val[/send-community/] # Workaround
578
580
  val
579
581
  end
@@ -103,6 +103,16 @@ module Cisco
103
103
  true if Platform.image_version[/7.0.3.I2/]
104
104
  end
105
105
 
106
+ def self.image_version?(ver_regexp)
107
+ require_relative 'platform'
108
+ return true if Platform.image_version[ver_regexp]
109
+ end
110
+
111
+ def self.chassis_pid?(ver_regexp)
112
+ require_relative 'platform'
113
+ return true if Platform.chassis['pid'][ver_regexp]
114
+ end
115
+
106
116
  # Helper utility method for ip/prefix format networks.
107
117
  # For ip/prefix format '1.1.1.1/24' or '2000:123:38::34/64',
108
118
  # we need to mask the address using the prefix length so that they
@@ -156,8 +156,13 @@ event_history_detail:
156
156
  _exclude: [ios_xr]
157
157
  get_value: '/^(no )?event-history detail(?: size (\S+))?$/'
158
158
  set_value: '<state> event-history detail <size>'
159
- auto_default: false
160
- default_value: 'size_disable'
159
+ default_value: 'false'
160
+
161
+ event_history_errors:
162
+ _exclude: [ios_xr]
163
+ get_value: '/^(no )?event-history errors(?: size (\S+))?$/'
164
+ set_value: '<state> event-history errors <size>'
165
+ default_value: 'size_medium'
161
166
 
162
167
  event_history_events:
163
168
  _exclude: [ios_xr]
@@ -165,12 +170,24 @@ event_history_events:
165
170
  set_value: '<state> event-history events <size>'
166
171
  default_value: 'size_small'
167
172
 
173
+ event_history_events_bytes:
174
+ default_only: 'size_large'
175
+
176
+ event_history_objstore:
177
+ _exclude: [ios_xr]
178
+ get_value: '/^(no )?event-history objstore(?: size (\S+))?$/'
179
+ set_value: '<state> event-history objstore <size>'
180
+ default_value: 'false'
181
+
168
182
  event_history_periodic:
169
183
  _exclude: [ios_xr]
170
184
  get_value: '/^(no )?event-history periodic(?: size (\S+))?$/'
171
185
  set_value: '<state> event-history periodic <size>'
172
186
  default_value: 'size_small'
173
187
 
188
+ event_history_periodic_bytes:
189
+ default_only: 'false'
190
+
174
191
  fast_external_fallover:
175
192
  kind: boolean
176
193
  default_value: true
@@ -168,13 +168,13 @@ route_reflector_client:
168
168
  default_value: false
169
169
 
170
170
  send_community:
171
+ multiple:
171
172
  auto_default: false
172
173
  default_value: 'none'
173
174
  nexus:
174
175
  get_value: '/^send-community(?: .*)?/'
175
176
  set_value: '<state> send-community <attr>'
176
177
  ios_xr:
177
- multiple:
178
178
  # XR three seperate commands: send-community-ebgp send-community-gshut-ebgp
179
179
  # and send-extended-community-ebgp
180
180
  # send-community-ebgp' and 'send-extended-community-ebgp' are the equivalents
@@ -49,10 +49,22 @@ lacp_min_links:
49
49
 
50
50
  lacp_suspend_individual:
51
51
  kind: boolean
52
- auto_default: false
53
52
  get_value: '/^lacp suspend.individual$/'
54
53
  set_value: "%s lacp suspend-individual"
55
- default_value: true
54
+ N3k:
55
+ default_value: false
56
+ else:
57
+ auto_default: false
58
+ default_value: true
59
+
60
+ lacp_suspend_shut_needed:
61
+ # This is used to determine if the port-channel interface
62
+ # must be shutdown before setting lacp_suspend_individual
63
+ kind: boolean
64
+ N9k:
65
+ default_only: true
66
+ else:
67
+ default_only: false
56
68
 
57
69
  port_hash_distribution:
58
70
  _exclude: [N6k, N5k]
@@ -125,12 +125,6 @@ module Cisco
125
125
  existing << submode.compare_with(config_submode)
126
126
  next
127
127
  end # if
128
-
129
- prefix, base = base_commands(command)
130
- if prefix != '' && !config.include_command?(base)
131
- existing << config_line
132
- next
133
- end
134
128
  end
135
129
  existing
136
130
  end # compare_with
@@ -115,14 +115,29 @@ module Cisco
115
115
  config_get_default('interface_portchannel', 'lacp_min_links')
116
116
  end
117
117
 
118
+ def lacp_suspend_shut_needed?
119
+ config_get('interface_portchannel', 'lacp_suspend_shut_needed')
120
+ end
121
+
118
122
  def lacp_suspend_individual
119
123
  config_get('interface_portchannel', 'lacp_suspend_individual', @name)
120
124
  end
121
125
 
122
126
  def lacp_suspend_individual=(state)
123
127
  no_cmd = (state ? '' : 'no')
128
+ # This property can only be set if the port-channel is shutdown on
129
+ # some platforms.
130
+ # This setter will:
131
+ # 1) Query the current state of the port-channel interface.
132
+ # 2) Shutdown the port-channel interface if needed.
133
+ # 3) Set the lacp_suspend_individual property.
134
+ # 4) Restore the original state of the port-channel interface if needed.
135
+ int = Interface.new(@name, false)
136
+ current_state = int.shutdown
137
+ int.shutdown = true if lacp_suspend_shut_needed? && !current_state
124
138
  config_set('interface_portchannel',
125
139
  'lacp_suspend_individual', @name, no_cmd)
140
+ int.shutdown = current_state unless current_state == int.shutdown
126
141
  end
127
142
 
128
143
  def default_lacp_suspend_individual
@@ -14,7 +14,7 @@
14
14
 
15
15
  # Container module for version number only.
16
16
  module CiscoNodeUtils
17
- VERSION = '1.4.0'
17
+ VERSION = '1.4.1'
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
@@ -28,6 +28,7 @@ nexus:
28
28
  no feature lacp
29
29
  no feature dhcp
30
30
  no feature vtp
31
+ nvgen: false
31
32
 
32
33
  feature-snmp-comm-acl-ro:
33
34
  command: |
@@ -40,14 +41,19 @@ nexus:
40
41
  snmp-server community admincom use-acl SNMP_RW
41
42
 
42
43
  feature-int-loopback:
43
- command: >
44
+ command: |
44
45
  interface loopback0
45
46
  description testloopback
46
47
 
47
48
  feature-int-portchannel:
48
- command: >
49
+ setup: |
50
+ interface port-channel100
51
+ no switchport
52
+ command: |
53
+ feature bfd
49
54
  interface port-channel100
50
55
  description test-portchannel
56
+ no bfd echo
51
57
 
52
58
  ios_xr:
53
59
  name-server:
data/tests/test_ace.rb CHANGED
@@ -219,13 +219,21 @@ class TestAce < CiscoTestCase
219
219
  end
220
220
  end
221
221
 
222
- def test_ttl
222
+ def test_ttl_ipv4
223
223
  val = '3'
224
- %w(ipv4 ipv6).each do |afi|
225
- a = ace_helper(afi, ttl: val)
226
- skip("This property has a known defect on the platform itself -\n"\
227
- 'CSCuy47463: access-list ttl does not nvgen') if a.ttl.nil?
228
- assert_equal(val, a.ttl)
229
- end
224
+ afi = 'ipv4'
225
+ a = ace_helper(afi, ttl: val)
226
+ skip("This property has a known defect on the platform itself -\n"\
227
+ 'CSCuy47463: access-list ttl does not nvgen') if a.ttl.nil?
228
+ assert_equal(val, a.ttl)
229
+ end
230
+
231
+ def test_ttl_ipv6
232
+ val = '3'
233
+ afi = 'ipv6'
234
+ a = ace_helper(afi, ttl: val)
235
+ skip("This property has a known defect on the platform itself -\n"\
236
+ 'CSCuy47463: access-list ttl does not nvgen') if a.ttl.nil?
237
+ assert_equal(val, a.ttl)
230
238
  end
231
239
  end
@@ -44,7 +44,7 @@ class TestCommandConfig < CiscoTestCase
44
44
  commands.gsub(/^\s*$\n/, '')
45
45
  end # remove_whitespace
46
46
 
47
- def compare_with_results(desired_config_str, current_key)
47
+ def compare_with_results(desired_config_str, _current_key, nvgen)
48
48
  retrieve_command = 'show running all'
49
49
  running_config_str = node.get(command: retrieve_command)
50
50
 
@@ -58,14 +58,20 @@ class TestCommandConfig < CiscoTestCase
58
58
  puts e.what
59
59
  end
60
60
  # puts "Existing command block:\n#{existing}"
61
- assert_equal(existing.empty?, false,
62
- "Error: Expected configuration \n'#{desired_config_str}'\n " \
63
- "does not exist.\nHash Key: #{current_key}")
61
+ if nvgen == false
62
+ msg = "The following configuration should be removed: #{desired_config_str}"
63
+ assert_equal(existing.empty?, true, msg)
64
+ else
65
+ msg = "The following configuration should exist but doesn't: #{desired_config_str}"
66
+ assert_equal(existing.empty?, false, msg)
67
+ end
64
68
  end
65
69
 
66
70
  def send_device_config(config_cmd_hash)
67
71
  config_cmd_hash.each do |k, v|
68
- v.each_value do |v1|
72
+ v.each do |k1, v1|
73
+ next if k1 == 'nvgen'
74
+ config(v1) if k1 == 'setup'
69
75
  # Send commands
70
76
  cfg_cmd_str = "#{v1.gsub(/^/, ' ')}"
71
77
  cfg_string = remove_whitespace(cfg_cmd_str)
@@ -73,7 +79,7 @@ class TestCommandConfig < CiscoTestCase
73
79
  begin
74
80
  node.set(values: cfg_string)
75
81
  # make sure config is present in success case
76
- compare_with_results(v1, k)
82
+ compare_with_results(v1, k, config_cmd_hash[k]['nvgen'])
77
83
  rescue CliError => e
78
84
  known_failure = e.message[/ERROR:.*port channel not present/]
79
85
  refute(known_failure, 'ERROR: port channel not present')
@@ -113,10 +119,10 @@ class TestCommandConfig < CiscoTestCase
113
119
  def test_valid_scale
114
120
  show_int_count = "show int brief | i '^\S+\s+--' | count"
115
121
  pre = @device.cmd(show_int_count)[/^(\d+)$/]
116
-
117
122
  # Add 1024 loopback interfaces
118
123
  cfg_hash_add = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) }
119
124
  cfg_hash_add ['loopback-int-add']['command'] = "#{build_int_scale_config}"
125
+ cfg_hash_add ['loopback-int-add']['nvgen'] = true
120
126
  begin
121
127
  send_device_config(cfg_hash_add)
122
128
  rescue Timeout::Error
@@ -131,6 +137,7 @@ class TestCommandConfig < CiscoTestCase
131
137
  cfg_hash_remove = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) }
132
138
  cfg_hash_remove['loopback-int-add']['command'] = \
133
139
  "#{build_int_scale_config(false)}"
140
+ cfg_hash_remove ['loopback-int-add']['nvgen'] = false
134
141
  begin
135
142
  send_device_config(cfg_hash_remove)
136
143
  rescue Timeout::Error
@@ -566,6 +566,7 @@ class TestInterface < CiscoTestCase
566
566
  assert_raises(Cisco::UnsupportedError) { interface.bfd_echo = false }
567
567
  return
568
568
  end
569
+ interface.switchport_mode = :disabled
569
570
  assert_equal(interface.default_bfd_echo,
570
571
  interface.bfd_echo)
571
572
  interface.bfd_echo = false
@@ -94,12 +94,32 @@ class TestInterfacePortChannel < CiscoTestCase
94
94
 
95
95
  def test_lacp_suspend_individual
96
96
  interface = create_port_channel
97
- interface.lacp_suspend_individual = false
98
- assert_equal(false, interface.lacp_suspend_individual)
99
- interface.lacp_suspend_individual =
100
- interface.default_lacp_suspend_individual
101
- assert_equal(interface.default_lacp_suspend_individual,
102
- interface.lacp_suspend_individual)
97
+
98
+ # Run this test with the portchannel in both a 'shutdown'
99
+ # and 'no shutdown' state.
100
+ int_obj = Interface.new(interface.name)
101
+ [true, false].each do |state|
102
+ int_obj.shutdown = state
103
+
104
+ # Test initial default case
105
+ assert_equal(interface.default_lacp_suspend_individual,
106
+ interface.lacp_suspend_individual)
107
+
108
+ # Test non-default value
109
+ val = !interface.default_lacp_suspend_individual
110
+ interface.lacp_suspend_individual = val
111
+ assert_equal(val, interface.lacp_suspend_individual)
112
+
113
+ # Set back to default
114
+ interface.lacp_suspend_individual =
115
+ interface.default_lacp_suspend_individual
116
+ assert_equal(interface.default_lacp_suspend_individual,
117
+ interface.lacp_suspend_individual)
118
+
119
+ # Make sure interface ends up in the same state.
120
+ assert_equal(state, int_obj.shutdown,
121
+ "Interface #{int_obj.name} incorrect state after setting property")
122
+ end
103
123
  end
104
124
 
105
125
  def test_port_load_defer
@@ -60,6 +60,12 @@ def setup_vrf
60
60
  create_bgp_vrf(@asnum, @vrf)
61
61
  end
62
62
 
63
+ def newer_image_version?
64
+ return false if Utils.image_version?(/7.0.3.I2|I3|I4/) ||
65
+ Utils.chassis_pid?(/N(5|6|7|8)/)
66
+ true
67
+ end
68
+
63
69
  # TestRouterBgp - Minitest for RouterBgp class
64
70
  class TestRouterBgp < CiscoTestCase
65
71
  @@pre_clean_needed = true # rubocop:disable Style/ClassVars
@@ -580,54 +586,198 @@ class TestRouterBgp < CiscoTestCase
580
586
  bgp.destroy
581
587
  end
582
588
 
583
- def test_event_history
589
+ def test_event_history_cli
584
590
  bgp = setup_default
591
+ if validate_property_excluded?('bgp', 'event_history_cli')
592
+ assert_nil(bgp.event_history_cli)
593
+ assert_raises(Cisco::UnsupportedError) do
594
+ bgp.event_history_cli = 'true'
595
+ end
596
+ return
597
+ end
598
+ assert_equal(bgp.default_event_history_cli, bgp.event_history_cli)
599
+ bgp.event_history_cli = 'true'
600
+ assert_equal(bgp.default_event_history_cli, bgp.event_history_cli)
601
+ bgp.event_history_cli = 'false'
602
+ assert_equal('false', bgp.event_history_cli)
603
+ bgp.event_history_cli = 'size_small'
604
+ assert_equal('size_small', bgp.event_history_cli)
605
+ bgp.event_history_cli = 'size_large'
606
+ assert_equal('size_large', bgp.event_history_cli)
607
+ bgp.event_history_cli = 'size_medium'
608
+ assert_equal('size_medium', bgp.event_history_cli)
609
+ bgp.event_history_cli = 'size_disable'
610
+ if newer_image_version?
611
+ assert_equal('false', bgp.event_history_cli)
612
+ else
613
+ assert_equal('size_disable', bgp.event_history_cli)
614
+ end
615
+ bgp.event_history_cli = '100000'
616
+ assert_equal('100000', bgp.event_history_cli)
617
+ bgp.event_history_cli = bgp.default_event_history_cli
618
+ assert_equal(bgp.default_event_history_cli, bgp.event_history_cli)
619
+ end
585
620
 
586
- opts = [:cli, :detail, :events, :periodic]
587
- opts.each do |opt|
588
- if platform == :ios_xr # unsupported on XR
589
- assert_equal(nil, bgp.send("event_history_#{opt}"))
590
- assert_equal(nil, bgp.send("default_event_history_#{opt}"))
591
- assert_raises(Cisco::UnsupportedError) do
592
- bgp.send("event_history_#{opt}=", 'true')
593
- end
594
- next
621
+ def test_event_history_detail
622
+ bgp = setup_default
623
+ if validate_property_excluded?('bgp', 'event_history_detail')
624
+ assert_nil(bgp.event_history_detail)
625
+ assert_raises(Cisco::UnsupportedError) do
626
+ bgp.event_history_detail = 'true'
627
+ end
628
+ return
629
+ end
630
+ assert_equal(bgp.default_event_history_detail, bgp.event_history_detail)
631
+ bgp.event_history_detail = 'true'
632
+ assert_equal('true', bgp.event_history_detail)
633
+ bgp.event_history_detail = 'false'
634
+ assert_equal(bgp.default_event_history_detail, bgp.event_history_detail)
635
+ bgp.event_history_detail = 'size_small'
636
+ assert_equal('size_small', bgp.event_history_detail)
637
+ bgp.event_history_detail = 'size_large'
638
+ assert_equal('size_large', bgp.event_history_detail)
639
+ bgp.event_history_detail = 'size_medium'
640
+ assert_equal('size_medium', bgp.event_history_detail)
641
+ bgp.event_history_detail = 'size_disable'
642
+ if newer_image_version?
643
+ assert_equal('false', bgp.event_history_detail)
644
+ else
645
+ assert_equal('size_disable', bgp.event_history_detail)
646
+ end
647
+ bgp.event_history_detail = '100000'
648
+ assert_equal('100000', bgp.event_history_detail)
649
+ bgp.event_history_detail = bgp.default_event_history_detail
650
+ assert_equal(bgp.default_event_history_detail, bgp.event_history_detail)
651
+ end
652
+
653
+ def test_event_history_errors
654
+ bgp = setup_default
655
+ if validate_property_excluded?('bgp', 'event_history_errors')
656
+ assert_nil(bgp.event_history_errors)
657
+ assert_raises(Cisco::UnsupportedError) do
658
+ bgp.event_history_errors = 'true'
659
+ end
660
+ return
661
+ end
662
+ skip('platform not supported for this test') unless newer_image_version?
663
+ assert_equal(bgp.default_event_history_errors, bgp.event_history_errors)
664
+ bgp.event_history_errors = 'true'
665
+ assert_equal(bgp.default_event_history_errors, bgp.event_history_errors)
666
+ bgp.event_history_errors = 'false'
667
+ assert_equal('false', bgp.event_history_errors)
668
+ bgp.event_history_errors = 'size_small'
669
+ assert_equal('size_small', bgp.event_history_errors)
670
+ bgp.event_history_errors = 'size_large'
671
+ assert_equal('size_large', bgp.event_history_errors)
672
+ bgp.event_history_errors = 'size_medium'
673
+ assert_equal('size_medium', bgp.event_history_errors)
674
+ bgp.event_history_errors = 'size_disable'
675
+ assert_equal('false', bgp.event_history_errors)
676
+ bgp.event_history_errors = '100000'
677
+ assert_equal('100000', bgp.event_history_errors)
678
+ bgp.event_history_errors = bgp.default_event_history_errors
679
+ assert_equal(bgp.default_event_history_errors, bgp.event_history_errors)
680
+ end
681
+
682
+ def test_event_history_events
683
+ bgp = setup_default
684
+ if validate_property_excluded?('bgp', 'event_history_events')
685
+ assert_nil(bgp.event_history_events)
686
+ assert_raises(Cisco::UnsupportedError) do
687
+ bgp.event_history_events = 'true'
595
688
  end
596
- # Test basic true
597
- bgp.send("event_history_#{opt}=", 'true')
598
- set = bgp.send("default_event_history_#{opt}")
599
- result = bgp.send("event_history_#{opt}")
600
- assert_equal(set, result,
601
- "event_history_#{opt}: Failed to set to default state")
602
-
603
- # Test true with size
604
- bgp.send("event_history_#{opt}=", 'size_large')
605
- result = bgp.send("event_history_#{opt}")
606
- assert_equal('size_large', result,
607
- "event_history_#{opt}: Failed to set True with Size large")
608
-
609
- # Test false with size
610
- bgp.send("event_history_#{opt}=", 'false')
611
- result = bgp.send("event_history_#{opt}")
612
- expected = (opt == :detail) ? bgp.default_event_history_detail : 'false'
613
- expected = 'size_disable' if opt == :events
614
- assert_equal(expected, result,
615
- "event_history_#{opt}: Failed to set state to False")
616
-
617
- # Test true with size, from false
618
- bgp.send("event_history_#{opt}=", 'size_small')
619
- result = bgp.send("event_history_#{opt}")
620
- assert_equal('size_small', result,
621
- "event_history_#{opt}: Failed to set True with "\
622
- 'Size from false state')
623
-
624
- # Test default_state
625
- set = bgp.send("default_event_history_#{opt}")
626
- bgp.send("event_history_#{opt}=", set)
627
- result = bgp.send("event_history_#{opt}")
628
- assert_equal(set, result,
629
- "event_history_#{opt}: Failed to set state to default")
689
+ return
690
+ end
691
+ assert_equal(bgp.default_event_history_events, bgp.event_history_events)
692
+ bgp.event_history_events = 'true'
693
+ assert_equal(bgp.default_event_history_events, bgp.event_history_events)
694
+ bgp.event_history_events = 'false'
695
+ assert_equal('false', bgp.event_history_events)
696
+ bgp.event_history_events = 'size_small'
697
+ assert_equal('size_small', bgp.event_history_events)
698
+ bgp.event_history_events = 'size_large'
699
+ assert_equal('size_large', bgp.event_history_events)
700
+ bgp.event_history_events = 'size_medium'
701
+ assert_equal('size_medium', bgp.event_history_events)
702
+ bgp.event_history_events = 'size_disable'
703
+ if newer_image_version?
704
+ assert_equal('false', bgp.event_history_events)
705
+ else
706
+ assert_equal('size_disable', bgp.event_history_events)
707
+ end
708
+ bgp.event_history_events = '100000'
709
+ assert_equal('100000', bgp.event_history_events)
710
+ bgp.event_history_events = bgp.default_event_history_events
711
+ assert_equal(bgp.default_event_history_events, bgp.event_history_events)
712
+ end
713
+
714
+ def test_event_history_objstore
715
+ bgp = setup_default
716
+ if validate_property_excluded?('bgp', 'event_history_objstore')
717
+ assert_nil(bgp.event_history_objstore)
718
+ assert_raises(Cisco::UnsupportedError) do
719
+ bgp.event_history_objstore = 'true'
720
+ end
721
+ return
722
+ end
723
+ skip('platform not supported for this test') unless newer_image_version?
724
+ assert_equal(bgp.default_event_history_objstore, bgp.event_history_objstore)
725
+ bgp.event_history_objstore = 'true'
726
+ assert_equal('true', bgp.event_history_objstore)
727
+ bgp.event_history_objstore = 'false'
728
+ assert_equal(bgp.default_event_history_objstore, bgp.event_history_objstore)
729
+ bgp.event_history_objstore = 'size_small'
730
+ assert_equal('size_small', bgp.event_history_objstore)
731
+ bgp.event_history_objstore = 'size_large'
732
+ assert_equal('size_large', bgp.event_history_objstore)
733
+ bgp.event_history_objstore = 'size_medium'
734
+ assert_equal('size_medium', bgp.event_history_objstore)
735
+ bgp.event_history_objstore = 'size_disable'
736
+ assert_equal('false', bgp.event_history_objstore)
737
+ bgp.event_history_objstore = '100000'
738
+ assert_equal('100000', bgp.event_history_objstore)
739
+ bgp.event_history_objstore = bgp.default_event_history_objstore
740
+ assert_equal(bgp.default_event_history_objstore, bgp.event_history_objstore)
741
+ end
742
+
743
+ def test_event_history_periodic
744
+ bgp = setup_default
745
+ if validate_property_excluded?('bgp', 'event_history_periodic')
746
+ assert_nil(bgp.event_history_periodic)
747
+ assert_raises(Cisco::UnsupportedError) do
748
+ bgp.event_history_periodic = 'true'
749
+ end
750
+ return
751
+ end
752
+ assert_equal(bgp.default_event_history_periodic,
753
+ bgp.event_history_periodic)
754
+ bgp.event_history_periodic = 'false'
755
+ assert_equal('false', bgp.event_history_periodic)
756
+ bgp.event_history_periodic = 'size_small'
757
+ assert_equal('size_small', bgp.event_history_periodic)
758
+ bgp.event_history_periodic = 'size_large'
759
+ assert_equal('size_large', bgp.event_history_periodic)
760
+ bgp.event_history_periodic = 'size_medium'
761
+ assert_equal('size_medium', bgp.event_history_periodic)
762
+ bgp.event_history_periodic = '100000'
763
+ assert_equal('100000', bgp.event_history_periodic)
764
+ bgp.event_history_periodic = 'size_disable'
765
+ if newer_image_version?
766
+ assert_equal(bgp.default_event_history_periodic,
767
+ bgp.event_history_periodic)
768
+ else
769
+ assert_equal('size_disable', bgp.event_history_periodic)
770
+ end
771
+ bgp.event_history_periodic = 'true'
772
+ if newer_image_version?
773
+ assert_equal('true', bgp.event_history_periodic)
774
+ else
775
+ assert_equal(bgp.default_event_history_periodic,
776
+ bgp.event_history_periodic)
630
777
  end
778
+ bgp.event_history_periodic = bgp.default_event_history_periodic
779
+ assert_equal(bgp.default_event_history_periodic,
780
+ bgp.event_history_periodic)
631
781
  end
632
782
 
633
783
  def test_fast_external_fallover
@@ -14,7 +14,6 @@
14
14
 
15
15
  require_relative 'ciscotest'
16
16
  require_relative '../lib/cisco_node_utils/snmpuser'
17
- require 'pry'
18
17
 
19
18
  DEFAULT_SNMP_USER_AUTH_PASSWORD = ''
20
19
  DEFAULT_SNMP_USER_PRIV_PASSWORD = ''
data/tests/test_yum.rb CHANGED
@@ -122,7 +122,7 @@ class TestYum < CiscoTestCase
122
122
  end
123
123
 
124
124
  def test_package_does_not_exist_error
125
- assert_raises(Cisco::CliError) do
125
+ assert_raises(RuntimeError) do
126
126
  Yum.install('bootflash:this_is_not_real.rpm', 'management')
127
127
  end
128
128
  assert_raises(RuntimeError) do
@@ -29,7 +29,7 @@
29
29
  version: '1.0.0-7.0.3.I4.2'
30
30
 
31
31
  7_0_3_I5_1_:
32
- filename: 'nxos.sample-n9k_EOR-1.0.0-7.0.3.I5.1.lib32_n9000.rpm'
33
- name: 'nxos.sample-n9k_EOR'
32
+ filename: 'nxos.sample-n9k_ALL-1.0.0-7.0.3.I5.1.lib32_n9000.rpm'
33
+ name: 'nxos.sample-n9k_ALL'
34
34
  version: '1.0.0-7.0.3.I5.1'
35
35
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cisco_node_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Gries
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2016-10-03 00:00:00.000000000 Z
17
+ date: 2016-11-02 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: bundler