diff options
28 files changed, 501 insertions, 424 deletions
diff --git a/plugins/module_utils/network/vyos/argspec/facts/facts.py b/plugins/module_utils/network/vyos/argspec/facts/facts.py index 456c8bd..84b7135 100644 --- a/plugins/module_utils/network/vyos/argspec/facts/facts.py +++ b/plugins/module_utils/network/vyos/argspec/facts/facts.py @@ -5,7 +5,6 @@ The arg spec for the vyos facts module. """ - from __future__ import absolute_import, division, print_function __metaclass__ = type @@ -13,16 +12,11 @@ __metaclass__ = type class FactsArgs(object): # pylint: disable=R0903 """ The arg spec for the vyos facts module """ - def __init__(self, **kwargs): pass choices = [ - 'all', - 'interfaces', - '!interfaces', - 'l3_interfaces', - '!l3_interfaces' + 'all', 'interfaces', '!interfaces', 'l3_interfaces', '!l3_interfaces' ] argument_spec = { diff --git a/plugins/module_utils/network/vyos/argspec/interfaces/interfaces.py b/plugins/module_utils/network/vyos/argspec/interfaces/interfaces.py index d6ab446..40df125 100644 --- a/plugins/module_utils/network/vyos/argspec/interfaces/interfaces.py +++ b/plugins/module_utils/network/vyos/argspec/interfaces/interfaces.py @@ -30,7 +30,6 @@ __metaclass__ = type class InterfacesArgs(object): # pylint: disable=R0903 """The arg spec for the vyos_interfaces module """ - def __init__(self, **kwargs): pass diff --git a/plugins/module_utils/network/vyos/argspec/l3_interfaces/l3_interfaces.py b/plugins/module_utils/network/vyos/argspec/l3_interfaces/l3_interfaces.py index e5785a8..240f348 100644 --- a/plugins/module_utils/network/vyos/argspec/l3_interfaces/l3_interfaces.py +++ b/plugins/module_utils/network/vyos/argspec/l3_interfaces/l3_interfaces.py @@ -25,7 +25,6 @@ The arg spec for the vyos_l3_interfaces module """ - from __future__ import absolute_import, division, print_function __metaclass__ = type @@ -33,7 +32,6 @@ __metaclass__ = type class L3_interfacesArgs(object): # pylint: disable=R0903 """The arg spec for the vyos_l3_interfaces module """ - def __init__(self, **kwargs): pass diff --git a/plugins/module_utils/network/vyos/config/interfaces/interfaces.py b/plugins/module_utils/network/vyos/config/interfaces/interfaces.py index b17971c..c85b865 100644 --- a/plugins/module_utils/network/vyos/config/interfaces/interfaces.py +++ b/plugins/module_utils/network/vyos/config/interfaces/interfaces.py @@ -12,7 +12,6 @@ created from __future__ import absolute_import, division, print_function __metaclass__ = type - from copy import deepcopy from ansible.module_utils.network.common.cfg.base import ConfigBase from ansible.module_utils.network.common.utils import to_list, dict_diff, remove_empties @@ -24,7 +23,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.utils.utils import search_obj_in_list, get_interface_type, dict_delete - class Interfaces(ConfigBase): """ The vyos_interfaces class @@ -35,9 +33,7 @@ class Interfaces(ConfigBase): '!min', ] - gather_network_resources = [ - 'interfaces' - ] + gather_network_resources = ['interfaces'] def __init__(self, module): super(Interfaces, self).__init__(module) @@ -48,8 +44,8 @@ class Interfaces(ConfigBase): :rtype: A dictionary :returns: The current configuration as a dictionary """ - facts, _warnings = Facts(self._module).get_facts(self.gather_subset, - self.gather_network_resources) + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources) interfaces_facts = facts['ansible_network_resources'].get('interfaces') if not interfaces_facts: return [] @@ -118,19 +114,11 @@ class Interfaces(ConfigBase): if not want: for intf in have: commands.extend( - self._state_deleted( - {'name': intf['name']}, - intf - ) - ) + self._state_deleted({'name': intf['name']}, intf)) else: for item in want: obj_in_have = search_obj_in_list(item['name'], have) - commands.extend( - self._state_deleted( - item, obj_in_have - ) - ) + commands.extend(self._state_deleted(item, obj_in_have)) else: for item in want: name = item['name'] @@ -140,18 +128,10 @@ class Interfaces(ConfigBase): obj_in_have = {'name': item['name']} elif state == 'merged': - commands.extend( - self._state_merged( - item, obj_in_have - ) - ) + commands.extend(self._state_merged(item, obj_in_have)) elif state == 'replaced': - commands.extend( - self._state_replaced( - item, obj_in_have - ) - ) + commands.extend(self._state_replaced(item, obj_in_have)) return commands @@ -182,7 +162,8 @@ class Interfaces(ConfigBase): for intf in have: intf_in_want = search_obj_in_list(intf['name'], want) if not intf_in_want: - commands.extend(self._state_deleted({'name': intf['name']}, intf)) + commands.extend( + self._state_deleted({'name': intf['name']}, intf)) for intf in want: intf_in_have = search_obj_in_list(intf['name'], have) @@ -208,18 +189,30 @@ class Interfaces(ConfigBase): if updates: for key, value in iteritems(updates): - commands.append(self._compute_commands(key=key, value=value, interface=want_copy['name'])) + commands.append( + self._compute_commands(key=key, + value=value, + interface=want_copy['name'])) if want_vifs: for want_vif in want_vifs: - have_vif = search_obj_in_list(want_vif['vlan_id'], have_vifs, key='vlan_id') + have_vif = search_obj_in_list(want_vif['vlan_id'], + have_vifs, + key='vlan_id') if not have_vif: - have_vif = {'vlan_id': want_vif['vlan_id'], 'enabled': True} + have_vif = { + 'vlan_id': want_vif['vlan_id'], + 'enabled': True + } vif_updates = dict_diff(have_vif, want_vif) if vif_updates: for key, value in iteritems(vif_updates): - commands.append(self._compute_commands(key=key, value=value, interface=want_copy['name'], vif=want_vif['vlan_id'])) + commands.append( + self._compute_commands(key=key, + value=value, + interface=want_copy['name'], + vif=want_vif['vlan_id'])) return commands @@ -241,27 +234,52 @@ class Interfaces(ConfigBase): for key in dict_delete(have_copy, want_copy).keys(): if key == 'enabled': continue - commands.append(self._compute_commands(key=key, interface=want_copy['name'], remove=True)) + commands.append( + self._compute_commands(key=key, + interface=want_copy['name'], + remove=True)) if have_copy['enabled'] is False: - commands.append(self._compute_commands(key='enabled', value=True, interface=want_copy['name'])) + commands.append( + self._compute_commands(key='enabled', + value=True, + interface=want_copy['name'])) if have_vifs: for have_vif in have_vifs: - want_vif = search_obj_in_list(have_vif['vlan_id'], want_vifs, key='vlan_id') + want_vif = search_obj_in_list(have_vif['vlan_id'], + want_vifs, + key='vlan_id') if not want_vif: - want_vif = {'vlan_id': have_vif['vlan_id'], 'enabled': True} + want_vif = { + 'vlan_id': have_vif['vlan_id'], + 'enabled': True + } for key in dict_delete(have_vif, want_vif).keys(): if key == 'enabled': continue - commands.append(self._compute_commands(key=key, interface=want_copy['name'], vif=want_vif['vlan_id'], remove=True)) + commands.append( + self._compute_commands(key=key, + interface=want_copy['name'], + vif=want_vif['vlan_id'], + remove=True)) if have_vif['enabled'] is False: - commands.append(self._compute_commands(key='enabled', value=True, interface=want_copy['name'], vif=want_vif['vlan_id'])) + commands.append( + self._compute_commands(key='enabled', + value=True, + interface=want_copy['name'], + vif=want_vif['vlan_id'])) return commands - def _compute_commands(self, interface, key, vif=None, value=None, remove=False): - intf_context = 'interfaces {0} {1}'.format(get_interface_type(interface), interface) + def _compute_commands(self, + interface, + key, + vif=None, + value=None, + remove=False): + intf_context = 'interfaces {0} {1}'.format( + get_interface_type(interface), interface) set_cmd = 'set {0}'.format(intf_context) del_cmd = 'delete {0}'.format(intf_context) diff --git a/plugins/module_utils/network/vyos/config/l3_interfaces/l3_interfaces.py b/plugins/module_utils/network/vyos/config/l3_interfaces/l3_interfaces.py index 9027c84..7cac4ed 100644 --- a/plugins/module_utils/network/vyos/config/l3_interfaces/l3_interfaces.py +++ b/plugins/module_utils/network/vyos/config/l3_interfaces/l3_interfaces.py @@ -14,7 +14,6 @@ created from __future__ import absolute_import, division, print_function __metaclass__ = type - from copy import deepcopy from ansible.module_utils.network.common.cfg.base import ConfigBase from ansible.module_utils.network.common.utils import to_list, remove_empties @@ -26,7 +25,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.utils.utils import search_obj_in_list, get_interface_type, diff_list_of_dicts - class L3_interfaces(ConfigBase): """ The vyos_l3_interfaces class @@ -50,8 +48,10 @@ class L3_interfaces(ConfigBase): :rtype: A dictionary :returns: The current configuration as a dictionary """ - facts, _warnings = Facts(self._module).get_facts(self.gather_subset, self.gather_network_resources) - l3_interfaces_facts = facts['ansible_network_resources'].get('l3_interfaces') + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources) + l3_interfaces_facts = facts['ansible_network_resources'].get( + 'l3_interfaces') if not l3_interfaces_facts: return [] return l3_interfaces_facts @@ -120,19 +120,11 @@ class L3_interfaces(ConfigBase): if not want: for intf in have: commands.extend( - self._state_deleted( - {'name': intf['name']}, - intf - ) - ) + self._state_deleted({'name': intf['name']}, intf)) else: for item in want: obj_in_have = search_obj_in_list(item['name'], have) - commands.extend( - self._state_deleted( - item, obj_in_have - ) - ) + commands.extend(self._state_deleted(item, obj_in_have)) else: for item in want: name = item['name'] @@ -142,18 +134,10 @@ class L3_interfaces(ConfigBase): obj_in_have = {'name': item['name']} if state == 'merged': - commands.extend( - self._state_merged( - item, obj_in_have - ) - ) + commands.extend(self._state_merged(item, obj_in_have)) elif state == 'replaced': - commands.extend( - self._state_replaced( - item, obj_in_have - ) - ) + commands.extend(self._state_replaced(item, obj_in_have)) return commands @@ -184,7 +168,8 @@ class L3_interfaces(ConfigBase): for intf in have: intf_in_want = search_obj_in_list(intf['name'], want) if not intf_in_want: - commands.extend(self._state_deleted({'name': intf['name']}, intf)) + commands.extend( + self._state_deleted({'name': intf['name']}, intf)) for intf in want: intf_in_have = search_obj_in_list(intf['name'], have) @@ -208,17 +193,26 @@ class L3_interfaces(ConfigBase): for update in self._get_updates(want_copy, have_copy): for key, value in iteritems(update): - commands.append(self._compute_commands(key=key, value=value, interface=want_copy['name'])) + commands.append( + self._compute_commands(key=key, + value=value, + interface=want_copy['name'])) if want_vifs: for want_vif in want_vifs: - have_vif = search_obj_in_list(want_vif['vlan_id'], have_vifs, key='vlan_id') + have_vif = search_obj_in_list(want_vif['vlan_id'], + have_vifs, + key='vlan_id') if not have_vif: have_vif = {} for update in self._get_updates(want_vif, have_vif): for key, value in iteritems(update): - commands.append(self._compute_commands(key=key, value=value, interface=want_copy['name'], vif=want_vif['vlan_id'])) + commands.append( + self._compute_commands(key=key, + value=value, + interface=want_copy['name'], + vif=want_vif['vlan_id'])) return commands @@ -238,22 +232,39 @@ class L3_interfaces(ConfigBase): for update in self._get_updates(have_copy, want_copy): for key, value in iteritems(update): - commands.append(self._compute_commands(key=key, value=value, interface=want_copy['name'], remove=True)) + commands.append( + self._compute_commands(key=key, + value=value, + interface=want_copy['name'], + remove=True)) if have_vifs: for have_vif in have_vifs: - want_vif = search_obj_in_list(have_vif['vlan_id'], want_vifs, key='vlan_id') + want_vif = search_obj_in_list(have_vif['vlan_id'], + want_vifs, + key='vlan_id') if not want_vif: want_vif = {'vlan_id': have_vif['vlan_id']} for update in self._get_updates(have_vif, want_vif): for key, value in iteritems(update): - commands.append(self._compute_commands(key=key, interface=want_copy['name'], value=value, vif=want_vif['vlan_id'], remove=True)) + commands.append( + self._compute_commands(key=key, + interface=want_copy['name'], + value=value, + vif=want_vif['vlan_id'], + remove=True)) return commands - def _compute_commands(self, interface, key, vif=None, value=None, remove=False): - intf_context = 'interfaces {0} {1}'.format(get_interface_type(interface), interface) + def _compute_commands(self, + interface, + key, + vif=None, + value=None, + remove=False): + intf_context = 'interfaces {0} {1}'.format( + get_interface_type(interface), interface) set_cmd = 'set {0}'.format(intf_context) del_cmd = 'delete {0}'.format(intf_context) @@ -271,7 +282,9 @@ class L3_interfaces(ConfigBase): def _get_updates(self, want, have): updates = [] - updates = diff_list_of_dicts(want.get('ipv4', []), have.get('ipv4', [])) - updates.extend(diff_list_of_dicts(want.get('ipv6', []), have.get('ipv6', []))) + updates = diff_list_of_dicts(want.get('ipv4', []), + have.get('ipv4', [])) + updates.extend( + diff_list_of_dicts(want.get('ipv6', []), have.get('ipv6', []))) return updates diff --git a/plugins/module_utils/network/vyos/facts/facts.py b/plugins/module_utils/network/vyos/facts/facts.py index a065eaf..bcdc54f 100644 --- a/plugins/module_utils/network/vyos/facts/facts.py +++ b/plugins/module_utils/network/vyos/facts/facts.py @@ -27,16 +27,9 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ from ansible.module_utils. \ network.vyos.vyos import run_commands, get_capabilities - -FACT_LEGACY_SUBSETS = dict( - default=Default, - neighbors=Neighbors, - config=Config -) -FACT_RESOURCE_SUBSETS = dict( - interfaces=InterfacesFacts, - l3_interfaces=L3_interfacesFacts -) +FACT_LEGACY_SUBSETS = dict(default=Default, neighbors=Neighbors, config=Config) +FACT_RESOURCE_SUBSETS = dict(interfaces=InterfacesFacts, + l3_interfaces=L3_interfacesFacts) class Facts(FactsBase): @@ -49,7 +42,10 @@ class Facts(FactsBase): def __init__(self, module): super(Facts, self).__init__(module) - def get_facts(self, legacy_facts_type=None, resource_facts_type=None, data=None): + def get_facts(self, + legacy_facts_type=None, + resource_facts_type=None, + data=None): """ Collect the facts for vyos :param legacy_facts_type: List of legacy facts types @@ -58,12 +54,15 @@ class Facts(FactsBase): :rtype: dict :return: the facts gathered """ - netres_choices = FactsArgs.argument_spec['gather_network_resources'].get('choices', []) + netres_choices = FactsArgs.argument_spec[ + 'gather_network_resources'].get('choices', []) if self.VALID_RESOURCE_SUBSETS: - self.get_network_resources_facts(netres_choices, FACT_RESOURCE_SUBSETS, + self.get_network_resources_facts(netres_choices, + FACT_RESOURCE_SUBSETS, resource_facts_type, data) if self.VALID_LEGACY_GATHER_SUBSETS: - self.get_network_legacy_facts(FACT_LEGACY_SUBSETS, legacy_facts_type) + self.get_network_legacy_facts(FACT_LEGACY_SUBSETS, + legacy_facts_type) return self.ansible_facts, self._warnings diff --git a/plugins/module_utils/network/vyos/facts/interfaces/interfaces.py b/plugins/module_utils/network/vyos/facts/interfaces/interfaces.py index cc89e4f..915abaa 100644 --- a/plugins/module_utils/network/vyos/facts/interfaces/interfaces.py +++ b/plugins/module_utils/network/vyos/facts/interfaces/interfaces.py @@ -13,7 +13,6 @@ based on the configuration. from __future__ import absolute_import, division, print_function __metaclass__ = type - from re import findall, M from copy import deepcopy from ansible.module_utils.network.common import utils @@ -21,11 +20,9 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.argspec.interfaces.interfaces import InterfacesArgs - class InterfacesFacts(object): """ The vyos interfaces fact class """ - def __init__(self, module, subspec='config', options='options'): self._module = module self.argument_spec = InterfacesArgs.argument_spec @@ -52,8 +49,9 @@ class InterfacesFacts(object): data = connection.get_config(flags=['| grep interfaces']) objs = [] - interface_names = findall(r'^set interfaces (?:ethernet|bonding|vti|loopback|vxlan) (?:\'*)(\S+)(?:\'*)', - data, M) + interface_names = findall( + r'^set interfaces (?:ethernet|bonding|vti|loopback|vxlan) (?:\'*)(\S+)(?:\'*)', + data, M) if interface_names: for interface in set(interface_names): intf_regex = r' %s .+$' % interface.strip("'") @@ -65,7 +63,8 @@ class InterfacesFacts(object): facts = {} if objs: facts['interfaces'] = [] - params = utils.validate_config(self.argument_spec, {'config': objs}) + params = utils.validate_config(self.argument_spec, + {'config': objs}) for cfg in params['config']: facts['interfaces'].append(utils.remove_empties(cfg)) @@ -84,8 +83,8 @@ class InterfacesFacts(object): """ vif_conf = '\n'.join(filter(lambda x: ('vif' in x), conf)) eth_conf = '\n'.join(filter(lambda x: ('vif' not in x), conf)) - config = self.parse_attribs( - ['description', 'speed', 'mtu', 'duplex'], eth_conf) + config = self.parse_attribs(['description', 'speed', 'mtu', 'duplex'], + eth_conf) config['vifs'] = self.parse_vifs(vif_conf) return utils.remove_empties(config) diff --git a/plugins/module_utils/network/vyos/facts/l3_interfaces/l3_interfaces.py b/plugins/module_utils/network/vyos/facts/l3_interfaces/l3_interfaces.py index 61f635b..c082c5b 100644 --- a/plugins/module_utils/network/vyos/facts/l3_interfaces/l3_interfaces.py +++ b/plugins/module_utils/network/vyos/facts/l3_interfaces/l3_interfaces.py @@ -13,7 +13,6 @@ based on the configuration. from __future__ import absolute_import, division, print_function __metaclass__ = type - import re from copy import deepcopy from ansible.module_utils.network.common import utils @@ -23,11 +22,9 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.argspec.l3_interfaces.l3_interfaces import L3_interfacesArgs - class L3_interfacesFacts(object): """ The vyos l3_interfaces fact class """ - def __init__(self, module, subspec='config', options='options'): self._module = module self.argument_spec = L3_interfacesArgs.argument_spec @@ -55,7 +52,9 @@ class L3_interfacesFacts(object): # operate on a collection of resource x objs = [] - interface_names = re.findall(r'set interfaces (?:ethernet|bonding|vti|vxlan) (?:\'*)(\S+)(?:\'*)', data, re.M) + interface_names = re.findall( + r'set interfaces (?:ethernet|bonding|vti|vxlan) (?:\'*)(\S+)(?:\'*)', + data, re.M) if interface_names: for interface in set(interface_names): intf_regex = r' %s .+$' % interface @@ -69,7 +68,8 @@ class L3_interfacesFacts(object): facts = {} if objs: facts['l3_interfaces'] = [] - params = utils.validate_config(self.argument_spec, {'config': objs}) + params = utils.validate_config(self.argument_spec, + {'config': objs}) for cfg in params['config']: facts['l3_interfaces'].append(utils.remove_empties(cfg)) diff --git a/plugins/module_utils/network/vyos/facts/legacy/base.py b/plugins/module_utils/network/vyos/facts/legacy/base.py index cdf0cce..33d094b 100644 --- a/plugins/module_utils/network/vyos/facts/legacy/base.py +++ b/plugins/module_utils/network/vyos/facts/legacy/base.py @@ -12,7 +12,6 @@ based on the configuration. from __future__ import absolute_import, division, print_function __metaclass__ = type - import platform import re from ansible.module_utils. \ @@ -114,9 +113,7 @@ class Neighbors(LegacyFactsBase): all_neighbors = self.responses[0] if 'LLDP not configured' not in all_neighbors: - neighbors = self.parse( - self.responses[1] - ) + neighbors = self.parse(self.responses[1]) self.facts['neighbors'] = self.parse_neighbors(neighbors) def parse(self, data): diff --git a/plugins/module_utils/network/vyos/utils/utils.py b/plugins/module_utils/network/vyos/utils/utils.py index f59c24f..960d268 100644 --- a/plugins/module_utils/network/vyos/utils/utils.py +++ b/plugins/module_utils/network/vyos/utils/utils.py @@ -5,7 +5,6 @@ # utils - from __future__ import absolute_import, division, print_function __metaclass__ = type diff --git a/plugins/module_utils/network/vyos/vyos.py b/plugins/module_utils/network/vyos/vyos.py index 2aa7b49..ee15101 100644 --- a/plugins/module_utils/network/vyos/vyos.py +++ b/plugins/module_utils/network/vyos/vyos.py @@ -34,14 +34,18 @@ from ansible.module_utils.connection import Connection, ConnectionError _DEVICE_CONFIGS = {} vyos_provider_spec = { - 'host': dict(), - 'port': dict(type='int'), - - 'username': dict(fallback=(env_fallback, ['ANSIBLE_NET_USERNAME'])), - 'password': dict(fallback=(env_fallback, ['ANSIBLE_NET_PASSWORD']), no_log=True), - 'ssh_keyfile': dict(fallback=(env_fallback, ['ANSIBLE_NET_SSH_KEYFILE']), type='path'), - - 'timeout': dict(type='int'), + 'host': + dict(), + 'port': + dict(type='int'), + 'username': + dict(fallback=(env_fallback, ['ANSIBLE_NET_USERNAME'])), + 'password': + dict(fallback=(env_fallback, ['ANSIBLE_NET_PASSWORD']), no_log=True), + 'ssh_keyfile': + dict(fallback=(env_fallback, ['ANSIBLE_NET_SSH_KEYFILE']), type='path'), + 'timeout': + dict(type='int'), } vyos_argument_spec = { 'provider': dict(type='dict', options=vyos_provider_spec), @@ -49,11 +53,9 @@ vyos_argument_spec = { vyos_top_spec = { 'host': dict(removed_in_version=2.9), 'port': dict(removed_in_version=2.9, type='int'), - 'username': dict(removed_in_version=2.9), 'password': dict(removed_in_version=2.9, no_log=True), 'ssh_keyfile': dict(removed_in_version=2.9, type='path'), - 'timeout': dict(removed_in_version=2.9, type='int'), } vyos_argument_spec.update(vyos_top_spec) @@ -110,7 +112,8 @@ def get_config(module, flags=None, format=None): def run_commands(module, commands, check_rc=True): connection = get_connection(module) try: - response = connection.run_commands(commands=commands, check_rc=check_rc) + response = connection.run_commands(commands=commands, + check_rc=check_rc) except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace')) return response @@ -120,7 +123,9 @@ def load_config(module, commands, commit=False, comment=None): connection = get_connection(module) try: - response = connection.edit_config(candidate=commands, commit=commit, comment=comment) + response = connection.edit_config(candidate=commands, + commit=commit, + comment=comment) except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace')) diff --git a/plugins/modules/_vyos_interface.py b/plugins/modules/_vyos_interface.py index e4b989e..35b3a2c 100644 --- a/plugins/modules/_vyos_interface.py +++ b/plugins/modules/_vyos_interface.py @@ -19,10 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['deprecated'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['deprecated'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -181,7 +182,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def search_obj_in_list(name, lst): for o in lst: if o['name'] == name: @@ -214,7 +214,8 @@ def map_obj_to_commands(updates): if value and value != obj_in_have.get(item): if item == 'description': value = "\'" + str(value) + "\'" - commands.append(set_interface + ' ' + item + ' ' + str(value)) + commands.append(set_interface + ' ' + item + ' ' + + str(value)) if disable and not obj_in_have.get('disable', False): commands.append(set_interface + ' disable') @@ -227,7 +228,8 @@ def map_obj_to_commands(updates): if value: if item == 'description': value = "\'" + str(value) + "\'" - commands.append(set_interface + ' ' + item + ' ' + str(value)) + commands.append(set_interface + ' ' + item + ' ' + + str(value)) if disable: commands.append(set_interface + ' disable') @@ -330,23 +332,31 @@ def check_declarative_intent_params(module, want, result): command = 'show interfaces ethernet %s' % w['name'] rc, out, err = exec_command(module, command) if rc != 0: - module.fail_json(msg=to_text(err, errors='surrogate_then_replace'), command=command, rc=rc) + module.fail_json(msg=to_text(err, errors='surrogate_then_replace'), + command=command, + rc=rc) if want_state in ('up', 'down'): match = re.search(r'%s (\w+)' % 'state', out, re.M) have_state = None if match: have_state = match.group(1) - if have_state is None or not conditional(want_state, have_state.strip().lower()): + if have_state is None or not conditional( + want_state, + have_state.strip().lower()): failed_conditions.append('state ' + 'eq(%s)' % want_state) if want_neighbors: have_host = [] have_port = [] if have_neighbors is None: - rc, have_neighbors, err = exec_command(module, 'show lldp neighbors detail') + rc, have_neighbors, err = exec_command( + module, 'show lldp neighbors detail') if rc != 0: - module.fail_json(msg=to_text(err, errors='surrogate_then_replace'), command=command, rc=rc) + module.fail_json(msg=to_text( + err, errors='surrogate_then_replace'), + command=command, + rc=rc) if have_neighbors: lines = have_neighbors.strip().split('Interface: ') @@ -372,23 +382,21 @@ def check_declarative_intent_params(module, want, result): def main(): """ main entry point for module execution """ - neighbors_spec = dict( - host=dict(), - port=dict() - ) - - element_spec = dict( - name=dict(), - description=dict(), - speed=dict(), - mtu=dict(type='int'), - duplex=dict(choices=['full', 'half', 'auto']), - enabled=dict(default=True, type='bool'), - neighbors=dict(type='list', elements='dict', options=neighbors_spec), - delay=dict(default=10, type='int'), - state=dict(default='present', - choices=['present', 'absent', 'up', 'down']) - ) + neighbors_spec = dict(host=dict(), port=dict()) + + element_spec = dict(name=dict(), + description=dict(), + speed=dict(), + mtu=dict(type='int'), + duplex=dict(choices=['full', 'half', 'auto']), + enabled=dict(default=True, type='bool'), + neighbors=dict(type='list', + elements='dict', + options=neighbors_spec), + delay=dict(default=10, type='int'), + state=dict(default='present', + choices=['present', 'absent', 'up', + 'down'])) aggregate_spec = deepcopy(element_spec) aggregate_spec['name'] = dict(required=True) @@ -396,9 +404,9 @@ def main(): # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec), - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec), ) argument_spec.update(element_spec) argument_spec.update(vyos_argument_spec) diff --git a/plugins/modules/_vyos_l3_interface.py b/plugins/modules/_vyos_l3_interface.py index 63f0873..15668d4 100644 --- a/plugins/modules/_vyos_l3_interface.py +++ b/plugins/modules/_vyos_l3_interface.py @@ -19,10 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['deprecated'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['deprecated'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -108,7 +109,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def is_ipv4(value): if value: address = value.split('/') @@ -150,34 +150,44 @@ def map_obj_to_commands(updates, module): obj_in_have = search_obj_in_list(name, have) if state == 'absent' and obj_in_have: - if not ipv4 and not ipv6 and (obj_in_have['ipv4'] or obj_in_have['ipv6']): + if not ipv4 and not ipv6 and (obj_in_have['ipv4'] + or obj_in_have['ipv6']): if name == "lo": commands.append('delete interfaces loopback lo address') else: - commands.append('delete interfaces ethernet ' + name + ' address') + commands.append('delete interfaces ethernet ' + name + + ' address') else: if ipv4 and ipv4 in obj_in_have['ipv4']: if name == "lo": - commands.append('delete interfaces loopback lo address ' + ipv4) + commands.append( + 'delete interfaces loopback lo address ' + ipv4) else: - commands.append('delete interfaces ethernet ' + name + ' address ' + ipv4) + commands.append('delete interfaces ethernet ' + name + + ' address ' + ipv4) if ipv6 and ipv6 in obj_in_have['ipv6']: if name == "lo": - commands.append('delete interfaces loopback lo address ' + ipv6) + commands.append( + 'delete interfaces loopback lo address ' + ipv6) else: - commands.append('delete interfaces ethernet ' + name + ' address ' + ipv6) + commands.append('delete interfaces ethernet ' + name + + ' address ' + ipv6) elif (state == 'present' and obj_in_have): if ipv4 and ipv4 not in obj_in_have['ipv4']: if name == "lo": - commands.append('set interfaces loopback lo address ' + ipv4) + commands.append('set interfaces loopback lo address ' + + ipv4) else: - commands.append('set interfaces ethernet ' + name + ' address ' + ipv4) + commands.append('set interfaces ethernet ' + name + + ' address ' + ipv4) if ipv6 and ipv6 not in obj_in_have['ipv6']: if name == "lo": - commands.append('set interfaces loopback lo address ' + ipv6) + commands.append('set interfaces loopback lo address ' + + ipv6) else: - commands.append('set interfaces ethernet ' + name + ' address ' + ipv6) + commands.append('set interfaces ethernet ' + name + + ' address ' + ipv6) return commands @@ -208,9 +218,7 @@ def map_config_to_obj(module): elif is_ipv6(value): ipv6.append(value) - obj.append({'name': name, - 'ipv4': ipv4, - 'ipv6': ipv6}) + obj.append({'name': name, 'ipv4': ipv4, 'ipv6': ipv6}) return obj @@ -240,13 +248,11 @@ def map_params_to_obj(module): def main(): """ main entry point for module execution """ - element_spec = dict( - name=dict(), - ipv4=dict(), - ipv6=dict(), - state=dict(default='present', - choices=['present', 'absent']) - ) + element_spec = dict(name=dict(), + ipv4=dict(), + ipv6=dict(), + state=dict(default='present', + choices=['present', 'absent'])) aggregate_spec = deepcopy(element_spec) aggregate_spec['name'] = dict(required=True) @@ -254,9 +260,9 @@ def main(): # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec), - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec), ) argument_spec.update(element_spec) argument_spec.update(vyos_argument_spec) diff --git a/plugins/modules/vyos_banner.py b/plugins/modules/vyos_banner.py index 1f8816a..7f07099 100644 --- a/plugins/modules/vyos_banner.py +++ b/plugins/modules/vyos_banner.py @@ -19,9 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -93,19 +95,21 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def spec_to_commands(updates, module): commands = list() want, have = updates state = module.params['state'] if state == 'absent': - if have.get('state') != 'absent' or (have.get('state') != 'absent' and - 'text' in have.keys() and have['text']): - commands.append('delete system login banner %s' % module.params['banner']) + if have.get('state') != 'absent' or (have.get('state') != 'absent' + and 'text' in have.keys() + and have['text']): + commands.append('delete system login banner %s' % + module.params['banner']) elif state == 'present': - if want['text'] and want['text'].encode().decode('unicode_escape') != have.get('text'): + if want['text'] and want['text'].encode().decode( + 'unicode_escape') != have.get('text'): banner_cmd = 'set system login banner %s ' % module.params['banner'] banner_cmd += want['text'].strip() commands.append(banner_cmd) @@ -144,15 +148,15 @@ def map_params_to_obj(module): def main(): """ main entry point for module execution """ - argument_spec = dict( - banner=dict(required=True, choices=['pre-login', 'post-login']), - text=dict(), - state=dict(default='present', choices=['present', 'absent']) - ) + argument_spec = dict(banner=dict(required=True, + choices=['pre-login', 'post-login']), + text=dict(), + state=dict(default='present', + choices=['present', 'absent'])) argument_spec.update(vyos_argument_spec) - required_if = [('state', 'present', ('text',))] + required_if = [('state', 'present', ('text', ))] module = AnsibleModule(argument_spec=argument_spec, required_if=required_if, diff --git a/plugins/modules/vyos_command.py b/plugins/modules/vyos_command.py index 3570f20..cf08ef6 100644 --- a/plugins/modules/vyos_command.py +++ b/plugins/modules/vyos_command.py @@ -16,10 +16,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -149,7 +150,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def parse_commands(module, warnings): commands = transform_commands(module) @@ -158,23 +158,18 @@ def parse_commands(module, warnings): if not item['command'].startswith('show'): warnings.append( 'Only show commands are supported when using check mode, not ' - 'executing %s' % item['command'] - ) + 'executing %s' % item['command']) commands.remove(item) return commands def main(): - spec = dict( - commands=dict(type='list', required=True), - - wait_for=dict(type='list', aliases=['waitfor']), - match=dict(default='all', choices=['all', 'any']), - - retries=dict(default=10, type='int'), - interval=dict(default=1, type='int') - ) + spec = dict(commands=dict(type='list', required=True), + wait_for=dict(type='list', aliases=['waitfor']), + match=dict(default='all', choices=['all', 'any']), + retries=dict(default=10, type='int'), + interval=dict(default=1, type='int')) spec.update(vyos_argument_spec) diff --git a/plugins/modules/vyos_config.py b/plugins/modules/vyos_config.py index 7987e14..7f8e71b 100644 --- a/plugins/modules/vyos_config.py +++ b/plugins/modules/vyos_config.py @@ -16,10 +16,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -193,8 +194,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec, get_connection - - DEFAULT_COMMENT = 'configured by vyos_config' CONFIG_FILTERS = [ @@ -268,7 +267,9 @@ def run(module, result): # create loadable config that includes only the configuration updates connection = get_connection(module) try: - response = connection.get_diff(candidate=candidate, running=config, diff_match=module.params['match']) + response = connection.get_diff(candidate=candidate, + running=config, + diff_match=module.params['match']) except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace')) @@ -295,20 +296,13 @@ def run(module, result): def main(): - backup_spec = dict( - filename=dict(), - dir_path=dict(type='path') - ) + backup_spec = dict(filename=dict(), dir_path=dict(type='path')) argument_spec = dict( src=dict(type='path'), lines=dict(type='list'), - match=dict(default='line', choices=['line', 'none']), - comment=dict(default=DEFAULT_COMMENT), - config=dict(), - backup=dict(type='bool', default=False), backup_options=dict(type='dict', options=backup_spec), save=dict(type='bool', default=False), @@ -318,11 +312,9 @@ def main(): mutually_exclusive = [('lines', 'src')] - module = AnsibleModule( - argument_spec=argument_spec, - mutually_exclusive=mutually_exclusive, - supports_check_mode=True - ) + module = AnsibleModule(argument_spec=argument_spec, + mutually_exclusive=mutually_exclusive, + supports_check_mode=True) warnings = list() diff --git a/plugins/modules/vyos_facts.py b/plugins/modules/vyos_facts.py index 5c8ac51..27e361d 100644 --- a/plugins/modules/vyos_facts.py +++ b/plugins/modules/vyos_facts.py @@ -7,11 +7,11 @@ The module file for vyos_facts """ - -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': [u'preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': [u'preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -145,7 +145,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def main(): """ Main entry point for module execution @@ -159,8 +158,10 @@ def main(): module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) - warnings = ['default value for `gather_subset` ' - 'will be changed to `min` from `!config` v2.11 onwards'] + warnings = [ + 'default value for `gather_subset` ' + 'will be changed to `min` from `!config` v2.11 onwards' + ] result = Facts(module).get_facts() diff --git a/plugins/modules/vyos_interfaces.py b/plugins/modules/vyos_interfaces.py index a78a983..feef493 100644 --- a/plugins/modules/vyos_interfaces.py +++ b/plugins/modules/vyos_interfaces.py @@ -21,7 +21,6 @@ # builder template. # ############################################# - """ The module file for vyos_interfaces """ @@ -853,7 +852,6 @@ commands: - 'set interfaces ethernet eth2 vif 100 description VIF 100' """ - from ansible.module_utils.basic import AnsibleModule from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.argspec.interfaces.interfaces import InterfacesArgs @@ -862,7 +860,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.config.interfaces.interfaces import Interfaces - def main(): """ Main entry point for module execution diff --git a/plugins/modules/vyos_l3_interfaces.py b/plugins/modules/vyos_l3_interfaces.py index c2dd461..126c6c8 100644 --- a/plugins/modules/vyos_l3_interfaces.py +++ b/plugins/modules/vyos_l3_interfaces.py @@ -21,7 +21,6 @@ # builder template. # ############################################# - """ The module file for vyos_l3_interfaces """ @@ -349,7 +348,6 @@ commands: sample: ['set interfaces ethernet eth1 192.0.2.14/2', 'set interfaces ethernet eth3 vif 101 address 198.51.100.130/25'] """ - from ansible.module_utils.basic import AnsibleModule from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.argspec.l3_interfaces.l3_interfaces import L3_interfacesArgs @@ -358,7 +356,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.config.l3_interfaces.l3_interfaces import L3_interfaces - def main(): """ Main entry point for module execution diff --git a/plugins/modules/vyos_linkagg.py b/plugins/modules/vyos_linkagg.py index 71f46ba..d2ba003 100644 --- a/plugins/modules/vyos_linkagg.py +++ b/plugins/modules/vyos_linkagg.py @@ -19,10 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -107,7 +108,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def search_obj_in_list(name, lst): for o in lst: if o['name'] == name: @@ -135,30 +135,39 @@ def map_obj_to_commands(updates, module): if state == 'absent': if obj_in_have: for m in obj_in_have['members']: - commands.append('delete interfaces ethernet ' + m + ' bond-group') + commands.append('delete interfaces ethernet ' + m + + ' bond-group') commands.append('delete interfaces bonding ' + name) else: if not obj_in_have: - commands.append('set interfaces bonding ' + name + ' mode ' + mode) + commands.append('set interfaces bonding ' + name + ' mode ' + + mode) for m in members: - commands.append('set interfaces ethernet ' + m + ' bond-group ' + name) + commands.append('set interfaces ethernet ' + m + + ' bond-group ' + name) if state == 'down': - commands.append('set interfaces bonding ' + name + ' disable') + commands.append('set interfaces bonding ' + name + + ' disable') else: if mode != obj_in_have['mode']: - commands.append('set interfaces bonding ' + name + ' mode ' + mode) + commands.append('set interfaces bonding ' + name + + ' mode ' + mode) - missing_members = list(set(members) - set(obj_in_have['members'])) + missing_members = list( + set(members) - set(obj_in_have['members'])) for m in missing_members: - commands.append('set interfaces ethernet ' + m + ' bond-group ' + name) + commands.append('set interfaces ethernet ' + m + + ' bond-group ' + name) if state == 'down' and obj_in_have['state'] == 'up': - commands.append('set interfaces bonding ' + name + ' disable') + commands.append('set interfaces bonding ' + name + + ' disable') elif state == 'up' and obj_in_have['state'] == 'down': - commands.append('delete interfaces bonding ' + name + ' disable') + commands.append('delete interfaces bonding ' + name + + ' disable') return commands @@ -181,10 +190,12 @@ def map_config_to_obj(module): else: members = [] - obj.append({'name': name, - 'mode': mode, - 'members': members, - 'state': state}) + obj.append({ + 'name': name, + 'mode': mode, + 'members': members, + 'state': state + }) return obj @@ -213,16 +224,17 @@ def map_params_to_obj(module): def main(): """ main entry point for module execution """ - element_spec = dict( - name=dict(), - mode=dict(choices=['802.3ad', 'active-backup', 'broadcast', - 'round-robin', 'transmit-load-balance', - 'adaptive-load-balance', 'xor-hash', 'on'], - default='802.3ad'), - members=dict(type='list'), - state=dict(default='present', - choices=['present', 'absent', 'up', 'down']) - ) + element_spec = dict(name=dict(), + mode=dict(choices=[ + '802.3ad', 'active-backup', 'broadcast', + 'round-robin', 'transmit-load-balance', + 'adaptive-load-balance', 'xor-hash', 'on' + ], + default='802.3ad'), + members=dict(type='list'), + state=dict(default='present', + choices=['present', 'absent', 'up', + 'down'])) aggregate_spec = deepcopy(element_spec) aggregate_spec['name'] = dict(required=True) @@ -230,9 +242,9 @@ def main(): # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec), - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec), ) argument_spec.update(element_spec) argument_spec.update(vyos_argument_spec) diff --git a/plugins/modules/vyos_lldp.py b/plugins/modules/vyos_lldp.py index fa1ac03..5e33000 100644 --- a/plugins/modules/vyos_lldp.py +++ b/plugins/modules/vyos_lldp.py @@ -19,10 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -70,7 +71,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def has_lldp(module): config = get_config(module).splitlines() @@ -86,9 +86,7 @@ def main(): argument_spec = dict( interfaces=dict(type='list'), state=dict(default='present', - choices=['present', 'absent', - 'enabled', 'disabled']) - ) + choices=['present', 'absent', 'enabled', 'disabled'])) argument_spec.update(vyos_argument_spec) diff --git a/plugins/modules/vyos_lldp_interface.py b/plugins/modules/vyos_lldp_interface.py index 86a64e3..aca3224 100644 --- a/plugins/modules/vyos_lldp_interface.py +++ b/plugins/modules/vyos_lldp_interface.py @@ -19,10 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -100,7 +101,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def search_obj_in_list(name, lst): for o in lst: if o['name'] == name: @@ -124,14 +124,18 @@ def map_obj_to_commands(updates, module): elif state in ('present', 'enabled'): if not obj_in_have: commands.append('set service lldp interface ' + name) - elif obj_in_have and obj_in_have['state'] == 'disabled' and state == 'enabled': - commands.append('delete service lldp interface ' + name + ' disable') + elif obj_in_have and obj_in_have[ + 'state'] == 'disabled' and state == 'enabled': + commands.append('delete service lldp interface ' + name + + ' disable') elif state == 'disabled': if not obj_in_have: commands.append('set service lldp interface ' + name) - commands.append('set service lldp interface ' + name + ' disable') + commands.append('set service lldp interface ' + name + + ' disable') elif obj_in_have and obj_in_have['state'] != 'disabled': - commands.append('set service lldp interface ' + name + ' disable') + commands.append('set service lldp interface ' + name + + ' disable') return commands @@ -171,7 +175,10 @@ def map_params_to_obj(module): obj.append(item.copy()) else: - obj.append({'name': module.params['name'], 'state': module.params['state']}) + obj.append({ + 'name': module.params['name'], + 'state': module.params['state'] + }) return obj @@ -182,9 +189,7 @@ def main(): element_spec = dict( name=dict(), state=dict(default='present', - choices=['present', 'absent', - 'enabled', 'disabled']) - ) + choices=['present', 'absent', 'enabled', 'disabled'])) aggregate_spec = deepcopy(element_spec) aggregate_spec['name'] = dict(required=True) @@ -192,9 +197,9 @@ def main(): # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec), - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec), ) argument_spec.update(element_spec) argument_spec.update(vyos_argument_spec) diff --git a/plugins/modules/vyos_logging.py b/plugins/modules/vyos_logging.py index a94a8bd..e682e42 100644 --- a/plugins/modules/vyos_logging.py +++ b/plugins/modules/vyos_logging.py @@ -19,9 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -117,7 +119,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def spec_to_commands(updates, module): commands = list() want, have = updates @@ -132,18 +133,22 @@ def spec_to_commands(updates, module): if state == 'absent' and w in have: if w['name']: - commands.append('delete system syslog {0} {1} facility {2} level {3}'.format( - dest, name, facility, level)) + commands.append( + 'delete system syslog {0} {1} facility {2} level {3}'. + format(dest, name, facility, level)) else: - commands.append('delete system syslog {0} facility {1} level {2}'.format( - dest, facility, level)) + commands.append( + 'delete system syslog {0} facility {1} level {2}'.format( + dest, facility, level)) elif state == 'present' and w not in have: if w['name']: - commands.append('set system syslog {0} {1} facility {2} level {3}'.format( - dest, name, facility, level)) + commands.append( + 'set system syslog {0} {1} facility {2} level {3}'.format( + dest, name, facility, level)) else: - commands.append('set system syslog {0} facility {1} level {2}'.format( - dest, facility, level)) + commands.append( + 'set system syslog {0} facility {1} level {2}'.format( + dest, facility, level)) return commands @@ -175,10 +180,12 @@ def config_to_dict(module): match = re.search(r'level (\S+)', line, re.M) level = match.group(1).strip("'") - obj.append({'dest': dest, - 'name': name, - 'facility': facility, - 'level': level}) + obj.append({ + 'dest': dest, + 'name': name, + 'facility': facility, + 'level': level + }) return obj @@ -215,7 +222,8 @@ def main(): """ main entry point for module execution """ element_spec = dict( - dest=dict(type='str', choices=['console', 'file', 'global', 'host', 'user']), + dest=dict(type='str', + choices=['console', 'file', 'global', 'host', 'user']), name=dict(type='str'), facility=dict(type='str'), level=dict(type='str'), @@ -227,9 +235,9 @@ def main(): # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec), - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec), ) argument_spec.update(element_spec) diff --git a/plugins/modules/vyos_ping.py b/plugins/modules/vyos_ping.py index 762bc80..f5657ff 100644 --- a/plugins/modules/vyos_ping.py +++ b/plugins/modules/vyos_ping.py @@ -22,9 +22,11 @@ from __future__ import absolute_import, division, print_function __metaclass__ = type -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'community'} +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'community' +} DOCUMENTATION = """ --- @@ -149,7 +151,9 @@ def main(): ttl=dict(type='int'), size=dict(type='int'), interval=dict(type='int'), - state=dict(type="str", choices=["absent", "present"], default="present"), + state=dict(type="str", + choices=["absent", "present"], + default="present"), ) argument_spec.update(vyos_argument_spec) @@ -169,7 +173,9 @@ def main(): if warnings: results["warnings"] = warnings - results["commands"] = [build_ping(dest, count, size, interval, source, ttl)] + results["commands"] = [ + build_ping(dest, count, size, interval, source, ttl) + ] ping_results = run_commands(module, commands=results["commands"]) ping_results_list = ping_results[0].split("\n") @@ -218,9 +224,11 @@ def build_ping(dest, count, size=None, interval=None, source=None, ttl=None): def parse_rate(rate_info): rate_re = re.compile( - r"(?P<tx>\d+) (?:\w+) (?:\w+), (?P<rx>\d+) (?:\w+), (?P<pkt_loss>\d+)% (?:\w+) (?:\w+), (?:\w+) (?P<time>\d+)") + r"(?P<tx>\d+) (?:\w+) (?:\w+), (?P<rx>\d+) (?:\w+), (?P<pkt_loss>\d+)% (?:\w+) (?:\w+), (?:\w+) (?P<time>\d+)" + ) rate_err_re = re.compile( - r"(?P<tx>\d+) (?:\w+) (?:\w+), (?P<rx>\d+) (?:\w+), (?:[+-])(?P<err>\d+) (?:\w+), (?P<pkt_loss>\d+)% (?:\w+) (?:\w+), (?:\w+) (?P<time>\d+)") + r"(?P<tx>\d+) (?:\w+) (?:\w+), (?P<rx>\d+) (?:\w+), (?:[+-])(?P<err>\d+) (?:\w+), (?P<pkt_loss>\d+)% (?:\w+) (?:\w+), (?:\w+) (?P<time>\d+)" + ) if rate_re.match(rate_info): rate = rate_re.match(rate_info) @@ -232,7 +240,8 @@ def parse_rate(rate_info): def parse_rtt(rtt_info): rtt_re = re.compile( - r"rtt (?:.*)=(?:\s*)(?P<min>\d*).(?:\d*)/(?P<avg>\d*).(?:\d*)/(?P<max>\d+).(?:\d*)/(?P<mdev>\d*)") + r"rtt (?:.*)=(?:\s*)(?P<min>\d*).(?:\d*)/(?P<avg>\d*).(?:\d*)/(?P<max>\d+).(?:\d*)/(?P<mdev>\d*)" + ) rtt = rtt_re.match(rtt_info) return rtt.groupdict() diff --git a/plugins/modules/vyos_static_route.py b/plugins/modules/vyos_static_route.py index 3c00bca..777706c 100644 --- a/plugins/modules/vyos_static_route.py +++ b/plugins/modules/vyos_static_route.py @@ -19,10 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -115,7 +116,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def spec_to_commands(updates, module): commands = list() want, have = updates @@ -128,9 +128,11 @@ def spec_to_commands(updates, module): del w['state'] if state == 'absent' and w in have: - commands.append('delete protocols static route %s/%s' % (prefix, mask)) + commands.append('delete protocols static route %s/%s' % + (prefix, mask)) elif state == 'present' and w not in have: - cmd = 'set protocols static route %s/%s next-hop %s' % (prefix, mask, next_hop) + cmd = 'set protocols static route %s/%s next-hop %s' % ( + prefix, mask, next_hop) if admin_distance != 'None': cmd += ' distance %s' % (admin_distance) commands.append(cmd) @@ -158,15 +160,19 @@ def config_to_dict(module): admin_distance = None if admin_distance is not None: - obj.append({'prefix': prefix, - 'mask': mask, - 'next_hop': next_hop, - 'admin_distance': admin_distance}) + obj.append({ + 'prefix': prefix, + 'mask': mask, + 'next_hop': next_hop, + 'admin_distance': admin_distance + }) else: - obj.append({'prefix': prefix, - 'mask': mask, - 'next_hop': next_hop, - 'admin_distance': 'None'}) + obj.append({ + 'prefix': prefix, + 'mask': mask, + 'next_hop': next_hop, + 'admin_distance': 'None' + }) return obj @@ -215,13 +221,12 @@ def map_params_to_obj(module, required_together=None): def main(): """ main entry point for module execution """ - element_spec = dict( - prefix=dict(type='str'), - mask=dict(type='str'), - next_hop=dict(type='str'), - admin_distance=dict(type='int'), - state=dict(default='present', choices=['present', 'absent']) - ) + element_spec = dict(prefix=dict(type='str'), + mask=dict(type='str'), + next_hop=dict(type='str'), + admin_distance=dict(type='int'), + state=dict(default='present', + choices=['present', 'absent'])) aggregate_spec = deepcopy(element_spec) aggregate_spec['prefix'] = dict(required=True) @@ -229,9 +234,9 @@ def main(): # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec), - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec), ) argument_spec.update(element_spec) argument_spec.update(vyos_argument_spec) diff --git a/plugins/modules/vyos_system.py b/plugins/modules/vyos_system.py index 20cf907..449d142 100644 --- a/plugins/modules/vyos_system.py +++ b/plugins/modules/vyos_system.py @@ -17,10 +17,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} - +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -99,7 +100,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def spec_key_to_device_key(key): device_key = key.replace('_', '-') @@ -154,9 +154,11 @@ def spec_to_commands(want, have): commands.append("delete system %s" % device_key) for config in proposed: if state == 'absent' and config in current: - commands.append("delete system %s '%s'" % (device_key, config)) + commands.append("delete system %s '%s'" % + (device_key, config)) elif state == 'present' and config not in current: - commands.append("set system %s '%s'" % (device_key, config)) + commands.append("set system %s '%s'" % + (device_key, config)) else: if state == 'absent' and current and proposed: commands.append('delete system %s' % device_key) @@ -182,7 +184,9 @@ def main(): domain_name=dict(type='str'), domain_search=dict(type='list'), name_server=dict(type='list', aliases=['name_servers']), - state=dict(type='str', default='present', choices=['present', 'absent']), + state=dict(type='str', + default='present', + choices=['present', 'absent']), ) argument_spec.update(vyos_argument_spec) diff --git a/plugins/modules/vyos_user.py b/plugins/modules/vyos_user.py index e670d55..f4fd77d 100644 --- a/plugins/modules/vyos_user.py +++ b/plugins/modules/vyos_user.py @@ -19,9 +19,11 @@ # along with Ansible. If not, see <http://www.gnu.org/licenses/>. # -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -145,10 +147,10 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def validate_level(value, module): if value not in ('admin', 'operator'): - module.fail_json(msg='level must be either admin or operator, got %s' % value) + module.fail_json(msg='level must be either admin or operator, got %s' % + value) def spec_to_commands(updates, module): @@ -177,7 +179,9 @@ def spec_to_commands(updates, module): if needs_update(want, have, 'configured_password'): if update_password == 'always' or not have: - add(commands, want, 'authentication plaintext-password %s' % want['configured_password']) + add( + commands, want, 'authentication plaintext-password %s' % + want['configured_password']) return commands @@ -278,17 +282,14 @@ def update_objects(want, have): def main(): """ main entry point for module execution """ - element_spec = dict( - name=dict(), - - full_name=dict(), - level=dict(aliases=['role']), - - configured_password=dict(no_log=True), - update_password=dict(default='always', choices=['on_create', 'always']), - - state=dict(default='present', choices=['present', 'absent']) - ) + element_spec = dict(name=dict(), + full_name=dict(), + level=dict(aliases=['role']), + configured_password=dict(no_log=True), + update_password=dict(default='always', + choices=['on_create', 'always']), + state=dict(default='present', + choices=['present', 'absent'])) aggregate_spec = deepcopy(element_spec) aggregate_spec['name'] = dict(required=True) @@ -296,10 +297,11 @@ def main(): # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec, aliases=['users', 'collection']), - purge=dict(type='bool', default=False) - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec, + aliases=['users', 'collection']), + purge=dict(type='bool', default=False)) argument_spec.update(element_spec) argument_spec.update(vyos_argument_spec) @@ -312,9 +314,8 @@ def main(): warnings = list() if module.params['password'] and not module.params['configured_password']: warnings.append( - 'The "password" argument is used to authenticate the current connection. ' + - 'To set a user password use "configured_password" instead.' - ) + 'The "password" argument is used to authenticate the current connection. ' + + 'To set a user password use "configured_password" instead.') result = {'changed': False} if warnings: diff --git a/plugins/modules/vyos_vlan.py b/plugins/modules/vyos_vlan.py index 88ab71b..5273637 100644 --- a/plugins/modules/vyos_vlan.py +++ b/plugins/modules/vyos_vlan.py @@ -7,10 +7,11 @@ from __future__ import absolute_import, division, print_function __metaclass__ = type - -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'network'} +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} DOCUMENTATION = """ --- @@ -129,7 +130,6 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network. \ vyos.vyos import vyos_argument_spec - def search_obj_in_list(vlan_id, lst): obj = list() for o in lst: @@ -156,17 +156,22 @@ def map_obj_to_commands(updates, module): if obj_in_have: for obj in obj_in_have: for i in obj['interfaces']: - commands.append('delete interfaces ethernet {0} vif {1}'.format(i, vlan_id)) + commands.append( + 'delete interfaces ethernet {0} vif {1}'.format( + i, vlan_id)) elif state == 'present': if not obj_in_have: if w['interfaces'] and w['vlan_id']: for i in w['interfaces']: - cmd = 'set interfaces ethernet {0} vif {1}'.format(i, vlan_id) + cmd = 'set interfaces ethernet {0} vif {1}'.format( + i, vlan_id) if w['name']: - commands.append(cmd + ' description {0}'.format(name)) + commands.append(cmd + + ' description {0}'.format(name)) elif w['address']: - commands.append(cmd + ' address {0}'.format(address)) + commands.append(cmd + + ' address {0}'.format(address)) else: commands.append(cmd) @@ -175,7 +180,9 @@ def map_obj_to_commands(updates, module): obj_in_want = search_obj_in_list(h['vlan_id'], want) if not obj_in_want: for i in h['interfaces']: - commands.append('delete interfaces ethernet {0} vif {1}'.format(i, h['vlan_id'])) + commands.append( + 'delete interfaces ethernet {0} vif {1}'.format( + i, h['vlan_id'])) return commands @@ -200,12 +207,18 @@ def map_params_to_obj(module): obj.append(d) else: obj.append({ - 'vlan_id': str(module.params['vlan_id']), - 'name': module.params['name'], - 'address': module.params['address'], - 'state': module.params['state'], - 'interfaces': module.params['interfaces'], - 'associated_interfaces': module.params['associated_interfaces'] + 'vlan_id': + str(module.params['vlan_id']), + 'name': + module.params['name'], + 'address': + module.params['address'], + 'state': + module.params['state'], + 'interfaces': + module.params['interfaces'], + 'associated_interfaces': + module.params['associated_interfaces'] }) return obj @@ -270,33 +283,34 @@ def check_declarative_intent_params(want, module, result): if w.get('associated_interfaces') is None: continue for i in w['associated_interfaces']: - if (set(obj_interface) - set(w['associated_interfaces'])) != set([]): - module.fail_json(msg='Interface {0} not configured on vlan {1}'.format(i, w['vlan_id'])) + if (set(obj_interface) - set(w['associated_interfaces'])) != set( + []): + module.fail_json( + msg='Interface {0} not configured on vlan {1}'.format( + i, w['vlan_id'])) def main(): """ main entry point for module execution """ - element_spec = dict( - vlan_id=dict(type='int'), - name=dict(), - address=dict(), - interfaces=dict(type='list'), - associated_interfaces=dict(type='list'), - delay=dict(default=10, type='int'), - state=dict(default='present', - choices=['present', 'absent']) - ) + element_spec = dict(vlan_id=dict(type='int'), + name=dict(), + address=dict(), + interfaces=dict(type='list'), + associated_interfaces=dict(type='list'), + delay=dict(default=10, type='int'), + state=dict(default='present', + choices=['present', 'absent'])) aggregate_spec = deepcopy(element_spec) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) - argument_spec = dict( - aggregate=dict(type='list', elements='dict', options=aggregate_spec), - purge=dict(default=False, type='bool') - ) + argument_spec = dict(aggregate=dict(type='list', + elements='dict', + options=aggregate_spec), + purge=dict(default=False, type='bool')) argument_spec.update(element_spec) argument_spec.update(vyos_argument_spec) |