fix nxos_vrf and migrate get_interface_type to module_utils (#40825)
Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>pull/4420/head
parent
45c6fa9784
commit
b4baa2d484
|
@ -479,3 +479,24 @@ def normalize_interface(name):
|
||||||
proper_interface = name
|
proper_interface = name
|
||||||
|
|
||||||
return proper_interface
|
return proper_interface
|
||||||
|
|
||||||
|
|
||||||
|
def get_interface_type(interface):
|
||||||
|
"""Gets the type of interface
|
||||||
|
"""
|
||||||
|
if interface.upper().startswith('ET'):
|
||||||
|
return 'ethernet'
|
||||||
|
elif interface.upper().startswith('VL'):
|
||||||
|
return 'svi'
|
||||||
|
elif interface.upper().startswith('LO'):
|
||||||
|
return 'loopback'
|
||||||
|
elif interface.upper().startswith('MG'):
|
||||||
|
return 'management'
|
||||||
|
elif interface.upper().startswith('MA'):
|
||||||
|
return 'management'
|
||||||
|
elif interface.upper().startswith('PO'):
|
||||||
|
return 'portchannel'
|
||||||
|
elif interface.upper().startswith('NV'):
|
||||||
|
return 'nve'
|
||||||
|
else:
|
||||||
|
return 'unknown'
|
||||||
|
|
|
@ -179,6 +179,7 @@ except ImportError:
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,23 +210,6 @@ def execute_show_command(command, module):
|
||||||
return body
|
return body
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def is_default(interface, module):
|
def is_default(interface, module):
|
||||||
command = 'show run interface {0}'.format(interface)
|
command = 'show run interface {0}'.format(interface)
|
||||||
|
|
||||||
|
|
|
@ -119,34 +119,10 @@ commands:
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
"""Gets the type of interface
|
|
||||||
Args:
|
|
||||||
interface (str): full name of interface, i.e. Ethernet1/1, loopback10,
|
|
||||||
port-channel20, vlan20
|
|
||||||
Returns:
|
|
||||||
type of interface: ethernet, svi, loopback, management, portchannel,
|
|
||||||
or unknown
|
|
||||||
"""
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def get_interface_mode(interface, module):
|
def get_interface_mode(interface, module):
|
||||||
"""Gets current mode of interface: layer2 or layer3
|
"""Gets current mode of interface: layer2 or layer3
|
||||||
Args:
|
Args:
|
||||||
|
|
|
@ -148,6 +148,7 @@ commands:
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
|
||||||
|
|
||||||
|
@ -187,23 +188,6 @@ def apply_key_map(key_map, table):
|
||||||
return new_dict
|
return new_dict
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def get_interface_mode(interface, intf_type, module):
|
def get_interface_mode(interface, intf_type, module):
|
||||||
command = 'show interface {0}'.format(interface)
|
command = 'show interface {0}'.format(interface)
|
||||||
interface = {}
|
interface = {}
|
||||||
|
|
|
@ -191,6 +191,7 @@ changed:
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import get_config, load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import get_config, load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, check_args
|
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, check_args
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
@ -227,23 +228,6 @@ def get_interface_mode(interface, intf_type, module):
|
||||||
return mode
|
return mode
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def apply_key_map(key_map, table):
|
def apply_key_map(key_map, table):
|
||||||
new_dict = {}
|
new_dict = {}
|
||||||
for key, value in table.items():
|
for key, value in table.items():
|
||||||
|
|
|
@ -203,6 +203,7 @@ from copy import deepcopy
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, normalize_interface
|
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, normalize_interface
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.network.common.utils import conditional, remove_default_spec
|
from ansible.module_utils.network.common.utils import conditional, remove_default_spec
|
||||||
|
|
||||||
|
@ -231,27 +232,6 @@ def search_obj_in_list(name, lst):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
"""Gets the type of interface
|
|
||||||
"""
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
elif interface.upper().startswith('NV'):
|
|
||||||
return 'nve'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def get_interfaces_dict(module):
|
def get_interfaces_dict(module):
|
||||||
"""Gets all active interfaces on a given switch
|
"""Gets all active interfaces on a given switch
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -120,36 +120,11 @@ import re
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import get_config, load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import get_config, load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec
|
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.network.common.utils import remove_default_spec
|
from ansible.module_utils.network.common.utils import remove_default_spec
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(name):
|
|
||||||
"""Gets the type of interface
|
|
||||||
Args:
|
|
||||||
interface (str): full name of interface, i.e. Ethernet1/1, loopback10,
|
|
||||||
port-channel20, vlan20
|
|
||||||
Returns:
|
|
||||||
type of interface: ethernet, svi, loopback, management, portchannel,
|
|
||||||
or unknown
|
|
||||||
"""
|
|
||||||
if name.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif name.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif name.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif name.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif name.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif name.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def get_interface_mode(name, module):
|
def get_interface_mode(name, module):
|
||||||
"""Gets current mode of interface: layer2 or layer3
|
"""Gets current mode of interface: layer2 or layer3
|
||||||
Args:
|
Args:
|
||||||
|
|
|
@ -135,6 +135,7 @@ import re
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.network.nxos.nxos import get_config, load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import get_config, load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, check_args
|
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, check_args
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.six import string_types
|
from ansible.module_utils.six import string_types
|
||||||
|
|
||||||
|
|
||||||
|
@ -200,23 +201,6 @@ def local_existing(gexisting):
|
||||||
return gexisting, jp_bidir, isauth
|
return gexisting, jp_bidir, isauth
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def get_interface_mode(interface, intf_type, module):
|
def get_interface_mode(interface, intf_type, module):
|
||||||
mode = 'unknown'
|
mode = 'unknown'
|
||||||
command = 'show interface {0}'.format(interface)
|
command = 'show interface {0}'.format(interface)
|
||||||
|
|
|
@ -175,7 +175,7 @@ from copy import deepcopy
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec
|
from ansible.module_utils.network.nxos.nxos import nxos_argument_spec, get_interface_type
|
||||||
from ansible.module_utils.network.common.utils import remove_default_spec
|
from ansible.module_utils.network.common.utils import remove_default_spec
|
||||||
|
|
||||||
|
|
||||||
|
@ -262,7 +262,8 @@ def map_obj_to_commands(updates, module):
|
||||||
if interfaces and interfaces[0] != 'default':
|
if interfaces and interfaces[0] != 'default':
|
||||||
for i in interfaces:
|
for i in interfaces:
|
||||||
commands.append('interface {0}'.format(i))
|
commands.append('interface {0}'.format(i))
|
||||||
commands.append('no switchport')
|
if get_interface_type(i) in ('ethernet', 'portchannel'):
|
||||||
|
commands.append('no switchport')
|
||||||
commands.append('vrf member {0}'.format(name))
|
commands.append('vrf member {0}'.format(name))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -296,7 +297,8 @@ def map_obj_to_commands(updates, module):
|
||||||
commands.append('vrf context {0}'.format(name))
|
commands.append('vrf context {0}'.format(name))
|
||||||
commands.append('exit')
|
commands.append('exit')
|
||||||
commands.append('interface {0}'.format(i))
|
commands.append('interface {0}'.format(i))
|
||||||
commands.append('no switchport')
|
if get_interface_type(i) in ('ethernet', 'portchannel'):
|
||||||
|
commands.append('no switchport')
|
||||||
commands.append('vrf member {0}'.format(name))
|
commands.append('vrf member {0}'.format(name))
|
||||||
|
|
||||||
elif set(interfaces) != set(obj_in_have['interfaces']):
|
elif set(interfaces) != set(obj_in_have['interfaces']):
|
||||||
|
@ -305,7 +307,8 @@ def map_obj_to_commands(updates, module):
|
||||||
commands.append('vrf context {0}'.format(name))
|
commands.append('vrf context {0}'.format(name))
|
||||||
commands.append('exit')
|
commands.append('exit')
|
||||||
commands.append('interface {0}'.format(i))
|
commands.append('interface {0}'.format(i))
|
||||||
commands.append('no switchport')
|
if get_interface_type(i) in ('ethernet', 'portchannel'):
|
||||||
|
commands.append('no switchport')
|
||||||
commands.append('vrf member {0}'.format(name))
|
commands.append('vrf member {0}'.format(name))
|
||||||
|
|
||||||
superfluous_interfaces = list(set(obj_in_have['interfaces']) - set(interfaces))
|
superfluous_interfaces = list(set(obj_in_have['interfaces']) - set(interfaces))
|
||||||
|
@ -313,7 +316,8 @@ def map_obj_to_commands(updates, module):
|
||||||
commands.append('vrf context {0}'.format(name))
|
commands.append('vrf context {0}'.format(name))
|
||||||
commands.append('exit')
|
commands.append('exit')
|
||||||
commands.append('interface {0}'.format(i))
|
commands.append('interface {0}'.format(i))
|
||||||
commands.append('no switchport')
|
if get_interface_type(i) in ('ethernet', 'portchannel'):
|
||||||
|
commands.append('no switchport')
|
||||||
commands.append('no vrf member {0}'.format(name))
|
commands.append('no vrf member {0}'.format(name))
|
||||||
elif interfaces and interfaces[0] == 'default':
|
elif interfaces and interfaces[0] == 'default':
|
||||||
if obj_in_have['interfaces']:
|
if obj_in_have['interfaces']:
|
||||||
|
@ -321,7 +325,8 @@ def map_obj_to_commands(updates, module):
|
||||||
commands.append('vrf context {0}'.format(name))
|
commands.append('vrf context {0}'.format(name))
|
||||||
commands.append('exit')
|
commands.append('exit')
|
||||||
commands.append('interface {0}'.format(i))
|
commands.append('interface {0}'.format(i))
|
||||||
commands.append('no switchport')
|
if get_interface_type(i) in ('ethernet', 'portchannel'):
|
||||||
|
commands.append('no switchport')
|
||||||
commands.append('no vrf member {0}'.format(name))
|
commands.append('no vrf member {0}'.format(name))
|
||||||
|
|
||||||
if purge:
|
if purge:
|
||||||
|
|
|
@ -82,6 +82,7 @@ import re
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,23 +98,6 @@ def execute_show_command(command, module):
|
||||||
return run_commands(module, cmds)[0]
|
return run_commands(module, cmds)[0]
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def get_interface_mode(interface, intf_type, module):
|
def get_interface_mode(interface, intf_type, module):
|
||||||
command = 'show interface {0}'.format(interface)
|
command = 'show interface {0}'.format(interface)
|
||||||
interface = {}
|
interface = {}
|
||||||
|
|
|
@ -118,6 +118,7 @@ commands:
|
||||||
|
|
||||||
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
from ansible.module_utils.network.nxos.nxos import load_config, run_commands
|
||||||
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
from ansible.module_utils.network.nxos.nxos import get_capabilities, nxos_argument_spec
|
||||||
|
from ansible.module_utils.network.nxos.nxos import get_interface_type
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
|
||||||
|
|
||||||
|
@ -154,23 +155,6 @@ def apply_key_map(key_map, table):
|
||||||
return new_dict
|
return new_dict
|
||||||
|
|
||||||
|
|
||||||
def get_interface_type(interface):
|
|
||||||
if interface.upper().startswith('ET'):
|
|
||||||
return 'ethernet'
|
|
||||||
elif interface.upper().startswith('VL'):
|
|
||||||
return 'svi'
|
|
||||||
elif interface.upper().startswith('LO'):
|
|
||||||
return 'loopback'
|
|
||||||
elif interface.upper().startswith('MG'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('MA'):
|
|
||||||
return 'management'
|
|
||||||
elif interface.upper().startswith('PO'):
|
|
||||||
return 'portchannel'
|
|
||||||
else:
|
|
||||||
return 'unknown'
|
|
||||||
|
|
||||||
|
|
||||||
def is_default(interface, module):
|
def is_default(interface, module):
|
||||||
command = 'show run interface {0}'.format(interface)
|
command = 'show run interface {0}'.format(interface)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue