diff options
Diffstat (limited to 'plugins/modules/vyos_facts.py.preview')
| -rw-r--r-- | plugins/modules/vyos_facts.py.preview | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/plugins/modules/vyos_facts.py.preview b/plugins/modules/vyos_facts.py.preview deleted file mode 100644 index 66e684b..0000000 --- a/plugins/modules/vyos_facts.py.preview +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# GNU General Public License v3.0+ - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -DOCUMENTATION = r""" ---- -module: vyos_facts -short_description: Get facts about VyOS devices via REST API. -description: - - Collects facts from VyOS devices using the HTTPS REST API. - - Returns system info and optionally per-resource configuration facts. -version_added: "1.0.0" -author: - - VyOS Community (@vyos) -options: - gather_subset: - description: - - Restrict facts to a subset. Use C(all), C(default), C(config), or C(min). - type: list - elements: str - default: ["min"] - gather_network_resources: - description: - - Which network resource facts to gather. - type: list - elements: str - available_network_resources: - description: - - When true, return a list of available resource names. - type: bool - default: false - hostname: - description: - - Device IP or FQDN. - type: str - required: true - port: - type: int - default: 443 - api_key: - type: str - required: true - no_log: true - timeout: - type: int - default: 30 - verify_ssl: - type: bool - default: false -""" - -RETURN = r""" -ansible_facts: - description: Dictionary of facts keyed by resource name. - returned: always - type: dict -""" - -from ansible.module_utils.basic import AnsibleModule -from ansible_collections.vyos.rest.plugins.module_utils.vyos_rest import ( - VYOS_REST_CONNECTION_ARGSPEC, - VyOSRestClient, - VyOSRestError, -) - - -_NETWORK_RESOURCES = [ - "interfaces", - "l3_interfaces", - "lag_interfaces", - "lldp_global", - "lldp_interfaces", - "static_routes", - "firewall_rules", - "firewall_global", - "firewall_interfaces", - "ospfv2", - "ospfv3", -] - -_RESOURCE_PATHS = { - "interfaces": ["interfaces"], - "l3_interfaces": ["interfaces"], - "lag_interfaces": ["interfaces", "bonding"], - "lldp_global": ["service", "lldp"], - "lldp_interfaces": ["service", "lldp"], - "static_routes": ["protocols", "static"], - "firewall_rules": ["firewall"], - "firewall_global": ["firewall"], - "firewall_interfaces": ["firewall"], - "ospfv2": ["protocols", "ospf"], - "ospfv3": ["protocols", "ospfv3"], -} - - -def _get_subset(client, resource): - path = _RESOURCE_PATHS.get(resource, []) - try: - result = client.retrieve_show_config(path) - return result.get("data") or {} - except VyOSRestError: - return {} - - -def main(): - argument_spec = dict( - gather_subset=dict(type="list", elements="str", default=["min"]), - gather_network_resources=dict(type="list", elements="str"), - available_network_resources=dict(type="bool", default=False), - ) - argument_spec.update(VYOS_REST_CONNECTION_ARGSPEC) - module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) - - client = VyOSRestClient(module) - facts = {} - - if module.params["available_network_resources"]: - facts["available_network_resources"] = _NETWORK_RESOURCES - - gather_subset = module.params["gather_subset"] - get_all = "all" in gather_subset - - # Always gather system info for "min" or "all" - if get_all or "min" in gather_subset or "default" in gather_subset: - try: - info = client.info() - facts["version"] = info.get("data", {}).get("version", "") - facts["hostname"] = info.get("data", {}).get("hostname", "") - except VyOSRestError: - pass - - # Config subset - if get_all or "config" in gather_subset: - try: - result = client.retrieve_show_config([]) - facts["config"] = result.get("data") or {} - except VyOSRestError: - facts["config"] = {} - - # Network resources - requested = module.params.get("gather_network_resources") or [] - if "all" in requested: - requested = _NETWORK_RESOURCES - - for resource in requested: - if resource.startswith("!"): - continue - if resource in _NETWORK_RESOURCES: - facts["network_resources"] = facts.get("network_resources", {}) - facts["network_resources"][resource] = _get_subset(client, resource) - - module.exit_json(changed=False, ansible_facts=facts) - - -if __name__ == "__main__": - main() |
