Class: Cisco::Vpc

Inherits:
NodeUtil show all
Defined in:
lib/cisco_node_utils/vpc.rb

Overview

Vpc - node utility class for VTP configuration management

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from NodeUtil

client, #client, config_get, #config_get, #config_get_default, config_get_default, config_set, #config_set, #get, #ios_xr?, #nexus?, #node, node, platform, #platform, supports?, #supports?

Constructor Details

#initialize(domain_id, instantiate = true) ⇒ Vpc

Constructor for Vpc



30
31
32
33
34
# File 'lib/cisco_node_utils/vpc.rb', line 30

def initialize(domain_id, instantiate=true)
  @domain = domain_id

  create if instantiate
end

Instance Attribute Details

#domainObject (readonly)

Returns the value of attribute domain.



28
29
30
# File 'lib/cisco_node_utils/vpc.rb', line 28

def domain
  @domain
end

Class Method Details

.domainsObject



36
37
38
39
40
41
42
43
44
45
# File 'lib/cisco_node_utils/vpc.rb', line 36

def self.domains
  hash = {}
  my_domain = config_get('vpc', 'domain')
  hash[my_domain] = Vpc.new(my_domain, false) unless my_domain.nil?
  hash
rescue Cisco::CliError => e
  # cmd will syntax reject when feature is not enabled
  raise unless e.clierror =~ /Syntax error/
  return {}
end

.enabledObject



47
48
49
50
51
52
53
# File 'lib/cisco_node_utils/vpc.rb', line 47

def self.enabled
  config_get('vpc', 'feature')
rescue Cisco::CliError => e
  # cmd will syntax reject when feature is not enabled
  raise unless e.clierror =~ /Syntax error/
  return false
end

Instance Method Details

#auto_recoveryObject

PROPERTIES #



84
85
86
87
# File 'lib/cisco_node_utils/vpc.rb', line 84

def auto_recovery
  val = config_get('vpc', 'auto_recovery')
  val.nil? ? false : val
end

#auto_recovery=(val) ⇒ Object



89
90
91
92
# File 'lib/cisco_node_utils/vpc.rb', line 89

def auto_recovery=(val)
  set_args_keys(state: val ? '' : 'no')
  config_set('vpc', 'auto_recovery', @set_args)
end

#auto_recovery_reload_delayObject



98
99
100
# File 'lib/cisco_node_utils/vpc.rb', line 98

def auto_recovery_reload_delay
  config_get('vpc', 'auto_recovery_reload_delay')
end

#auto_recovery_reload_delay=(val) ⇒ Object



102
103
104
105
# File 'lib/cisco_node_utils/vpc.rb', line 102

def auto_recovery_reload_delay=(val)
  set_args_keys(delay: val)
  config_set('vpc', 'auto_recovery_reload_delay', @set_args)
end

#createObject



55
56
57
58
# File 'lib/cisco_node_utils/vpc.rb', line 55

def create
  enable unless Vpc.enabled
  config_set('vpc', 'domain', state: '', domain: @domain)
end

#default_auto_recoveryObject



94
95
96
# File 'lib/cisco_node_utils/vpc.rb', line 94

def default_auto_recovery
  config_get_default('vpc', 'auto_recovery')
end

#default_auto_recovery_reload_delayObject



107
108
109
# File 'lib/cisco_node_utils/vpc.rb', line 107

def default_auto_recovery_reload_delay
  config_get_default('vpc', 'auto_recovery_reload_delay')
end

#default_delay_restoreObject



120
121
122
# File 'lib/cisco_node_utils/vpc.rb', line 120

def default_delay_restore
  config_get_default('vpc', 'delay_restore')
end

#default_delay_restore_interface_vlanObject



133
134
135
# File 'lib/cisco_node_utils/vpc.rb', line 133

def default_delay_restore_interface_vlan
  config_get_default('vpc', 'delay_restore_interface_vlan')
end

#default_dual_active_exclude_interface_vlan_bridge_domainObject



147
148
149
150
# File 'lib/cisco_node_utils/vpc.rb', line 147

def default_dual_active_exclude_interface_vlan_bridge_domain
  config_get_default('vpc',
                     'dual_active_exclude_interface_vlan_bridge_domain')
end

#default_fabricpath_emulated_switch_idObject



163
164
165
# File 'lib/cisco_node_utils/vpc.rb', line 163

def default_fabricpath_emulated_switch_id
  config_get_default('vpc', 'fabricpath_emulated_switch_id')
