diff options
Diffstat (limited to 'plugins/modules')
| -rw-r--r-- | plugins/modules/_vyos_lldp_interface.py | 260 | ||||
| -rw-r--r-- | plugins/modules/vyos_banner.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_command.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_config.py | 5 | ||||
| -rw-r--r-- | plugins/modules/vyos_facts.py | 6 | ||||
| -rw-r--r-- | plugins/modules/vyos_interfaces.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_l3_interfaces.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_lag_interfaces.py | 2 | ||||
| -rw-r--r-- | plugins/modules/vyos_lldp_global.py | 2 | ||||
| l---------[-rw-r--r--] | plugins/modules/vyos_lldp_interface.py | 251 | ||||
| -rw-r--r-- | plugins/modules/vyos_lldp_interfaces.py | 517 | ||||
| -rw-r--r-- | plugins/modules/vyos_logging.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_ping.py | 2 | ||||
| -rw-r--r-- | plugins/modules/vyos_static_route.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_system.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_user.py | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_vlan.py | 3 | 
17 files changed, 808 insertions, 264 deletions
| diff --git a/plugins/modules/_vyos_lldp_interface.py b/plugins/modules/_vyos_lldp_interface.py new file mode 100644 index 00000000..6705d575 --- /dev/null +++ b/plugins/modules/_vyos_lldp_interface.py @@ -0,0 +1,260 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# (c) 2017, Ansible by Red Hat, inc +# +# This file is part of Ansible by Red Hat +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible.  If not, see <http://www.gnu.org/licenses/>. +# + + +ANSIBLE_METADATA = { +    "metadata_version": "1.1", +    "status": ["deprecated"], +    "supported_by": "network", +} + + +DOCUMENTATION = """ +--- +module: vyos_lldp_interface +version_added: "2.4" +author: "Ricardo Carrillo Cruz (@rcarrillocruz)" +short_description: Manage LLDP interfaces configuration on VyOS network devices +description: +  - This module provides declarative management of LLDP interfaces +    configuration on VyOS network devices. +deprecated: +  removed_in: '2.13' +  alternative: vyos_lldp_interfaces +  why: Updated modules released with more functionality. +notes: +  - Tested against VYOS 1.1.7 +options: +  name: +    description: +      - Name of the interface LLDP should be configured on. +    type: str +  aggregate: +    description: List of interfaces LLDP should be configured on. +    type: list +  state: +    description: +      - State of the LLDP configuration. +    default: present +    choices: ['present', 'absent', 'enabled', 'disabled'] +    type: str +extends_documentation_fragment: vyos +""" + +EXAMPLES = """ +- name: Enable LLDP on eth1 +  net_lldp_interface: +    state: present + +- name: Enable LLDP on specific interfaces +  net_lldp_interface: +    interfaces: +      - eth1 +      - eth2 +    state: present + +- name: Disable LLDP globally +  net_lldp_interface: +    state: disabled + +- name: Create aggregate of LLDP interface configurations +  vyos_lldp_interface: +    aggregate: +    - name: eth1 +    - name: eth2 +    state: present + +- name: Delete aggregate of LLDP interface configurations +  vyos_lldp_interface: +    aggregate: +    - name: eth1 +    - name: eth2 +    state: absent +""" + +RETURN = """ +commands: +  description: The list of configuration mode commands to send to the device +  returned: always, except for the platforms that use Netconf transport to manage the device. +  type: list +  sample: +    - set service lldp eth1 +    - set service lldp eth2 disable +""" + + +from copy import deepcopy + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.common.utils import remove_default_spec +from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.vyos import ( +    get_config, +    load_config, +) +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: +            return o + +    return None + + +def map_obj_to_commands(updates, module): +    commands = list() +    want, have = updates + +    for w in want: +        name = w["name"] +        state = w["state"] + +        obj_in_have = search_obj_in_list(name, have) + +        if state == "absent" and obj_in_have: +            commands.append("delete service lldp interface " + name) +        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 state == "disabled": +            if not obj_in_have: +                commands.append("set service lldp interface " + name) +                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" +                ) + +    return commands + + +def map_config_to_obj(module): +    obj = [] +    config = get_config(module).splitlines() + +    output = [c for c in config if c.startswith("set service lldp interface")] + +    for i in output: +        splitted_line = i.split() + +        if len(splitted_line) > 5: +            new_obj = {"name": splitted_line[4]} + +            if splitted_line[5] == "'disable'": +                new_obj["state"] = "disabled" +        else: +            new_obj = {"name": splitted_line[4][1:-1]} +            new_obj["state"] = "present" + +        obj.append(new_obj) + +    return obj + + +def map_params_to_obj(module): +    obj = [] + +    aggregate = module.params.get("aggregate") +    if aggregate: +        for item in aggregate: +            for key in item: +                if item.get(key) is None: +                    item[key] = module.params[key] + +            obj.append(item.copy()) +    else: +        obj.append( +            {"name": module.params["name"], "state": module.params["state"]} +        ) + +    return obj + + +def main(): +    """ main entry point for module execution +    """ +    element_spec = dict( +        name=dict(), +        state=dict( +            default="present", +            choices=["present", "absent", "enabled", "disabled"], +        ), +    ) + +    aggregate_spec = deepcopy(element_spec) +    aggregate_spec["name"] = dict(required=True) + +    # 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.update(element_spec) +    argument_spec.update(vyos_argument_spec) + +    required_one_of = [["name", "aggregate"]] +    mutually_exclusive = [["name", "aggregate"]] + +    module = AnsibleModule( +        argument_spec=argument_spec, +        required_one_of=required_one_of, +        mutually_exclusive=mutually_exclusive, +        supports_check_mode=True, +    ) + +    warnings = list() + +    result = {"changed": False} + +    if warnings: +        result["warnings"] = warnings + +    want = map_params_to_obj(module) +    have = map_config_to_obj(module) + +    commands = map_obj_to_commands((want, have), module) +    result["commands"] = commands + +    if commands: +        commit = not module.check_mode +        load_config(module, commands, commit=commit) +        result["changed"] = True + +    module.exit_json(**result) + + +if __name__ == "__main__": +    main() diff --git a/plugins/modules/vyos_banner.py b/plugins/modules/vyos_banner.py index 39801b55..81a985d4 100644 --- a/plugins/modules/vyos_banner.py +++ b/plugins/modules/vyos_banner.py @@ -36,7 +36,8 @@ description:      devices running VyOS. It allows playbooks to add or remote      banner text from the active running configuration.  notes: -  - Tested against VYOS 1.1.7 +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    banner:      description: diff --git a/plugins/modules/vyos_command.py b/plugins/modules/vyos_command.py index 892e853a..6da7352e 100644 --- a/plugins/modules/vyos_command.py +++ b/plugins/modules/vyos_command.py @@ -83,11 +83,12 @@ options:      default: 1  notes: -  - Tested against VYOS 1.1.7 +  - Tested against VyOS 1.1.8 (helium).    - Running C(show system boot-messages all) will cause the module to hang since      VyOS is using a custom pager setting to display the output of that command.    - If a command sent to the device requires answering a prompt, it is possible      to pass a dict containing I(command), I(answer) and I(prompt). See examples. +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  """  EXAMPLES = """ diff --git a/plugins/modules/vyos_config.py b/plugins/modules/vyos_config.py index 9ffc654c..7c9f3ab1 100644 --- a/plugins/modules/vyos_config.py +++ b/plugins/modules/vyos_config.py @@ -37,9 +37,8 @@ description:      in the device configuration.  extends_documentation_fragment: vyos  notes: -  - Tested against VYOS 1.1.7 -  - Abbreviated commands are NOT idempotent, see -    L(Network FAQ,../network/user_guide/faq.html#why-do-the-config-modules-always-return-changed-true-with-abbreviated-commands). +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    lines:      description: diff --git a/plugins/modules/vyos_facts.py b/plugins/modules/vyos_facts.py index 561b149e..40010b1a 100644 --- a/plugins/modules/vyos_facts.py +++ b/plugins/modules/vyos_facts.py @@ -32,7 +32,8 @@ author:    - Rohit Thakur (@rohitthakur2590)  extends_documentation_fragment: vyos  notes: -  - Tested against VyOS 1.1.8 +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    gather_subset:      description: @@ -54,7 +55,8 @@ options:          specific subset should not be collected.      required: false      version_added: "2.9" -    choices: ['all', 'interfaces', '!interfaces', 'l3_interfaces', '!l3_interfaces', 'lag_interfaces', '!lag_interfaces', 'lldp_global', '!lldp_global'] +    choices: ['all', 'interfaces', '!interfaces', 'l3_interfaces', '!l3_interfaces','lag_interfaces', '!lag_interfaces', +             'lldp_global', '!lldp_global','lldp_interfaces', '!lldp_interfaces']  """  EXAMPLES = """ diff --git a/plugins/modules/vyos_interfaces.py b/plugins/modules/vyos_interfaces.py index bc179ed4..9ea06999 100644 --- a/plugins/modules/vyos_interfaces.py +++ b/plugins/modules/vyos_interfaces.py @@ -45,6 +45,9 @@ description:    - This module manages the interface attributes on VyOS network devices.    - This module supports managing base attributes of Ethernet, Bonding,      VXLAN, Loopback and Virtual Tunnel Interfaces. +notes: +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  author: Nilashish Chakraborty (@nilashishc)  options:    config: diff --git a/plugins/modules/vyos_l3_interfaces.py b/plugins/modules/vyos_l3_interfaces.py index 25a57d30..e79d5d50 100644 --- a/plugins/modules/vyos_l3_interfaces.py +++ b/plugins/modules/vyos_l3_interfaces.py @@ -42,6 +42,9 @@ module: vyos_l3_interfaces  version_added: 2.9  short_description: Manages L3 interface attributes of VyOS network devices.  description: This module manages the L3 interface attributes on VyOS network devices. +notes: +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  author: Nilashish Chakraborty (@NilashishC)  options:    config: diff --git a/plugins/modules/vyos_lag_interfaces.py b/plugins/modules/vyos_lag_interfaces.py index 9707f2e0..d9b007ac 100644 --- a/plugins/modules/vyos_lag_interfaces.py +++ b/plugins/modules/vyos_lag_interfaces.py @@ -44,7 +44,7 @@ short_description: Manages attributes of link aggregation groups on VyOS network  description: This module manages attributes of link aggregation groups on VyOS network devices.  notes:    - Tested against VyOS 1.1.8 (helium). -  - This module works with connection C(network_cli). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  author: Rohit Thakur (@rohitthakur2590)  options:    config: diff --git a/plugins/modules/vyos_lldp_global.py b/plugins/modules/vyos_lldp_global.py index 3783dcbc..d080e822 100644 --- a/plugins/modules/vyos_lldp_global.py +++ b/plugins/modules/vyos_lldp_global.py @@ -44,7 +44,7 @@ short_description: Manage link layer discovery protocol (LLDP) attributes on VyO  description: This module manages link layer discovery protocol (LLDP) attributes on VyOS devices.  notes:    - Tested against VyOS 1.1.8 (helium). -  - This module works with connection C(network_cli). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  author:     - Rohit Thakur (@rohitthakur2590)  options: diff --git a/plugins/modules/vyos_lldp_interface.py b/plugins/modules/vyos_lldp_interface.py index 494fac46..7847a588 100644..120000 --- a/plugins/modules/vyos_lldp_interface.py +++ b/plugins/modules/vyos_lldp_interface.py @@ -1,250 +1 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -# (c) 2017, Ansible by Red Hat, inc -# -# This file is part of Ansible by Red Hat -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible.  If not, see <http://www.gnu.org/licenses/>. -# - -ANSIBLE_METADATA = { -    "metadata_version": "1.1", -    "status": ["preview"], -    "supported_by": "network", -} - - -DOCUMENTATION = """ ---- -module: vyos_lldp_interface -version_added: "2.4" -author: "Ricardo Carrillo Cruz (@rcarrillocruz)" -short_description: Manage LLDP interfaces configuration on VyOS network devices -description: -  - This module provides declarative management of LLDP interfaces -    configuration on VyOS network devices. -notes: -  - Tested against VYOS 1.1.7 -options: -  name: -    description: -      - Name of the interface LLDP should be configured on. -  aggregate: -    description: List of interfaces LLDP should be configured on. -  state: -    description: -      - State of the LLDP configuration. -    default: present -    choices: ['present', 'absent', 'enabled', 'disabled'] -extends_documentation_fragment: vyos -""" - -EXAMPLES = """ -- name: Enable LLDP on eth1 -  net_lldp_interface: -    state: present - -- name: Enable LLDP on specific interfaces -  net_lldp_interface: -    interfaces: -      - eth1 -      - eth2 -    state: present - -- name: Disable LLDP globally -  net_lldp_interface: -    state: disabled - -- name: Create aggregate of LLDP interface configurations -  vyos_lldp_interface: -    aggregate: -    - name: eth1 -    - name: eth2 -    state: present - -- name: Delete aggregate of LLDP interface configurations -  vyos_lldp_interface: -    aggregate: -    - name: eth1 -    - name: eth2 -    state: absent -""" - -RETURN = """ -commands: -  description: The list of configuration mode commands to send to the device -  returned: always, except for the platforms that use Netconf transport to manage the device. -  type: list -  sample: -    - set service lldp eth1 -    - set service lldp eth2 disable -""" -from copy import deepcopy - -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.network.common.utils import remove_default_spec -from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.vyos import ( -    get_config, -    load_config, -) -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: -            return o - -    return None - - -def map_obj_to_commands(updates, module): -    commands = list() -    want, have = updates - -    for w in want: -        name = w["name"] -        state = w["state"] - -        obj_in_have = search_obj_in_list(name, have) - -        if state == "absent" and obj_in_have: -            commands.append("delete service lldp interface " + name) -        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 state == "disabled": -            if not obj_in_have: -                commands.append("set service lldp interface " + name) -                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" -                ) - -    return commands - - -def map_config_to_obj(module): -    obj = [] -    config = get_config(module).splitlines() - -    output = [c for c in config if c.startswith("set service lldp interface")] - -    for i in output: -        splitted_line = i.split() - -        if len(splitted_line) > 5: -            new_obj = {"name": splitted_line[4]} - -            if splitted_line[5] == "'disable'": -                new_obj["state"] = "disabled" -        else: -            new_obj = {"name": splitted_line[4][1:-1]} -            new_obj["state"] = "present" - -        obj.append(new_obj) - -    return obj - - -def map_params_to_obj(module): -    obj = [] - -    aggregate = module.params.get("aggregate") -    if aggregate: -        for item in aggregate: -            for key in item: -                if item.get(key) is None: -                    item[key] = module.params[key] - -            obj.append(item.copy()) -    else: -        obj.append( -            {"name": module.params["name"], "state": module.params["state"]} -        ) - -    return obj - - -def main(): -    """ main entry point for module execution -    """ -    element_spec = dict( -        name=dict(), -        state=dict( -            default="present", -            choices=["present", "absent", "enabled", "disabled"], -        ), -    ) - -    aggregate_spec = deepcopy(element_spec) -    aggregate_spec["name"] = dict(required=True) - -    # 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.update(element_spec) -    argument_spec.update(vyos_argument_spec) - -    required_one_of = [["name", "aggregate"]] -    mutually_exclusive = [["name", "aggregate"]] - -    module = AnsibleModule( -        argument_spec=argument_spec, -        required_one_of=required_one_of, -        mutually_exclusive=mutually_exclusive, -        supports_check_mode=True, -    ) - -    warnings = list() - -    result = {"changed": False} - -    if warnings: -        result["warnings"] = warnings - -    want = map_params_to_obj(module) -    have = map_config_to_obj(module) - -    commands = map_obj_to_commands((want, have), module) -    result["commands"] = commands - -    if commands: -        commit = not module.check_mode -        load_config(module, commands, commit=commit) -        result["changed"] = True - -    module.exit_json(**result) - - -if __name__ == "__main__": -    main() +_vyos_lldp_interface.py
\ No newline at end of file diff --git a/plugins/modules/vyos_lldp_interfaces.py b/plugins/modules/vyos_lldp_interfaces.py new file mode 100644 index 00000000..7fe6d23e --- /dev/null +++ b/plugins/modules/vyos_lldp_interfaces.py @@ -0,0 +1,517 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +#                WARNING                    # +############################################# +# +# This file is auto generated by the resource +#   module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +#   by the resource module builder. +# +# Changes should be made in the model used to +#   generate this file or in the resource module +#   builder template. +# +############################################# + +""" +The module file for vyos_lldp_interfaces +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +ANSIBLE_METADATA = { +    "metadata_version": "1.1", +    "status": ["preview"], +    "supported_by": "network", +} + +DOCUMENTATION = """ +--- +module: vyos_lldp_interfaces +version_added: 2.9 +short_description: Manages attributes of lldp interfaces on VyOS devices. +description: This module manages attributes of lldp interfaces on VyOS network devices. +notes: +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html). +author: +   - Rohit Thakur (@rohitthakur2590) +options: +  config: +    description: A list of lldp interfaces configurations. +    type: list +    suboptions: +      name: +        description: +          - Name of the  lldp interface. +        type: str +        required: True +      enable: +        description: +          - to disable lldp on the interface. +        type: bool +        default: True +      location: +        description: +          - LLDP-MED location data. +        type: dict +        suboptions: +          civic_based: +            description: +              - Civic-based location data. +            type: dict +            suboptions: +              ca_info: +                 description: LLDP-MED address info +                 type: list +                 suboptions: +                   ca_type: +                     description: LLDP-MED Civic Address type. +                     type: int +                     required: True +                   ca_value: +                     description: LLDP-MED Civic Address value. +                     type: str +                     required: True +              country_code: +                description: Country Code +                type: str +                required: True +          coordinate_based: +            description: +              - Coordinate-based location. +            type: dict +            suboptions: +              altitude: +                description: Altitude in meters. +                type: int +              datum: +                description: Coordinate datum type. +                type: str +                choices: +                  - WGS84 +                  - NAD83 +                  - MLLW +              latitude: +                description: Latitude. +                type: str +                required: True +              longitude: +                description: Longitude. +                type: str +                required: True +          elin: +            description: Emergency Call Service ELIN number (between 10-25 numbers). +            type: str +  state: +    description: +      - The state the configuration should be left in. +    type: str +    choices: +    - merged +    - replaced +    - overridden +    - deleted +    default: merged + +""" +EXAMPLES = """ +# Using merged +# +# Before state: +# ------------- +# +# vyos@vyos:~$ show configuration  commands | grep lldp +# +- name: Merge provided configuration with device configuration +  vyos_lldp_interfaces: +    config: +      - name: 'eth1' +        location: +          civic_based: +            country_code: 'US' +            ca_info: +              - ca_type: 0 +                ca_value: 'ENGLISH' + +      - name: 'eth2' +        location: +          coordinate_based: +           altitude: 2200 +           datum: 'WGS84' +           longitude: '222.267255W' +           latitude: '33.524449N' +    state: merged +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# before": [] +# +#    "commands": [ +#        "set service lldp interface eth1 location civic-based country-code 'US'", +#        "set service lldp interface eth1 location civic-based ca-type 0 ca-value 'ENGLISH'", +#        "set service lldp interface eth1", +#        "set service lldp interface eth2 location coordinate-based latitude '33.524449N'", +#        "set service lldp interface eth2 location coordinate-based altitude '2200'", +#        "set service lldp interface eth2 location coordinate-based datum 'WGS84'", +#        "set service lldp interface eth2 location coordinate-based longitude '222.267255W'", +#        "set service lldp interface eth2 location coordinate-based latitude '33.524449N'", +#        "set service lldp interface eth2 location coordinate-based altitude '2200'", +#        "set service lldp interface eth2 location coordinate-based datum 'WGS84'", +#        "set service lldp interface eth2 location coordinate-based longitude '222.267255W'", +#        "set service lldp interface eth2" +# +# "after": [ +#        { +#            "location": { +#                "coordinate_based": { +#                    "altitude": 2200, +#                    "datum": "WGS84", +#                    "latitude": "33.524449N", +#                    "longitude": "222.267255W" +#                } +#            }, +#            "name": "eth2" +#        }, +#        { +#            "location": { +#                "civic_based": { +#                    "ca_info": [ +#                        { +#                            "ca_type": 0, +#                            "ca_value": "ENGLISH" +#                        } +#                    ], +#                    "country_code": "US" +#                } +#            }, +#            "name": "eth1" +#        } +#    ], +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands | grep lldp +# set service lldp interface eth1 location civic-based ca-type 0 ca-value 'ENGLISH' +# set service lldp interface eth1 location civic-based country-code 'US' +# set service lldp interface eth2 location coordinate-based altitude '2200' +# set service lldp interface eth2 location coordinate-based datum 'WGS84' +# set service lldp interface eth2 location coordinate-based latitude '33.524449N' +# set service lldp interface eth2 location coordinate-based longitude '222.267255W' + + +# Using replaced +# +# Before state: +# ------------- +# +# vyos@vyos:~$ show configuration commands | grep lldp +# set service lldp interface eth1 location civic-based ca-type 0 ca-value 'ENGLISH' +# set service lldp interface eth1 location civic-based country-code 'US' +# set service lldp interface eth2 location coordinate-based altitude '2200' +# set service lldp interface eth2 location coordinate-based datum 'WGS84' +# set service lldp interface eth2 location coordinate-based latitude '33.524449N' +# set service lldp interface eth2 location coordinate-based longitude '222.267255W' +# +- name: Replace device configurations of listed LLDP interfaces with provided configurations +  vyos_lldp_interfaces: +    config: +      - name: 'eth2' +        location: +          civic_based: +            country_code: 'US' +            ca_info: +              - ca_type: 0 +                ca_value: 'ENGLISH' + +      - name: 'eth1' +        location: +          coordinate_based: +           altitude: 2200 +           datum: 'WGS84' +           longitude: '222.267255W' +           latitude: '33.524449N' +    state: replaced +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +#    "before": [ +#        { +#            "location": { +#                "coordinate_based": { +#                    "altitude": 2200, +#                    "datum": "WGS84", +#                    "latitude": "33.524449N", +#                    "longitude": "222.267255W" +#                } +#            }, +#            "name": "eth2" +#        }, +#        { +#            "location": { +#                "civic_based": { +#                    "ca_info": [ +#                        { +#                            "ca_type": 0, +#                            "ca_value": "ENGLISH" +#                        } +#                    ], +#                    "country_code": "US" +#                } +#            }, +#            "name": "eth1" +#        } +#    ] +# +#    "commands": [ +#        "delete service lldp interface eth2 location", +#        "set service lldp interface eth2 'disable'", +#        "set service lldp interface eth2 location civic-based country-code 'US'", +#        "set service lldp interface eth2 location civic-based ca-type 0 ca-value 'ENGLISH'", +#        "delete service lldp interface eth1 location", +#        "set service lldp interface eth1 'disable'", +#        "set service lldp interface eth1 location coordinate-based latitude '33.524449N'", +#        "set service lldp interface eth1 location coordinate-based altitude '2200'", +#        "set service lldp interface eth1 location coordinate-based datum 'WGS84'", +#        "set service lldp interface eth1 location coordinate-based longitude '222.267255W'" +#    ] +# +#    "after": [ +#        { +#            "location": { +#                "civic_based": { +#                    "ca_info": [ +#                        { +#                            "ca_type": 0, +#                            "ca_value": "ENGLISH" +#                        } +#                    ], +#                    "country_code": "US" +#                } +#            }, +#            "name": "eth2" +#        }, +#        { +#            "location": { +#                "coordinate_based": { +#                    "altitude": 2200, +#                    "datum": "WGS84", +#                    "latitude": "33.524449N", +#                    "longitude": "222.267255W" +#                } +#            }, +#            "name": "eth1" +#        } +#    ] +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands | grep lldp +# set service lldp interface eth1 'disable' +# set service lldp interface eth1 location coordinate-based altitude '2200' +# set service lldp interface eth1 location coordinate-based datum 'WGS84' +# set service lldp interface eth1 location coordinate-based latitude '33.524449N' +# set service lldp interface eth1 location coordinate-based longitude '222.267255W' +# set service lldp interface eth2 'disable' +# set service lldp interface eth2 location civic-based ca-type 0 ca-value 'ENGLISH' +# set service lldp interface eth2 location civic-based country-code 'US' + + +# Using overridden +# +# Before state +# -------------- +# +# vyos@vyos:~$ show configuration commands | grep lldp +# set service lldp interface eth1 'disable' +# set service lldp interface eth1 location coordinate-based altitude '2200' +# set service lldp interface eth1 location coordinate-based datum 'WGS84' +# set service lldp interface eth1 location coordinate-based latitude '33.524449N' +# set service lldp interface eth1 location coordinate-based longitude '222.267255W' +# set service lldp interface eth2 'disable' +# set service lldp interface eth2 location civic-based ca-type 0 ca-value 'ENGLISH' +# set service lldp interface eth2 location civic-based country-code 'US' +# +- name: Overrides all device configuration with provided configuration +  vyos_lag_interfaces: +    config: +     - name: 'eth2' +       location: +         elin: 0000000911 + +    state: overridden +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# "before": [ +#        { +#            "enable": false, +#            "location": { +#                "civic_based": { +#                    "ca_info": [ +#                        { +#                            "ca_type": 0, +#                            "ca_value": "ENGLISH" +#                        } +#                    ], +#                    "country_code": "US" +#                } +#            }, +#            "name": "eth2" +#        }, +#        { +#            "enable": false, +#            "location": { +#                "coordinate_based": { +#                    "altitude": 2200, +#                    "datum": "WGS84", +#                    "latitude": "33.524449N", +#                    "longitude": "222.267255W" +#                } +#            }, +#            "name": "eth1" +#        } +#    ] +# +#    "commands": [ +#        "delete service lldp interface eth2 location", +#        "delete service lldp interface eth2 disable", +#        "set service lldp interface eth2 location elin 0000000911" +# +# +#    "after": [ +#        { +#            "location": { +#                "elin": 0000000911 +#            }, +#            "name": "eth2" +#        } +#    ] +# +# +# After state +# ------------ +# +# vyos@vyos# run show configuration commands | grep lldp +# set service lldp interface eth2 location elin '0000000911' + + +# Using deleted +# +# Before state +# ------------- +# +# vyos@vyos# run show configuration commands | grep lldp +# set service lldp interface eth2 location elin '0000000911' +# +- name: Delete lldp  interface attributes of given interfaces. +  vyos_lag_interfaces: +    config: +     - name: 'eth2' +    state: deleted +# +# +# ------------------------ +# Module Execution Results +# ------------------------ +# +    "before": [ +        { +            "location": { +                "elin": 0000000911 +            }, +            "name": "eth2" +        } +    ] +# "commands": [ +#    "commands": [ +#        "delete service lldp interface eth2" +#    ] +# +# "after": [] +# After state +# ------------ +# vyos@vyos# run show configuration commands | grep lldp +# set service 'lldp' + + +""" +RETURN = """ +before: +  description: The configuration prior to the model invocation. +  returned: always +  type: list +  sample: > +    The configuration returned will always be in the same format +     of the parameters above. +after: +  description: The resulting configuration model invocation. +  returned: when changed +  type: list +  sample: > +    The configuration returned will always be in the same format +     of the parameters above. +commands: +  description: The set of commands pushed to the remote device. +  returned: always +  type: list +  sample: +    - "set service lldp interface eth2 'disable'" +    - "delete service lldp interface eth1 location" +""" + + +from ansible.module_utils.basic import AnsibleModule +from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.lldp_interfaces.lldp_interfaces import ( +    Lldp_interfacesArgs, +) +from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.lldp_interfaces.lldp_interfaces import ( +    Lldp_interfaces, +) + + +def main(): +    """ +    Main entry point for module execution + +    :returns: the result form module invocation +    """ +    required_if = [ +        ("state", "merged", ("config",)), +        ("state", "replaced", ("config",)), +        ("state", "overridden", ("config",)), +    ] +    module = AnsibleModule( +        argument_spec=Lldp_interfacesArgs.argument_spec, +        required_if=required_if, +        supports_check_mode=True, +    ) + +    result = Lldp_interfaces(module).execute_module() +    module.exit_json(**result) + + +if __name__ == "__main__": +    main() diff --git a/plugins/modules/vyos_logging.py b/plugins/modules/vyos_logging.py index 8eb5777a..6c2f9f7a 100644 --- a/plugins/modules/vyos_logging.py +++ b/plugins/modules/vyos_logging.py @@ -35,7 +35,8 @@ description:    - This module provides declarative management of logging      on Vyatta Vyos devices.  notes: -  - Tested against VYOS 1.1.7 +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    dest:      description: diff --git a/plugins/modules/vyos_ping.py b/plugins/modules/vyos_ping.py index 4b21927c..82710490 100644 --- a/plugins/modules/vyos_ping.py +++ b/plugins/modules/vyos_ping.py @@ -73,9 +73,11 @@ options:      choices: [ absent, present ]      default: present  notes: +  - Tested against VyOS 1.1.8 (helium).    - For a general purpose network module, see the M(net_ping) module.    - For Windows targets, use the M(win_ping) module instead.    - For targets running Python, use the M(ping) module instead. +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  extends_documentation_fragment: vyos  """ diff --git a/plugins/modules/vyos_static_route.py b/plugins/modules/vyos_static_route.py index b7307ef4..564a2574 100644 --- a/plugins/modules/vyos_static_route.py +++ b/plugins/modules/vyos_static_route.py @@ -36,7 +36,8 @@ description:    - This module provides declarative management of static      IP routes on Vyatta VyOS network devices.  notes: -  - Tested against VYOS 1.1.7 +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    prefix:      description: diff --git a/plugins/modules/vyos_system.py b/plugins/modules/vyos_system.py index 9fee88f6..30694a61 100644 --- a/plugins/modules/vyos_system.py +++ b/plugins/modules/vyos_system.py @@ -36,7 +36,8 @@ description:      returning successfully.  extends_documentation_fragment: vyos  notes: -  - Tested against VYOS 1.1.7 +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    host_name:      description: diff --git a/plugins/modules/vyos_user.py b/plugins/modules/vyos_user.py index 2a1181a6..eb71c583 100644 --- a/plugins/modules/vyos_user.py +++ b/plugins/modules/vyos_user.py @@ -38,7 +38,8 @@ description:      current running config. It also supports purging usernames from the      configuration that are not explicitly defined.  notes: -  - Tested against VYOS 1.1.7 +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    aggregate:      description: diff --git a/plugins/modules/vyos_vlan.py b/plugins/modules/vyos_vlan.py index 10eaecd6..4564749e 100644 --- a/plugins/modules/vyos_vlan.py +++ b/plugins/modules/vyos_vlan.py @@ -25,7 +25,8 @@ description:    - This module provides declarative management of VLANs      on VyOS network devices.  notes: -  - Tested against VYOS 1.1.7 +  - Tested against VyOS 1.1.8 (helium). +  - This module works with connection C(network_cli). See L(the VyOS OS Platform Options,../network/user_guide/platform_vyos.html).  options:    name:      description: | 
