networking_generic_switch.devices.netmiko_devices package

Submodules

networking_generic_switch.devices.netmiko_devices.arista module

class networking_generic_switch.devices.netmiko_devices.arista.AristaEos(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan {segmentation_id}', 'name {network_name}')
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'no switchport access vlan {segmentation_id}', 'no switchport mode trunk', 'switchport trunk allowed vlan none')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'switchport mode access', 'switchport access vlan {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.aruba module

class networking_generic_switch.devices.netmiko_devices.aruba.ArubaOSCX(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Built for ArubaOS-CX

ADD_NETWORK = ('vlan {segmentation_id}', 'name {network_name}')
ADD_NETWORK_TO_TRUNK = ('interface {port}', 'no routing', 'vlan trunk allowed {segmentation_id}')
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'no vlan access {segmentation_id}')
DISABLE_PORT = ('interface {port}', 'shutdown')
ENABLE_PORT = ('interface {port}', 'no shutdown')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'no routing', 'vlan access {segmentation_id}')
REMOVE_NETWORK_FROM_TRUNK = ('interface {port}', 'no vlan trunk allowed {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.brocade module

class networking_generic_switch.devices.netmiko_devices.brocade.BrocadeFastIron(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan {segmentation_id} by port', 'name {network_name}')
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('vlan {segmentation_id} by port', 'no untagged ether {port}')
PLUG_PORT_TO_NETWORK = ('vlan {segmentation_id} by port', 'untagged ether {port}')
QUERY_PORT = ('show interfaces ether {port} | include VLAN',)
clean_port_vlan_if_necessary(port)
get_wrong_vlan(port)
plug_port_to_network(port, segmentation_id)

networking_generic_switch.devices.netmiko_devices.cisco module

class networking_generic_switch.devices.netmiko_devices.cisco.CiscoIos(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan {segmentation_id}', 'name {network_name}')
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'no switchport access vlan {segmentation_id}', 'no switchport mode trunk', 'switchport trunk allowed vlan none')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'switchport mode access', 'switchport access vlan {segmentation_id}')
class networking_generic_switch.devices.netmiko_devices.cisco.CiscoNxOS(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Netmiko device driver for Cisco Nexus switches running NX-OS.

ADD_NETWORK = ('vlan {segmentation_id}', 'name {network_name}', 'exit')
ADD_NETWORK_TO_TRUNK = ('interface {port}', 'switchport mode trunk', 'switchport trunk allowed vlan add {segmentation_id}', 'exit')
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'no switchport access vlan', 'exit')
DISABLE_PORT = ('interface {port}', 'shutdown', 'exit')
ENABLE_PORT = ('interface {port}', 'no shutdown', 'exit')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'switchport mode access', 'switchport access vlan {segmentation_id}', 'exit')
REMOVE_NETWORK_FROM_TRUNK = ('interface {port}', 'switchport trunk allowed vlan remove {segmentation_id}', 'exit')

networking_generic_switch.devices.netmiko_devices.cisco300 module

class networking_generic_switch.devices.netmiko_devices.cisco300.Cisco300(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan {segmentation_id}',)
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'no switchport access vlan', 'switchport trunk allowed vlan remove all')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'switchport mode access', 'switchport access vlan {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.cumulus module

