Class: Rbeapi::Api::BaseInterface

Inherits:
Entity
  • Object
show all
Defined in:
lib/rbeapi/api/interfaces.rb

Overview

The BaseInterface class extends Entity and provides an implementation that is common to all interfaces configured in EOS.

Constant Summary collapse

DEFAULT_INTF_DESCRIPTION =
''.freeze
DEFAULT_INTF_ENCAPSULATION =
''.freeze
DEFAULT_LOAD_INTERVAL =
''.freeze

Instance Attribute Summary

Attributes inherited from Entity

#config, #error, #node

Instance Method Summary collapse

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

#create(value) ⇒ Boolean

create will create a new interface resource in the node’s current configuration with the specified interface name. If the create method is called and the interface already exists, this method will return successful.

Parameters:

  • value (String)

    The interface name to create on the node. The interface name must be the full interface identifier (ie Loopback, not Lo).

Returns:

  • (Boolean)

    Returns true if the command completed successfully.

Since:

  • eos_version 4.13.7M



280
281
282
# File 'lib/rbeapi/api/interfaces.rb', line 280

def create(value)
  configure("interface #{value}")
end

#default(value) ⇒ Boolean

default will configure the interface using the default keyword. For virtual interfaces this is equivalent to deleting the interface. For physical interfaces, the entire interface configuration will be set to defaults.

Parameters:

  • value (String)

    The interface name to default in the node. The interface name must be the full interface identifier (ie Loopback, not Lo).

Returns:

  • (Boolean)

    Returns true if the command completed successfully.

Since:

  • eos_version 4.13.7M



314
315
316
# File 'lib/rbeapi/api/interfaces.rb', line 314

def default(value)
  configure("default interface #{value}")
end

#delete(value) ⇒ Boolean

delete will delete an existing interface resource in the node’s current configuration with the specified interface name. If the delete method is called and interface does not exist, this method will return successful.

Parameters:

  • value (String)

    The interface name to delete from the node. The interface name must be the full interface identifier (ie Loopback, no Lo).

Returns:

  • (Boolean)

    Returns true if the command completed successfully.

Since:

  • eos_version 4.13.7M



297
298
299
# File 'lib/rbeapi/api/interfaces.rb', line 297

def delete(value)
  configure("no interface #{value}")
end

#get(name) ⇒ nil, Hash<String, Object>

get returns the specified interface resource hash that represents the node’s current interface configuration. The BaseInterface class provides all the set of attributes that are common to all interfaces in EOS. This method will return an interface type of generic.

Examples:

{
  name: <string>
  type: 'generic'
  description: <string>
  encapsulation: <integer>
  shutdown: [true, false]
  load_interval: <string>
}

Parameters:

  • name (String)

    The name of the interface to return from the running-configuration.

Returns:

  • (nil, Hash<String, Object>)

    Returns a hash of the interface properties if the interface name was found in the running configuration. If the interface was not found, nil is returned.



179
180
181
182
183
184
185
186
187
188
189
# File 'lib/rbeapi/api/interfaces.rb', line 179

def get(name)
  config = get_block("^interface #{name}")
  return nil unless config

  response = { name: name, type: 'generic' }
  response.merge!(parse_description(config))
  response.merge!(parse_encapsulation(config))
  response.merge!(parse_shutdown(config))
  response.merge!(parse_load_interval(config))
  response
end

#set_description(name, opts = {}) ⇒ Boolean

set_description configures the description value for the specified interface name in the nodes running configuration. If the enable keyword is false then the description value is negated using the no keyword. If the default keyword is set to true, then the description value is defaulted using the default keyword. The default keyword takes precedence over the enable keyword if both are provided.

Parameters:

  • name (String)

    The interface name to apply the configuration to. The name value must be the full interface identifier.

  • opts (hash) (defaults to: {})

    Optional keyword arguments.

Options Hash (opts):

  • value (String)

    The value to configure the description to in the node’s configuration.

  • enable (Boolean)

    If false then the command is negated. Default is true.

  • default (Boolean)

    Configure the interface description using the default keyword.

