1# 2# Copyright 2015 Peter Sprygada <psprygada@ansible.com> 3# 4# This file is part of Ansible 5# 6# Ansible is free software: you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation, either version 3 of the License, or 9# (at your option) any later version. 10# 11# Ansible is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with Ansible. If not, see <http://www.gnu.org/licenses/>. 18# 19from __future__ import (absolute_import, division, print_function) 20__metaclass__ = type 21 22from ansible_collections.ansible.netcommon.plugins.action.network import ActionModule as ActionNetworkModule 23 24 25class ActionModule(ActionNetworkModule): 26 27 EXOS_NETWORK_CLI_MODULES = ( 28 'exos_facts', 29 'exos_config', 30 'exos_command') 31 32 def run(self, tmp=None, task_vars=None): 33 del tmp # tmp no longer has any effect 34 35 module_name = self._task.action.split('.')[-1] 36 self._config_module = True if module_name == 'exos_config' else False 37 persistent_connection = self._play_context.connection.split('.')[-1] 38 39 if persistent_connection not in ('network_cli', 'httpapi'): 40 return {'failed': True, 'msg': 'Connection type %s is not valid for this module' % self._play_context.connection} 41 42 if persistent_connection == 'network_cli' and module_name not in self.EXOS_NETWORK_CLI_MODULES: 43 return {'failed': True, 'msg': "Connection type %s is not valid for this module" % self._play_context.connection} 44 45 return super(ActionModule, self).run(task_vars=task_vars) 46