class networking_generic_switch.devices.netmiko_devices.cumulus.Cumulus(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Built for Cumulus 4.x

Note for this switch you want config like this, where secret is the password needed for sudo su:

[genericswitch:<hostname>] device_type = netmiko_cumulus ip = <ip> username = <username> password = <password> secret = <password for sudo> ngs_physical_networks = physnet1 ngs_max_connections = 1 ngs_port_default_vlan = 123 ngs_disable_inactive_ports = False

ADD_NETWORK = ['net add vlan {segmentation_id}']
DELETE_NETWORK = ['net del vlan {segmentation_id}']
DELETE_PORT = ['net del interface {port} bridge access {segmentation_id}']
DISABLE_BOND = ['net add bond {bond} link down']
DISABLE_PORT = ['net add interface {port} link down']
ENABLE_BOND = ['net del bond {bond} link down']
ENABLE_PORT = ['net del interface {port} link down']
ERROR_MSG_PATTERNS = [re.compile('ERROR: Command not found.'), re.compile('command not found'), re.compile('is not a physical interface on this switch')]

Sequence of error message patterns.

Sequence of re.RegexObject objects representing patterns to check for in device output that indicate a failure to apply configuration.

NETMIKO_DEVICE_TYPE = 'linux'
PLUG_BOND_TO_NETWORK = ['net add bond {bond} bridge access {segmentation_id}']
PLUG_PORT_TO_NETWORK = ['net add interface {port} bridge access {segmentation_id}']
SAVE_CONFIGURATION = ['net commit']
UNPLUG_BOND_FROM_NETWORK = ['net del bond {bond} bridge access {segmentation_id}']

networking_generic_switch.devices.netmiko_devices.dell module

class networking_generic_switch.devices.netmiko_devices.dell.DellNos(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Netmiko device driver for Dell Force10 (OS9) switches.

ADD_NETWORK = ('interface vlan {segmentation_id}', 'description {network_name}', 'exit')
ADD_NETWORK_TO_TRUNK = ('interface vlan {segmentation_id}', 'tagged {port}', 'exit')
DELETE_NETWORK = ('no interface vlan {segmentation_id}', 'exit')
DELETE_PORT = ('interface vlan {segmentation_id}', 'no untagged {port}', 'exit')
PLUG_PORT_TO_NETWORK = ('interface vlan {segmentation_id}', 'untagged {port}', 'exit')
REMOVE_NETWORK_FROM_TRUNK = ('interface vlan {segmentation_id}', 'no tagged {port}', 'exit')
class networking_generic_switch.devices.netmiko_devices.dell.DellOS10(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Netmiko device driver for Dell PowerSwitch switches.

ADD_NETWORK = ('interface vlan {segmentation_id}', 'description {network_name}', 'exit')
ADD_NETWORK_TO_TRUNK = ('interface {port}', 'switchport mode trunk', 'switchport trunk allowed vlan {segmentation_id}', 'exit')
DELETE_NETWORK = ('no interface vlan {segmentation_id}', 'exit')
DELETE_PORT = ('interface {port}', 'no switchport access vlan', 'exit')
DISABLE_PORT = ('interface {port}', 'shutdown', 'exit')
ENABLE_PORT = ('interface {port}', 'no shutdown', 'exit')
ERROR_MSG_PATTERNS = ()

Sequence of error message patterns.

Sequence of re.RegexObject objects representing patterns to check for in device output that indicate a failure to apply configuration.

PLUG_PORT_TO_NETWORK = ('interface {port}', 'switchport mode access', 'switchport access vlan {segmentation_id}', 'exit')
REMOVE_NETWORK_FROM_TRUNK = ('interface {port}', 'no switchport trunk allowed vlan {segmentation_id}', 'exit')
class networking_generic_switch.devices.netmiko_devices.dell.DellPowerConnect(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Netmiko device driver for Dell PowerConnect switches.

ADD_NETWORK = ('vlan database', 'vlan {segmentation_id}', 'exit')
ADD_NETWORK_TO_TRUNK = ('interface {port}', 'switchport general allowed vlan add {segmentation_id} tagged', 'exit')
DELETE_NETWORK = ('vlan database', 'no vlan {segmentation_id}', 'exit')
DELETE_PORT = ('interface {port}', 'switchport access vlan none', 'exit')
DELETE_PORT_GENERAL = ('interface {port}', 'switchport general allowed vlan remove {segmentation_id}', 'no switchport general pvid', 'exit')
ERROR_MSG_PATTERNS = (re.compile('\\% Incomplete command'), re.compile('VLAN was not created by user'), re.compile('Configuration Database locked by another application \\- try later'))

Sequence of error message patterns.

Sequence of re.RegexObject objects representing patterns to check for in device output that indicate a failure to apply configuration.

PLUG_PORT_TO_NETWORK = ('interface {port}', 'switchport access vlan {segmentation_id}', 'exit')
PLUG_PORT_TO_NETWORK_GENERAL = ('interface {port}', 'switchport general allowed vlan add {segmentation_id} untagged', 'switchport general pvid {segmentation_id}', 'exit')
REMOVE_NETWORK_FROM_TRUNK = ('interface {port}', 'switchport general allowed vlan remove {segmentation_id}', 'exit')

networking_generic_switch.devices.netmiko_devices.fake module

class networking_generic_switch.devices.netmiko_devices.fake.Fake(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Netmiko device driver for Fake switches.

ADD_NETWORK = ('add network {segmentation_id}',)
ADD_NETWORK_TO_TRUNK = ('add network {segmentation_id} to trunk {port}',)
DELETE_NETWORK = ('delete network {segmentation_id}',)
DELETE_PORT = ('delete port {port}',)
DISABLE_PORT = ('disable {port}',)
ENABLE_PORT = ('enable {port}',)
ERROR_MSG_PATTERNS = ()

Sequence of error message patterns.

Sequence of re.RegexObject objects representing patterns to check for in device output that indicate a failure to apply configuration.

NETMIKO_DEVICE_TYPE = 'linux'
PLUG_PORT_TO_NETWORK = ('plug port {port} to network {segmentation_id}',)
REMOVE_NETWORK_FROM_TRUNK = ('remove network {segmentation_id} from trunk {port}',)
class networking_generic_switch.devices.netmiko_devices.fake.FakeConnection(device)

Bases: object

A Fake netmiko connection object.

enable()
save_config()
send_command(command)
send_config_set(config_commands, cmd_verify)

networking_generic_switch.devices.netmiko_devices.hpe module

class networking_generic_switch.devices.netmiko_devices.hpe.HpeComware(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan {segmentation_id}',)
DELETE_NETWORK = ('undo vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'undo port access vlan')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'port link-type access', 'port access vlan {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.huawei module

class networking_generic_switch.devices.netmiko_devices.huawei.Huawei(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

For Huawei Network Operating System VRP V3 and V5.

ADD_NETWORK = ('vlan {segmentation_id}',)
DELETE_NETWORK = ('undo vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'undo port default vlan {segmentation_id}')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'port link-type access', 'port default vlan {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.huawei_vrpv8 module

class networking_generic_switch.devices.netmiko_devices.huawei_vrpv8.Huawei(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

For Huawei Next-Generation Network Operating System VRP V8.

ADD_NETWORK = ('vlan {segmentation_id}', 'commit')
DELETE_NETWORK = ('undo vlan {segmentation_id}', 'commit')
DELETE_PORT = ('interface {port}', 'undo port default vlan {segmentation_id}', 'commit')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'port link-type access', 'port default vlan {segmentation_id}', 'commit')

networking_generic_switch.devices.netmiko_devices.juniper module

class networking_generic_switch.devices.netmiko_devices.juniper.Juniper(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('set vlans {network_name} vlan-id {segmentation_id}',)
ADD_NETWORK_TO_TRUNK = ('set interfaces {port} unit 0 family ethernet-switching vlan members {segmentation_id}',)
DELETE_NETWORK = ('delete vlans {network_name}',)
DELETE_PORT = ('delete interfaces {port} unit 0 family ethernet-switching vlan members',)
DISABLE_PORT = ('set interfaces {port} disable',)
ENABLE_PORT = ('delete interfaces {port} disable',)
PLUG_PORT_TO_NETWORK = ('delete interfaces {port} unit 0 family ethernet-switching vlan members', 'set interfaces {port} unit 0 family ethernet-switching vlan members {segmentation_id}')
REMOVE_NETWORK_FROM_TRUNK = ('delete interfaces {port} unit 0 family ethernet-switching vlan members {segmentation_id}',)
save_configuration(net_connect)

Save the device’s configuration.

Parameters:

net_connect – a netmiko connection object.

Raises:

GenericSwitchNetmikoConfigError if saving the configuration fails.

send_config_set(net_connect, cmd_set)

Send a set of configuration lines to the device.

Parameters:
  • net_connect – a netmiko connection object.

  • cmd_set – a list of configuration lines to send.

Returns:

The output of the configuration commands.

networking_generic_switch.devices.netmiko_devices.mellanox_mlnxos module

class networking_generic_switch.devices.netmiko_devices.mellanox_mlnxos.MellanoxMlnxOS(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan {segmentation_id}', 'name {network_id}')
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('interface ethernet {port}', 'no switchport access vlan', 'no switchport mode')
PLUG_PORT_TO_NETWORK = ('interface ethernet {port}', 'switchport mode access', 'switchport access vlan {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.nokia module

class networking_generic_switch.devices.netmiko_devices.nokia.NokiaSRL(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('set tunnel-interface vxlan0 vxlan-interface {segmentation_id} type bridged', 'set tunnel-interface vxlan0 vxlan-interface {segmentation_id} ingress vni {segmentation_id}', 'set tunnel-interface vxlan0 vxlan-interface {segmentation_id} egress source-ip use-system-ipv4-address', 'set network-instance mac-vrf-{segmentation_id} type mac-vrf', 'set network-instance mac-vrf-{segmentation_id} description OS-Network-ID-{network_name}', 'set network-instance mac-vrf-{segmentation_id} vxlan-interface vxlan0.{segmentation_id}', 'set network-instance mac-vrf-{segmentation_id} protocols bgp-evpn bgp-instance 1 vxlan-interface vxlan0.{segmentation_id}', 'set network-instance mac-vrf-{segmentation_id} protocols bgp-evpn bgp-instance 1 evi {segmentation_id}', 'set network-instance mac-vrf-{segmentation_id} protocols bgp-evpn bgp-instance 1 ecmp 8', 'set network-instance mac-vrf-{segmentation_id} protocols bgp-vpn bgp-instance 1 route-target export-rt target:1:{segmentation_id}', 'set network-instance mac-vrf-{segmentation_id} protocols bgp-vpn bgp-instance 1 route-target import-rt target:1:{segmentation_id}')
DELETE_NETWORK = ('delete network-instance mac-vrf-{segmentation_id}', 'delete tunnel-interface vxlan0 vxlan-interface {segmentation_id}')
DELETE_PORT = ('delete network-instance mac-vrf-{segmentation_id} interface {port}.{segmentation_id}', 'delete interface {port} subinterface {segmentation_id}')
PLUG_PORT_TO_NETWORK = ('set interface {port} subinterface {segmentation_id} type bridged', 'set network-instance mac-vrf-{segmentation_id} interface {port}.{segmentation_id}')
commit(net_connect) str

Try to commit the Nokia SRL configuration.

Parameters:

net_connect – a netmiko connection object.

send_commands_to_device(cmd_set)

networking_generic_switch.devices.netmiko_devices.ovs module

class networking_generic_switch.devices.netmiko_devices.ovs.OvsLinux(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

DELETE_PORT = ('ovs-vsctl clear port {port} tag', 'ovs-vsctl clear port {port} trunks', 'ovs-vsctl clear port {port} vlan_mode')
PLUG_PORT_TO_NETWORK = ('ovs-vsctl set port {port} vlan_mode=access', 'ovs-vsctl set port {port} tag={segmentation_id}')

networking_generic_switch.devices.netmiko_devices.pluribus module

class networking_generic_switch.devices.netmiko_devices.pluribus.Pluribus(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan-create id {segmentation_id} scope fabric ports none description {network_name} auto-vxlan',)
DELETE_NETWORK = ('vlan-delete id {segmentation_id}',)
DELETE_PORT = ('vlan-port-remove vlan-range all ports {port}',)
PLUG_PORT_TO_NETWORK = ('vlan-port-remove vlan-range all ports {port}', 'port-vlan-add port {port} untagged-vlan {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.ruijie module

class networking_generic_switch.devices.netmiko_devices.ruijie.Ruijie(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

ADD_NETWORK = ('vlan {segmentation_id}', 'name {network_name}')
DELETE_NETWORK = ('no vlan {segmentation_id}',)
DELETE_PORT = ('interface {port}', 'no switchport access vlan {segmentation_id}', 'no switchport mode trunk', 'switchport trunk allowed vlan none')
PLUG_PORT_TO_NETWORK = ('interface {port}', 'switchport mode access', 'switchport access vlan {segmentation_id}')

networking_generic_switch.devices.netmiko_devices.sonic module

class networking_generic_switch.devices.netmiko_devices.sonic.Sonic(device_cfg, *args, **kwargs)

Bases: NetmikoSwitch

Built for SONiC 3.x

Note for this switch you want config like this, where secret is the password needed for sudo su:

[genericswitch:<hostname>] device_type = netmiko_sonic ip = <ip> username = <username> password = <password> secret = <password for sudo> ngs_physical_networks = physnet1 ngs_max_connections = 1 ngs_port_default_vlan = 123 ngs_disable_inactive_ports = False

ADD_NETWORK = ['config vlan add {segmentation_id}']
ADD_NETWORK_TO_TRUNK = ['config vlan member add {segmentation_id} {port}']
DELETE_NETWORK = ['config vlan del {segmentation_id}']
DELETE_PORT = ['config vlan member del {segmentation_id} {port}']
ERROR_MSG_PATTERNS = [re.compile("VLAN[0-9]+ doesn\\'t exist"), re.compile('Invalid Vlan Id , Valid Range : 1 to 4094'), re.compile('Interface name is invalid!!'), re.compile('No such command')]

Sequence of error message patterns.

Sequence of re.RegexObject objects representing patterns to check for in device output that indicate a failure to apply configuration.

NETMIKO_DEVICE_TYPE = 'linux'
PLUG_PORT_TO_NETWORK = ['config vlan member add -u {segmentation_id} {port}']
REMOVE_NETWORK_FROM_TRUNK = ['config vlan member del {segmentation_id} {port}']
SAVE_CONFIGURATION = ['config save -y']
send_config_set(net_connect, cmd_set)

Send a set of configuration lines to the device.

Parameters:
  • net_connect – a netmiko connection object.

  • cmd_set – a list of configuration lines to send.

Returns:

The output of the configuration commands.

Module contents

class networking_generic_switch.devices.netmiko_devices.NetmikoSwitch(device_cfg, *args, **kwargs)

Bases: GenericSwitchDevice

ADD_NETWORK = None
ADD_NETWORK_TO_TRUNK = None
DELETE_NETWORK = None
DELETE_PORT = None
DISABLE_BOND = None
DISABLE_PORT = None
ENABLE_BOND = None
ENABLE_PORT = None
ERROR_MSG_PATTERNS = ()

Sequence of error message patterns.

Sequence of re.RegexObject objects representing patterns to check for in device output that indicate a failure to apply configuration.

NETMIKO_DEVICE_TYPE = None
PLUG_BOND_TO_NETWORK = None
PLUG_PORT_TO_NETWORK = None
REMOVE_NETWORK_FROM_TRUNK = None
SAVE_CONFIGURATION = None
UNPLUG_BOND_FROM_NETWORK = None
add_network(segmentation_id, network_id)
check_output(output, operation)

Check the output from the device following an operation.

Drivers should implement this method to handle output from devices and perform any checks necessary to validate that the configuration was applied successfully.

Parameters:
  • output – Output from the device.

  • operation – Operation being attempted. One of ‘add network’, ‘delete network’, ‘plug port’, ‘unplug port’.

Raises:

GenericSwitchNetmikoConfigError if the driver detects that an error has occurred.

del_network(segmentation_id, network_id)
delete_port(port, segmentation_id)
plug_bond_to_network(bond, segmentation_id)
plug_port_to_network(port, segmentation_id)
save_configuration(net_connect)

Try to save the device’s configuration.

Parameters:

net_connect – a netmiko connection object.

send_commands_to_device(cmd_set)
send_config_set(net_connect, cmd_set)

Send a set of configuration lines to the device.

Parameters:
  • net_connect – a netmiko connection object.

  • cmd_set – a list of configuration lines to send.

Returns:

The output of the configuration commands.

unplug_bond_from_network(bond, segmentation_id)
networking_generic_switch.devices.netmiko_devices.check_output(operation)

Returns a decorator that checks the output of an operation.

Parameters:

operation – Operation being attempted. One of ‘add network’, ‘delete network’, ‘plug port’, ‘unplug port’.