Returns:

  • (Boolean)

    Returns true if the command completed successfully.

Since:

  • eos_version 4.13.7M



343
344
345
346
# File 'lib/rbeapi/api/interfaces.rb', line 343

def set_description(name, opts = {})
  commands = command_builder('description', opts)
  configure_interface(name, commands)
end

#set_encapsulation(name, opts = {}) ⇒ Boolean

set_encapsulation configures the VLAN ID value for the specified interface name in the nodes running configuration. If the enable keyword is false then the encapsulation value is negated using the no keyword. If the default keyword is set to true, then the encapsulation value is defaulted using the default keyword. The default keyword takes precedence over the enable keyword if both are provided.

Parameters:

  • name (String)

    The interface name to apply the configuration to. The name value must be the full interface identifier.

  • opts (hash) (defaults to: {})

    Optional keyword arguments.

Options Hash (opts):

  • value (String)

    The value to configure the VLAN ID to be used in the encapsulation dot1q vlan setting for a subinterface.

  • enable (Boolean)

    If false then the command is negated. Default is true.

  • default (Boolean)

    Configure the interface encapsulation using the default keyword.

Returns:

  • (Boolean)

    Returns true if the command completed successfully.

Since:

  • eos_version X.XX.XM



373
374
375
376
377
378
379
380
381
382
383
384
# File 'lib/rbeapi/api/interfaces.rb', line 373

def set_encapsulation(name, opts = {})
  unless name =~ /\./
    raise ArgumentError, 'Parameter encapsulation can be set only on '\
      'subinterfaces'
  end
  unless name.downcase =~ /et|po/
    raise ArgumentError, 'Parameter encapsulation can be set only on '\
      'Ethernet and PostChannel interfaces'
  end
  commands = command_builder('encapsulation dot1q vlan', opts)
  configure_interface(name, commands)
end

#set_load_interval(name, opts = {}) ⇒ Boolean

set_load_interval is a convenience function for configuring the value of interface load-interval

values to. The name must be the full interface identifier.

load-interval setting for. Valid values are between 5 and 600.

the interface using the default keyword.

Parameters:

  • name (String)

    The interface name to apply the configuration

  • opts (Hash) (defaults to: {})

    Optional keyword arguments.

Options Hash (opts):

  • value (String)

    Specifies the value to configure the

  • default (Boolean)

    Configures the load-interval value on

Returns:

  • (Boolean)

    Returns true if the command completed successfully.



435
436
437
438
# File 'lib/rbeapi/api/interfaces.rb', line 435

def set_load_interval(name, opts = {})
  commands = command_builder('load-interval', opts)
  configure_interface(name, commands)
end

#set_shutdown(name, opts = {}) ⇒ Boolean

set_shutdown configures the administrative state of the specified interface in the node. If the enable keyword is false, then the interface is administratively disabled. If the enable keyword is true, then the interface is administratively enabled. If the default keyword is set to true, then the interface shutdown value is configured using the default keyword. The default keyword takes precedence over the enable keyword if both are provided.

Parameters:

  • name (String)

    The interface name to apply the configuration to. The name value must be the full interface identifier.

  • opts (hash) (defaults to: {})

    Optional keyword arguments.

Options Hash (opts):

  • enable (Boolean)

    True if the interface should be administratively enabled or false if the interface should be administratively disabled.

  • default (Boolean)

    Configure the interface shutdown using the default keyword.

Returns:

  • (Boolean)

    Returns true if the command completed successfully.

Since:

  • eos_version 4.13.7M



410
411
412
413
414
415
416
417
# File 'lib/rbeapi/api/interfaces.rb', line 410

def set_shutdown(name, opts = {})
  raise 'set_shutdown has the value option set' if opts[:value]
  # Shutdown semantics are opposite of enable semantics so invert enable.
  value = !opts[:enable]
  opts[:enable] = value
  commands = command_builder('shutdown', opts)
  configure_interface(name, commands)
end