diff options
Diffstat (limited to 'ansible_collections/cisco/iosxr/plugins/action/system.py')
-rw-r--r-- | ansible_collections/cisco/iosxr/plugins/action/system.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/ansible_collections/cisco/iosxr/plugins/action/system.py b/ansible_collections/cisco/iosxr/plugins/action/system.py new file mode 100644 index 000000000..d1ba1e15f --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/action/system.py @@ -0,0 +1,59 @@ +# +# (c) 2016 Red Hat Inc. +# +# This file is part of Ansible +# +# 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/>. +# +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + + +from ansible.utils.display import Display +from ansible_collections.ansible.netcommon.plugins.action.network import ( + ActionModule as ActionNetworkModule, +) + + +display = Display() + + +class ActionModule(ActionNetworkModule): + def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + + module_name = self._task.action.split(".")[-1] + self._config_module = True if module_name in ["iosxr_config", "config"] else False + force_cli = module_name in ("iosxr_netconf", "iosxr_config", "iosxr_command", "iosxr_facts") + persistent_connection = self._play_context.connection.split(".")[-1] + warnings = [] + + if (not force_cli and persistent_connection not in ("netconf", "network_cli")) or ( + force_cli and persistent_connection != "network_cli" + ): + return { + "failed": True, + "msg": "Connection type %s is not valid for this module" + % self._play_context.connection, + } + + result = super(ActionModule, self).run(task_vars=task_vars) + if warnings: + if "warnings" in result: + result["warnings"].extend(warnings) + else: + result["warnings"] = warnings + return result |