Class: Rbeapi::Api::VxlanInterface

Inherits:
BaseInterface show all
Defined in:
lib/rbeapi/api/interfaces.rb

Overview

The VxlanInterface class manages all Vxlan interfaces on an EOS node.

Constant Summary collapse

DEFAULT_SRC_INTF =
''
DEFAULT_MCAST_GRP =
''

Constants inherited from BaseInterface

BaseInterface::DEFAULT_INTF_DESCRIPTION

Instance Attribute Summary

Attributes inherited from Entity

#config, #error, #node

Instance Method Summary collapse

Methods inherited from BaseInterface

#create, #default, #delete, #set_description, #set_shutdown

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_vtep(name, vtep) ⇒ Boolean

add_vtep adds a new VTEP endpoint to the global flood list for the specified interface. If the VTEP endpoint is already configured, this method will still return successfully.

Parameters:

  • :name (String)

    The name of the interface to configure

  • :vtep (String)

    The IP address of the remote VTEP endpoint

Returns:

  • (Boolean)

    Returns true if the commands completed successfully



1222
1223
1224
# File 'lib/rbeapi/api/interfaces.rb', line 1222

def add_vtep(name, vtep)
  configure_interface(name, "vxlan flood vtep add #{vtep}")
end

#get(name = 'Vxlan1') ⇒ nil, Hash<String, String>

Returns the Vxlan interface configuration as a Ruby hash of key/value pairs from the nodes running configuration. This method extends the BaseInterface get method and adds the Vxlan specific attributes to the hash

Examples:

{
  name: <string>,
  type: <string>,
  description: <string>,
  shutdown: <boolean>,
  source_interface: <string>,
  multicast_group: <string>,
  udp_port: <fixnum>,
  flood_list: <array>,
  vlans: <hash>
}

Parameters:

  • :name (String)

    The interface name to return from the nodes configuration. This optional parameter defaults to Vxlan1

Returns:

  • (nil, Hash<String, String>)

    Returns the interface configuration as a Ruby hash object. If the provided interface name is not found then this method will return nil



1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
# File 'lib/rbeapi/api/interfaces.rb', line 1023

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

  response = super(name)
  response[:type] = 'vxlan'
  response.merge!(parse_source_interface(config))
  response.merge!(parse_multicast_group(config))
  response.merge!(parse_udp_port(config))
  response.merge!(parse_flood_list(config))
  response.merge!(parse_vlans(config))
  response
end

#remove_vlan(name, vlan) ⇒ Boolean

remove_vlan deletes a previously configured VLAN to VNI mapping on the specified interface.

Parameters:

  • :name (String)

    the name of the interface to configure

  • :vlan (Fixnum)

    The VLAN ID to remove from the configuration. If the VLAN ID does not exist, this method will still return successfully

Returns:

  • (Boolean)

    returns true if the command completed successfully



1271
1272
1273
# File 'lib/rbeapi/api/interfaces.rb', line 1271

def remove_vlan(name, vlan)
  configure_interface(name, "no vxlan vlan #{vlan} vni")
end

#remove_vtep(name, vtep) ⇒ Boolean

remove_vtep deletes a VTEP endpoint from the global flood list for the specified interface. If the VTEP endpoint specified is not configured, this method will still return successfully.

Parameters:

  • :name (String)

    The name of the interface to configure

  • :vtep (String)

    The IP address of the remote VTEP endpoint

Returns:

  • (Boolean)

    Returns true if the commands completed successfully



1237
1238
1239
# File 'lib/rbeapi/api/interfaces.rb', line 1237

def remove_vtep(name, vtep)
  configure_interface(name, "vxlan flood vtep remove #{vtep}")
end

#set_multicast_group(name = 'Vxlan1', opts = {}) ⇒ Boolean

Configures the vxlan multicast-group flood address to the specified value. The value should be a valid multicast address

Parameters:

  • :name (String)

    The name of the interface to apply the configuration values to

  • :opt (Hash)

    Optional keyword arguments

  • :opts (Hash)

    a customizable set of options

Returns:

  • (Boolean)

    Returns true if the commands complete successfully



1177
1178
1179
1180
# File 'lib/rbeapi/api/interfaces.rb', line 1177

def set_multicast_group(name = 'Vxlan1', opts = {})
  commands = command_builder('vxlan multicast-group', opts)
  configure_interface(name, commands)
end

#set_source_interface(name = 'Vxlan1', opts = {}) ⇒ Boolean

Configures the vxlan source-interface to the specified value. This parameter should be the interface identifier of the interface to act as the source for all Vxlan traffic

Parameters:

  • :name (String)

    The name of the interface to apply the configuration values to

  • :opt (Hash)

    Optional keyword arguments

  • :opts (Hash)

    a customizable set of options

Returns:

  • (Boolean)

    Returns true if the commands complete successfully



1152
1153
1154
1155
# File 'lib/rbeapi/api/interfaces.rb', line 1152

def set_source_interface(name = 'Vxlan1', opts = {})
  commands = command_builder('vxlan source-interface', opts)
  configure_interface(name, commands)
end

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

set_udp_port configures the Vxlan udp-port value in EOS for the specified interface name. If the enable keyword is false then the no keyword is used to configure the value. If the default option is provided and set to true, then the default keyword is used. If both options are provided, the default keyword will take precedence.

Parameters:

  • :name (String)

    The name of the vxlan interface to configure

  • :opts (Hash)

    optional keyword arguments

Returns:

  • (Boolean)

    returns true if the command completed successfully



1206
1207
1208
1209
# File 'lib/rbeapi/api/interfaces.rb', line 1206

def set_udp_port(name, opts = {})
  commands = command_builder('vxlan udp-port', opts)
  configure_interface(name, commands)
end

#update_vlan(name, vlan, vni) ⇒ Boolean

update_vlan creates a new vlan to vni mapping for the specified interface in the nodes current configuration

Parameters:

  • :name (String)

    The name of the interface to configure

  • :vlan (Fixnum)

    The VLAN ID to configure.

  • :vni (Fixnum)

    The VNI value to map the VLAN into

Returns:

  • (Boolean)

    returns true if the command completed successfully



1254
1255
1256
# File 'lib/rbeapi/api/interfaces.rb', line 1254

def update_vlan(name, vlan, vni)
  configure_interface(name, "vxlan vlan #{vlan} vni #{vni}")
end