diff options
Diffstat (limited to 'plugins/module_utils/network')
3 files changed, 57 insertions, 22 deletions
| 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 91434e4b..2f1dfe45 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 @@ -73,8 +72,17 @@ class L3_interfacesArgs(object):  # pylint: disable=R0903              },              "type": "list",          }, +        "running_config": {"type": "str"},          "state": { -            "choices": ["merged", "replaced", "overridden", "deleted"], +            "choices": [ +                "merged", +                "replaced", +                "overridden", +                "deleted", +                "rendered", +                "gathered", +                "parsed", +            ],              "default": "merged",              "type": "str",          }, 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 a23e417f..122cc1eb 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 @@ -52,14 +52,14 @@ class L3_interfaces(ConfigBase):      def __init__(self, module):          super(L3_interfaces, self).__init__(module) -    def get_l3_interfaces_facts(self): +    def get_l3_interfaces_facts(self, data=None):          """ Get the 'facts' (the current configuration)          :rtype: A dictionary          :returns: The current configuration as a dictionary          """          facts, _warnings = Facts(self._module).get_facts( -            self.gather_subset, self.gather_network_resources +            self.gather_subset, self.gather_network_resources, data=data          )          l3_interfaces_facts = facts["ansible_network_resources"].get(              "l3_interfaces" @@ -78,25 +78,44 @@ class L3_interfaces(ConfigBase):          warnings = list()          commands = list() -        existing_l3_interfaces_facts = self.get_l3_interfaces_facts() -        commands.extend(self.set_config(existing_l3_interfaces_facts)) -        if commands: -            if self._module.check_mode: -                resp = self._connection.edit_config(commands, commit=False) -            else: -                resp = self._connection.edit_config(commands) -            result["changed"] = True +        if self.state in self.ACTION_STATES: +            existing_l3_interfaces_facts = self.get_l3_interfaces_facts() +        else: +            existing_l3_interfaces_facts = [] -        result["commands"] = commands +        if self.state in self.ACTION_STATES or self.state == "rendered": +            commands.extend(self.set_config(existing_l3_interfaces_facts)) -        if self._module._diff: -            result["diff"] = resp["diff"] if result["changed"] else None +        if commands and self.state in self.ACTION_STATES: +            if not self._module.check_mode: +                self._connection.edit_config(commands) +            result["changed"] = True -        changed_l3_interfaces_facts = self.get_l3_interfaces_facts() +        if self.state in self.ACTION_STATES: +            result["commands"] = commands + +        if self.state in self.ACTION_STATES or self.state == "gathered": +            changed_l3_interfaces_facts = self.get_l3_interfaces_facts() +        elif self.state == "rendered": +            result["rendered"] = commands +        elif self.state == "parsed": +            running_config = self._module.params["running_config"] +            if not running_config: +                self._module.fail_json( +                    msg="value of running_config parameter must not be empty for state parsed" +                ) +            result["parsed"] = self.get_l3_interfaces_facts( +                data=running_config +            ) +        else: +            changed_l3_interfaces_facts = [] -        result["before"] = existing_l3_interfaces_facts -        if result["changed"]: -            result["after"] = changed_l3_interfaces_facts +        if self.state in self.ACTION_STATES: +            result["before"] = existing_l3_interfaces_facts +            if result["changed"]: +                result["after"] = changed_l3_interfaces_facts +        elif self.state == "gathered": +            result["gathered"] = changed_l3_interfaces_facts          result["warnings"] = warnings          return result @@ -126,7 +145,10 @@ class L3_interfaces(ConfigBase):          commands = []          state = self._module.params["state"] -        if state in ("merged", "replaced", "overridden") and not want: +        if ( +            state in ("merged", "replaced", "overridden", "rendered") +            and not want +        ):              self._module.fail_json(                  msg="value of config parameter must not be empty for state {0}".format(                      state @@ -154,7 +176,7 @@ class L3_interfaces(ConfigBase):                  if not obj_in_have:                      obj_in_have = {"name": item["name"]} -                if state == "merged": +                if state in ("merged", "rendered"):                      commands.extend(self._state_merged(item, obj_in_have))                  elif state == "replaced": 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 d1d62c23..3b99d347 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 @@ -10,7 +10,12 @@ for a given resource, parsed, and the facts tree is populated  based on the configuration.  """ -from __future__ import absolute_import, division, print_function +from __future__ import ( +    absolute_import, +    division, +    print_function, +    unicode_literals, +)  __metaclass__ = type | 
