Class: Rbeapi::Api::Vlans
Overview
The Vlan class provides a class implementation for working with the collection of Vlans on the node. This class presents an abstraction of the nodes configured vlan id’s from the running configuration.
Instance Attribute Summary
Attributes inherited from Entity
Instance Method Summary collapse
-
#add_trunk_group(id, value) ⇒ Boolean
add_trunk_group adds a new trunk group value to the specified vlan id in the nodes running configuration.
-
#create(id) ⇒ Boolean
create will create a new vlan resource in the nodes current configuration with the specified vlan id.
-
#default(id) ⇒ Boolean
default will configure the vlan using the default keyword.
-
#delete(id) ⇒ Boolean
delete will delete an existing vlan resource from the nodes current running configuration.
-
#get(id) ⇒ nil, Hash<Symbol, Object>
get returns the specified vlan resource Hash that represents the nodes current vlan configuration.
-
#getall ⇒ Hash<Symbol, Object>
getall returns the collection of vlan resources from the nodes running configuration as a hash.
-
#remove_trunk_group(id, value) ⇒ Object
remove_trunk_group removes the specified trunk group value from the specified vlan id in the node’s configuration.
-
#set_name(id, opts = {}) ⇒ Boolean
set_name configures the name value for the specified vlan id in the nodes running configuration.
-
#set_state(id, opts = {}) ⇒ Boolean
set_state configures the state value for the specified vlan id in the nodes running configuration.
-
#set_trunk_groups(name, opts = {}) ⇒ Boolean
Configures the trunk groups for the specified vlan.
Methods inherited from Entity
#command_builder, #configure, #configure_interface, #get_block, #initialize, instance
Constructor Details
This class inherits a constructor from Rbeapi::Api::Entity
Instance Method Details
#add_trunk_group(id, value) ⇒ Boolean
add_trunk_group adds a new trunk group value to the specified vlan id in the nodes running configuration. The trunk group name value accepts a-z 0-9 and _.
Commands
vlan <id>
trunk group <value>
312 313 314 |
# File 'lib/rbeapi/api/vlans.rb', line 312 def add_trunk_group(id, value) configure(["vlan #{id}", "trunk group #{value}"]) end |
#create(id) ⇒ Boolean
create will create a new vlan resource in the nodes current configuration with the specified vlan id. If the create method is called and the vlan id already exists, this method will still return true.
Commands
vlan <value>
169 170 171 |
# File 'lib/rbeapi/api/vlans.rb', line 169 def create(id) configure("vlan #{id}") end |
#default(id) ⇒ Boolean
default will configure the vlan using the default keyword. This command has the same effect as deleting the vlan from the nodes running configuration.
Commands
default vlan <value>
206 207 208 |
# File 'lib/rbeapi/api/vlans.rb', line 206 def default(id) configure("default vlan #{id}") end |
#delete(id) ⇒ Boolean
delete will delete an existing vlan resource from the nodes current running configuration. If the delete method is called and the vlan id does not exist, this method will succeed.
Commands
no vlan <value>
187 188 189 |
# File 'lib/rbeapi/api/vlans.rb', line 187 def delete(id) configure("no vlan #{id}") end |
#get(id) ⇒ nil, Hash<Symbol, Object>
get returns the specified vlan resource Hash that represents the nodes current vlan configuration.
64 65 66 67 68 69 70 71 72 |
# File 'lib/rbeapi/api/vlans.rb', line 64 def get(id) config = get_block("vlan #{id}") return nil unless config response = {} response.merge!(parse_name(config)) response.merge!(parse_state(config)) response.merge!(parse_trunk_groups(config)) response end |
#getall ⇒ Hash<Symbol, Object>
getall returns the collection of vlan resources from the nodes running configuration as a hash. The vlan resource collection hash is keyed by the unique vlan id.
100 101 102 103 104 105 106 |
# File 'lib/rbeapi/api/vlans.rb', line 100 def getall vlans = config.scan(/(?<=^vlan\s)\d+$/) vlans.each_with_object({}) do |vid, hsh| resource = get vid hsh[vid] = resource if resource end end |
#remove_trunk_group(id, value) ⇒ Object
remove_trunk_group removes the specified trunk group value from the specified vlan id in the node’s configuration. If the trunk group name does not exist, this method will return success
Commands
vlan <id>
no trunk group <value>
333 334 335 |
# File 'lib/rbeapi/api/vlans.rb', line 333 def remove_trunk_group(id, value) configure(["vlan #{id}", "no trunk group #{value}"]) end |
#set_name(id, opts = {}) ⇒ Boolean
set_name configures the name value for the specified vlan id in the nodes running configuration. If enable is false in the opts keyword Hash then the name value is negated using the no keyword. If the default keyword is set to true, then the name value is defaulted using the default keyword. The default keyword takes precedence over the enable keyword.
Commands
vlan <id>
name <value>
no name
default name
242 243 244 245 246 |
# File 'lib/rbeapi/api/vlans.rb', line 242 def set_name(id, opts = {}) cmd = command_builder('name', opts) cmds = ["vlan #{id}", cmd] configure(cmds) end |
#set_state(id, opts = {}) ⇒ Boolean
set_state configures the state value for the specified vlan id in the nodes running configuration. If enable is set to false in the opts keyword Hash then the state value is negated using the no keyword. If the default keyword is set to true, then the state value is defaulted using the default keyword. The default keyword takes precedence over the enable keyword
Commands
vlan <id>
state [active, suspend]
no state
default state
283 284 285 286 287 288 289 290 291 292 |
# File 'lib/rbeapi/api/vlans.rb', line 283 def set_state(id, opts = {}) value = opts[:value] unless ['active', 'suspend', nil].include?(value) raise ArgumentError, 'state must be active, suspend or nil' end cmd = command_builder('state', opts) cmds = ["vlan #{id}", cmd] configure(cmds) end |
#set_trunk_groups(name, opts = {}) ⇒ Boolean
Configures the trunk groups for the specified vlan. Trunk groups not currently set are added and trunk groups currently configured but not in the passed in value array are removed.
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 |
# File 'lib/rbeapi/api/vlans.rb', line 355 def set_trunk_groups(name, opts = {}) default = opts.fetch(:default, false) return configure(["vlan #{name}", 'default trunk group']) if default enable = opts.fetch(:enable, true) return configure(["vlan #{name}", 'no trunk group']) unless enable value = opts.fetch(:value, []) raise ArgumentError, 'value must be an Array' unless value.is_a?(Array) value = Set.new value current_value = Set.new get(name)[:trunk_groups] cmds = ["vlan #{name}"] # Add trunk groups that are not currently in the list. value.difference(current_value).each do |group| cmds << "trunk group #{group}" end # Remove trunk groups that are not in the new list. current_value.difference(value).each do |group| cmds << "no trunk group #{group}" end configure(cmds) if cmds.length > 1 end |