end

#default_fabricpath_multicast_load_balanceObject



180
181
182
# File 'lib/cisco_node_utils/vpc.rb', line 180

def default_fabricpath_multicast_load_balance
  config_get_default('vpc', 'fabricpath_multicast_load_balance')
end

#default_graceful_consistency_checkObject



194
195
196
# File 'lib/cisco_node_utils/vpc.rb', line 194

def default_graceful_consistency_check
  config_get_default('vpc', 'graceful_consistency_check')
end

#default_layer3_peer_routingObject



209
210
211
# File 'lib/cisco_node_utils/vpc.rb', line 209

def default_layer3_peer_routing
  config_get_default('vpc', 'layer3_peer_routing')
end

#default_peer_gatewayObject



298
299
300
# File 'lib/cisco_node_utils/vpc.rb', line 298

def default_peer_gateway
  config_get_default('vpc', 'peer_gateway')
end

#default_peer_gateway_exclude_bridge_domainObject



311
312
313
# File 'lib/cisco_node_utils/vpc.rb', line 311

def default_peer_gateway_exclude_bridge_domain
  config_get_default('vpc', 'peer_gateway_exclude_bridge_domain')
end

#default_peer_gateway_exclude_vlanObject



324
325
326
# File 'lib/cisco_node_utils/vpc.rb', line 324

def default_peer_gateway_exclude_vlan
  config_get_default('vpc', 'peer_gateway_exclude_vlan')
end

#default_peer_keepalive_destObject



218
219
220
# File 'lib/cisco_node_utils/vpc.rb', line 218

def default_peer_keepalive_dest
  config_get_default('vpc', 'peer_keepalive_dest')
end

#default_peer_keepalive_hold_timeoutObject



226
227
228
# File 'lib/cisco_node_utils/vpc.rb', line 226

def default_peer_keepalive_hold_timeout
  config_get_default('vpc', 'peer_keepalive_hold_timeout')
end

#default_peer_keepalive_intervalObject



234
235
236
# File 'lib/cisco_node_utils/vpc.rb', line 234

def default_peer_keepalive_interval
  config_get_default('vpc', 'peer_keepalive_interval')
end

#default_peer_keepalive_interval_timeoutObject



242
243
244
# File 'lib/cisco_node_utils/vpc.rb', line 242

def default_peer_keepalive_interval_timeout
  config_get_default('vpc', 'peer_keepalive_timeout')
end

#default_peer_keepalive_precedenceObject



250
251
252
# File 'lib/cisco_node_utils/vpc.rb', line 250

def default_peer_keepalive_precedence
  config_get_default('vpc', 'peer_keepalive_precedence')
end

#default_peer_keepalive_srcObject



258
259
260
# File 'lib/cisco_node_utils/vpc.rb', line 258

def default_peer_keepalive_src
  config_get_default('vpc', 'peer_keepalive_src')
end

#default_peer_keepalive_udp_portObject



266
267
268
# File 'lib/cisco_node_utils/vpc.rb', line 266

def default_peer_keepalive_udp_port
  config_get_default('vpc', 'peer_keepalive_udp_port')
end

#default_peer_keepalive_vrfObject



274
275
276
# File 'lib/cisco_node_utils/vpc.rb', line 274

def default_peer_keepalive_vrf
  config_get_default('vpc', 'peer_keepalive_vrf')
end

#default_port_channel_limitObject



341
342
343
# File 'lib/cisco_node_utils/vpc.rb', line 341

def default_port_channel_limit
  config_get_default('vpc', 'port_channel_limit')
end

#default_role_priorityObject



354
355
356
# File 'lib/cisco_node_utils/vpc.rb', line 354

def default_role_priority
  config_get_default('vpc', 'role_priority')
end

#default_self_isolationObject



368
369
370
# File 'lib/cisco_node_utils/vpc.rb', line 368

def default_self_isolation
  config_get_default('vpc', 'self_isolation')
end

#default_shutdownObject



381
382
383
# File 'lib/cisco_node_utils/vpc.rb', line 381

def default_shutdown
  config_get_default('vpc', 'shutdown')
end

#default_system_macObject



394
395
396
# File 'lib/cisco_node_utils/vpc.rb', line 394

def default_system_mac
  config_get_default('vpc', 'system_mac')
end

#default_system_priorityObject



407
408
409
# File 'lib/cisco_node_utils/vpc.rb', line 407

