Class: Cisco::Vtp

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

Constant Summary collapse

MAX_VTP_DOMAIN_NAME_SIZE =
32
MAX_VTP_PASSWORD_SIZE =
64
@@node =
Node.instance

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(instantiate = true) ⇒ Vtp

Constructor for Vtp



31
32
33
# File 'lib/cisco_node_utils/vtp.rb', line 31

def initialize(instantiate=true)
  enable if instantiate and not Vtp.enabled
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

Class Method Details

.domainObject

Get vtp domain name



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

def Vtp.domain
  enabled ? @@node.config_get("vtp", "domain") : ""
end

.enabledObject



35
36
37
# File 'lib/cisco_node_utils/vtp.rb', line 35

def Vtp.enabled
  not @@node.config_get("vtp", "feature").nil?
end

Instance Method Details

#default_filenameObject

Get default vtp filename



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

def default_filename
  @@node.config_get_default("vtp", "filename")
end

#default_passwordObject

Get default vtp password



95
96
97
# File 'lib/cisco_node_utils/vtp.rb', line 95

def default_password
  @@node.config_get_default("vtp", "password")
end

#default_versionObject

Get default vtp version



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

def default_version
  @@node.config_get_default("vtp", "version")
end

#destroyObject

Disable vtp feature



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

def destroy
  @@node.config_set("vtp", "feature", "no")
end

#domainObject



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

def domain
  Vtp.domain
end

#domain=(d) ⇒ Object

Set vtp domain name

Raises:

  • (ArgumentError)


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

def domain=(d)
  raise ArgumentError unless d and d.is_a? String and
                             d.length.between?(1, MAX_VTP_DOMAIN_NAME_SIZE)
  enable unless Vtp.enabled
  begin
    @@node.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



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

def enable
  @@node.config_set("vtp", "feature", "")
end

#filenameObject

Get vtp filename



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

def filename
  match = @@node.config_get("vtp", "filename")
  match.nil? ? default_filename : match.first
end

#filename=(uri) ⇒ Object

Set vtp filename

Raises:

  • (TypeError)


106
107
108
109
110
111
112
# File 'lib/cisco_node_utils/vtp.rb', line 106

def filename=(uri)
  raise TypeError if uri.nil?
  enable unless Vtp.enabled
  uri.empty? ?
    @@node.config_set("vtp", "filename", "no", "") :
    @@node.config_set("vtp", "filename", "", uri)
end

#passwordObject

Get vtp password



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

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

#password=(password) ⇒ Object

Set vtp password

Raises:

  • (TypeError)


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

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

#versionObject

Get vtp version



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

def version
  match = @@node.config_get("vtp", "version") if Vtp.enabled
  match.nil? ? default_version : match.first.to_i
end

#version=(version) ⇒ Object

Set vtp version



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

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