Class: Cisco::Vtp

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

Overview

Vtp - node utility class for VTP configuration management

Constant Summary collapse

MAX_VTP_DOMAIN_NAME_SIZE =
32
MAX_VTP_PASSWORD_SIZE =
64

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from NodeUtil

config_get, #config_get, config_get_default, #config_get_default, #config_set, config_set, #node, node, #show

Constructor Details

#initialize(instantiate = true) ⇒ Vtp

Constructor for Vtp



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

def initialize(instantiate=true)
  enable if instantiate && !Vtp.enabled
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



22
23
24
# File 'lib/cisco_node_utils/vtp.rb', line 22

def name
  @name
end

Class Method Details

.domainObject

Get vtp domain name



50
51
52
# File 'lib/cisco_node_utils/vtp.rb', line 50

def self.domain
  enabled ? config_get('vtp', 'domain') : ''
end

.enabledObject



32
33
34
35
36
37
38
# File 'lib/cisco_node_utils/vtp.rb', line 32

def self.enabled
  config_get('vtp', '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

#default_filenameObject

Get default vtp filename



121
122
123
# File 'lib/cisco_node_utils/vtp.rb', line 121

def default_filename
  config_get_default('vtp', 'filename')
end

#default_passwordObject

Get default vtp password



100
101
102
# File 'lib/cisco_node_utils/vtp.rb', line 100

def default_password
  config_get_default('vtp', 'password')
end

#default_versionObject

Get default vtp version



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

def default_version
  config_get_default('vtp', 'version')
end

#destroyObject

Disable vtp feature



45
46
47
# File 'lib/cisco_node_utils/vtp.rb', line 45

def destroy
  config_set('vtp', 'feature', 'no')
end

#domainObject



54
55
56
# File 'lib/cisco_node_utils/vtp.rb', line 54

def domain
  Vtp.domain
end

#domain=(d) ⇒ Object

Set vtp domain name



59
60
61
62
63
64
65
66
67
68
69
# File 'lib/cisco_node_utils/vtp.rb', line 59

def domain=(d)
  fail ArgumentError unless d && d.is_a?(String) &&
                            d.length.between?(1, MAX_VTP_DOMAIN_NAME_SIZE)
  enable unless Vtp.enabled
  begin
    config_set('vtp', 'domain', d)
  rescue Cisco::CliError => e
    # cmd will syntax reject when setting name to same name
    raise unless e.clierror =~ /ERROR: Domain name already set to /
  end
end

#enableObject



40
41
42
# File 'lib/cisco_node_utils/vtp.rb', line 40

def enable
  config_set('vtp', 'feature', '')
end

#filenameObject

Get vtp filename



105
106
107
# File 'lib/cisco_node_utils/vtp.rb', line 105

def filename
  config_get('vtp', 'filename')
end

#filename=(uri) ⇒ Object

Set vtp filename



110
111
112
113
114
115
116
117
118
# File 'lib/cisco_node_utils/vtp.rb', line 110

def filename=(uri)
  fail TypeError if uri.nil?
  enable unless Vtp.enabled
  if uri.empty?
    config_set('vtp', 'filename', 'no', '')
  else
    config_set('vtp', 'filename', '', uri)
  end
end

#passwordObject

Get vtp password



72
73
74
75
76
77
# File 'lib/cisco_node_utils/vtp.rb', line 72

def password
  # Unfortunately nxapi returns "\\" when the password is not set
  password = config_get('vtp', 'password') if Vtp.enabled
  return '' if password.nil? || password == '\\'
  password
end

#password=(password) ⇒ Object

Set vtp password



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/cisco_node_utils/vtp.rb', line 80

def password=(password)
  fail TypeError if password.nil?
  fail TypeError unless password.is_a? String
  fail ArgumentError if password.length > MAX_VTP_PASSWORD_SIZE
  enable unless Vtp.enabled
  begin
    if password == default_password
      config_set('vtp', 'password', 'no', '')
    else
      config_set('vtp', 'password', '', password)
    end
  rescue Cisco::CliError => e
    raise unless e.clierror =~ /password cannot be set for NULL domain/
    unless password == default_password
      raise 'Setting VTP password requires first setting VTP domain'
    end
  end
end

#versionObject

Get vtp version



126
127
128
# File 'lib/cisco_node_utils/vtp.rb', line 126

def version
  Vtp.enabled ? config_get('vtp', 'version') : default_version
end

#version=(version) ⇒ Object

Set vtp version



131
132
133
134
# File 'lib/cisco_node_utils/vtp.rb', line 131

def version=(version)
  enable unless Vtp.enabled
  config_set('vtp', 'version', "#{version}")
end