def default_system_priority
  config_get_default('vpc', 'system_priority')
end

#default_trackObject



425
426
427
# File 'lib/cisco_node_utils/vpc.rb', line 425

def default_track
  config_get_default('vpc', 'track')
end

#delay_restoreObject



111
112
113
# File 'lib/cisco_node_utils/vpc.rb', line 111

def delay_restore
  config_get('vpc', 'delay_restore')
end

#delay_restore=(delay) ⇒ Object



115
116
117
118
# File 'lib/cisco_node_utils/vpc.rb', line 115

def delay_restore=(delay)
  set_args_keys(delay: delay)
  config_set('vpc', 'delay_restore', @set_args)
end

#delay_restore_interface_vlanObject



124
125
126
# File 'lib/cisco_node_utils/vpc.rb', line 124

def delay_restore_interface_vlan
  config_get('vpc', 'delay_restore_interface_vlan')
end

#delay_restore_interface_vlan=(delay) ⇒ Object



128
129
130
131
# File 'lib/cisco_node_utils/vpc.rb', line 128

def delay_restore_interface_vlan=(delay)
  set_args_keys(delay: delay)
  config_set('vpc', 'delay_restore_interface_vlan', @set_args)
end

#destroyObject



60
61
62
# File 'lib/cisco_node_utils/vpc.rb', line 60

def destroy
  config_set('vpc', 'feature', state: 'no')
end

#dual_active_exclude_interface_vlan_bridge_domainObject



137
138
139
# File 'lib/cisco_node_utils/vpc.rb', line 137

def dual_active_exclude_interface_vlan_bridge_domain
  config_get('vpc', 'dual_active_exclude_interface_vlan_bridge_domain')
end

#dual_active_exclude_interface_vlan_bridge_domain=(val) ⇒ Object



141
142
143
144
145
# File 'lib/cisco_node_utils/vpc.rb', line 141

def dual_active_exclude_interface_vlan_bridge_domain=(val)
  set_args_keys(state: val ? '' : 'no', range: val)
  config_set('vpc', 'dual_active_exclude_interface_vlan_bridge_domain',
             @set_args)
end

#enableObject



64
65
66
# File 'lib/cisco_node_utils/vpc.rb', line 64

def enable
  config_set('vpc', 'feature', state: '')
end

#fabricpath_emulated_switch_idObject



152
153
154
# File 'lib/cisco_node_utils/vpc.rb', line 152

def fabricpath_emulated_switch_id
  config_get('vpc', 'fabricpath_emulated_switch_id')
end

#fabricpath_emulated_switch_id=(switch_id) ⇒ Object



156
157
158
159
160
161
# File 'lib/cisco_node_utils/vpc.rb', line 156

def fabricpath_emulated_switch_id=(switch_id)
  FabricpathGlobal.fabricpath_enable
  set_args_keys(state: switch_id ? '' : 'no',
                swid:  switch_id ? switch_id : '')
  config_set('vpc', 'fabricpath_emulated_switch_id', @set_args)
end

#fabricpath_multicast_load_balanceObject

Note: fabricpath_multicast_load_balance also requires fabricpath_emulated_switch_id before it will be functional but it will config & nvgen independently.



170
171
172
# File 'lib/cisco_node_utils/vpc.rb', line 170

def fabricpath_multicast_load_balance
  config_get('vpc', 'fabricpath_multicast_load_balance')
end

#fabricpath_multicast_load_balance=(state) ⇒ Object



174
175
176
177
178
# File 'lib/cisco_node_utils/vpc.rb', line 174

def fabricpath_multicast_load_balance=(state)
  FabricpathGlobal.fabricpath_enable
  set_args_keys(state: state ? '' : 'no')
  config_set('vpc', 'fabricpath_multicast_load_balance', @set_args)
end

#graceful_consistency_checkObject



184
185
186
187
# File 'lib/cisco_node_utils/vpc.rb', line 184

def graceful_consistency_check
  val = config_get('vpc', 'graceful_consistency_check')
  val.nil? ? false : val
end

#graceful_consistency_check=(val) ⇒ Object



189
190
191
192
# File 'lib/cisco_node_utils/vpc.rb', line 189

def graceful_consistency_check=(val)
  set_args_keys(state: val ? '' : 'no')
  config_set('vpc', 'graceful_consistency_check', @set_args)
end

#layer3_peer_routingObject



198
199
200
# File 'lib/cisco_node_utils/vpc.rb', line 198

def layer3_peer_routing
  config_get('vpc', 'layer3_peer_routing')
end

#layer3_peer_routing=(val) ⇒ Object



202
203
204
205
206
207
# File 'lib/cisco_node_utils/vpc.rb', line 202

def layer3_peer_routing=(val)
  set_args_keys(state: val ? '' : 'no')
  # This requires peer_gateway to be set first
  self.peer_gateway = true if !peer_gateway && val
  config_set('vpc', 'layer3_peer_routing', @set_args)
end

#peer_gatewayObject



287
288
289
# File 'lib/cisco_node_utils/vpc.rb', line 287

def peer_gateway
  config_get('vpc', 'peer_gateway')
end

#peer_gateway=(val) ⇒ Object



291
292
293
294
295
296
# File 'lib/cisco_node_utils/vpc.rb', line 291

def peer_gateway=(val)
  set_args_keys(state: val ? '' : 'no')
  # disable layer3 routing first
  self.layer3_peer_routing = false if !val && layer3_peer_routing
  config_set('vpc', 'peer_gateway', @set_args)
end

#peer_gateway_exclude_bridge_domainObject



302
303
304
# File 'lib/cisco_node_utils/vpc.rb', line 302

def peer_gateway_exclude_bridge_domain
  config_get('vpc', 'peer_gateway_exclude_bridge_domain')
end

#peer_gateway_exclude_bridge_domain=(val) ⇒ Object



306
307
308
309
# File 'lib/cisco_node_utils/vpc.rb', line 306

def peer_gateway_exclude_bridge_domain=(val)
  set_args_keys(state: val ? '' : 'no', range: val)
  config_set('vpc', 'peer_gateway_exclude_bridge_domain', @set_args)
end

#peer_gateway_exclude_vlanObject



315
316
317
# File 'lib/cisco_node_utils/vpc.rb', line 315

def peer_gateway_exclude_vlan
  config_get('vpc', 'peer_gateway_exclude_vlan')
end

#peer_gateway_exclude_vlan=(val) ⇒ Object



319
320
321
322
# File 'lib/cisco_node_utils/vpc.rb', line 319

def peer_gateway_exclude_vlan=(val)
  set_args_keys(state: val ? '' : 'no', range: val)
  config_set('vpc', 'peer_gateway_exclude_vlan', @set_args)
end

#peer_keepalive_destObject

peer keepalive



214
215
216
# File 'lib/cisco_node_utils/vpc.rb', line 214

def peer_keepalive_dest
  config_get('vpc', 'peer_keepalive_dest')
end

#peer_keepalive_hold_timeoutObject



222
223
224
# File 'lib/cisco_node_utils/vpc.rb', line 222

def peer_keepalive_hold_timeout
  config_get('vpc', 'peer_keepalive_hold_timeout')
end

#peer_keepalive_intervalObject



230
231
232
# File 'lib/cisco_node_utils/vpc.rb', line 230

def peer_keepalive_interval
  config_get('vpc', 'peer_keepalive_interval')
end

#peer_keepalive_interval_timeoutObject



238
239
240
# File 'lib/cisco_node_utils/vpc.rb', line 238

def peer_keepalive_interval_timeout
  config_get('vpc', 'peer_keepalive_timeout')
end

#peer_keepalive_precedenceObject



246
247
248
# File 'lib/cisco_node_utils/vpc.rb', line 246

def peer_keepalive_precedence
  config_get('vpc', 'peer_keepalive_precedence')
end

#peer_keepalive_set(dest, src, udp_port, vrf, interval, timeout, prec, hold_timeout) ⇒ Object

common setter



279
280
281
282
283
284
285
# File 'lib/cisco_node_utils/vpc.rb', line 279

def peer_keepalive_set(dest, src, udp_port, vrf, interval, timeout,
                       prec, hold_timeout)
  set_args_keys(dest: dest, src: src, port_num: udp_port, vrf: vrf,
                interval: interval, timeout: timeout,
                precedence: prec, hold_timeout: hold_timeout)
  config_set('vpc', 'peer_keepalive_set', @set_args)
end

#peer_keepalive_srcObject



254
255
256
# File 'lib/cisco_node_utils/vpc.rb', line 254

def peer_keepalive_src
  config_get('vpc', 'peer_keepalive_src')
end

#peer_keepalive_udp_portObject



262
263
264
# File 'lib/cisco_node_utils/vpc.rb', line 262

def peer_keepalive_udp_port
  config_get('vpc', 'peer_keepalive_udp_port')
end

#peer_keepalive_vrfObject



270
271
272
# File 'lib/cisco_node_utils/vpc.rb', line 270

def peer_keepalive_vrf
  config_get('vpc', 'peer_keepalive_vrf')
end

#port_channel_limitObject



328
329
330
331
# File 'lib/cisco_node_utils/vpc.rb', line 328

def port_channel_limit
  val = config_get('vpc', 'port_channel_limit')
  val.nil? ? false : val
end

#port_channel_limit=(val) ⇒ Object



333
334
335
336
337
338
339
# File 'lib/cisco_node_utils/vpc.rb', line 333

def port_channel_limit=(val)
  set_args_keys(state: val ? '' : 'no')
  # This requires fabricpath_emulated_switch_id to be set first
  fail 'fabricpath_switch_id configuration is required in the vPC domain' if
    !fabricpath_emulated_switch_id && !val
  config_set('vpc', 'port_channel_limit', @set_args)
end

#role_priorityObject



345
346
347
# File 'lib/cisco_node_utils/vpc.rb', line 345

def role_priority
  config_get('vpc', 'role_priority')
end

#role_priority=(priority) ⇒ Object



349
350
351
352
# File 'lib/cisco_node_utils/vpc.rb', line 349

def role_priority=(priority)
  set_args_keys(priority: priority)
  config_set('vpc', 'role_priority', @set_args)
end

#self_isolationObject



358
359
360
361
# File 'lib/cisco_node_utils/vpc.rb', line 358

def self_isolation
  val = config_get('vpc', 'self_isolation')
  val.nil? ? false : val
end

#self_isolation=(val) ⇒ Object



363
364
365
366
# File 'lib/cisco_node_utils/vpc.rb', line 363

def self_isolation=(val)
  set_args_keys(state: val ? '' : 'no')
  config_set('vpc', 'self_isolation', @set_args)
end

#set_args_keys(hash = {}) ⇒ Object

rubocop:disable Style/AccessorMethodName



74
75
76
77
# File 'lib/cisco_node_utils/vpc.rb', line 74

def set_args_keys(hash={})
  set_args_keys_default
  @set_args = @get_args.merge!(hash) unless hash.empty?
end

#set_args_keys_defaultObject



68
69
70
71
# File 'lib/cisco_node_utils/vpc.rb', line 68

def set_args_keys_default
  keys = { domain: @domain }
  @get_args = @set_args = keys
end

#shutdownObject



372
373
374
# File 'lib/cisco_node_utils/vpc.rb', line 372

def shutdown
  config_get('vpc', 'shutdown')
end

#shutdown=(val) ⇒ Object



376
377
378
379
# File 'lib/cisco_node_utils/vpc.rb', line 376

def shutdown=(val)
  set_args_keys(state: val ? '' : 'no')
  config_set('vpc', 'shutdown', @set_args)
end

#system_macObject



385
386
387
# File 'lib/cisco_node_utils/vpc.rb', line 385

def system_mac
  config_get('vpc', 'system_mac')
end

#system_mac=(mac_addr) ⇒ Object



389
390
391
392
# File 'lib/cisco_node_utils/vpc.rb', line 389

def system_mac=(mac_addr)
  set_args_keys(state: mac_addr.empty? ? 'no' : '', mac_addr: mac_addr)
  config_set('vpc', 'system_mac', @set_args)
end

#system_priorityObject



398
399
400
# File 'lib/cisco_node_utils/vpc.rb', line 398

def system_priority
  config_get('vpc', 'system_priority')
end

#system_priority=(priority) ⇒ Object



402
403
404
405
# File 'lib/cisco_node_utils/vpc.rb', line 402

def system_priority=(priority)
  set_args_keys(priority: priority)
  config_set('vpc', 'system_priority', @set_args)
end

#trackObject



411
412
413
# File 'lib/cisco_node_utils/vpc.rb', line 411

def track
  config_get('vpc', 'track')
end

#track=(val) ⇒ Object



415
416
417
418
419
420
421
422
423
# File 'lib/cisco_node_utils/vpc.rb', line 415

def track=(val)
  unless val.nil?
    fail ArgumentError, 'track must be an Integer' unless
      val.is_a?(Integer)
  end

  set_args_keys(state: (val == track) ? 'no' : '', val: val)
  config_set('vpc', 'track', @set_args)
end