Server IP : 85.214.239.14 / Your IP : 18.189.189.19 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/community/network/plugins/modules/ |
Upload File : |
#!/usr/bin/python # # 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 DOCUMENTATION = ''' --- module: ce_reboot short_description: Reboot a HUAWEI CloudEngine switches. description: - Reboot a HUAWEI CloudEngine switches. author: Gong Jianjun (@QijunPan) notes: - This module requires the netconf system service be enabled on the remote device being managed. - Recommended connection is C(netconf). - This module also works with C(local) connections for legacy playbooks. requirements: ["ncclient"] options: confirm: description: - Safeguard boolean. Set to true if you're sure you want to reboot. type: bool required: true save_config: description: - Flag indicating whether to save the configuration. required: false type: bool default: false ''' EXAMPLES = ''' - name: Reboot module test hosts: cloudengine connection: local gather_facts: no vars: cli: host: "{{ inventory_hostname }}" port: "{{ ansible_ssh_port }}" username: "{{ username }}" password: "{{ password }}" transport: cli tasks: - name: Reboot the device community.network.ce_reboot: confirm: true save_config: true provider: "{{ cli }}" ''' RETURN = ''' rebooted: description: Whether the device was instructed to reboot. returned: success type: bool sample: true ''' from ansible.module_utils.basic import AnsibleModule from ansible_collections.community.network.plugins.module_utils.network.cloudengine.ce import execute_nc_action, ce_argument_spec try: from ncclient.operations.errors import TimeoutExpiredError HAS_NCCLIENT = True except ImportError: HAS_NCCLIENT = False CE_NC_XML_EXECUTE_REBOOT = """ <action> <devm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0"> <reboot> <saveConfig>%s</saveConfig> </reboot> </devm> </action> """ class Reboot(object): """ Reboot a network device """ def __init__(self, **kwargs): """ __init___ """ self.network_module = None self.netconf = None self.init_network_module(**kwargs) self.confirm = self.network_module.params['confirm'] self.save_config = self.network_module.params['save_config'] def init_network_module(self, **kwargs): """ init network module """ self.network_module = AnsibleModule(**kwargs) def netconf_set_action(self, xml_str): """ netconf execute action """ try: execute_nc_action(self.network_module, xml_str) except TimeoutExpiredError: pass def work(self): """ start to work """ if not self.confirm: self.network_module.fail_json( msg='Error: Confirm must be set to true for this module to work.') xml_str = CE_NC_XML_EXECUTE_REBOOT % str(self.save_config).lower() self.netconf_set_action(xml_str) def main(): """ main """ argument_spec = dict( confirm=dict(required=True, type='bool'), save_config=dict(default=False, type='bool') ) argument_spec.update(ce_argument_spec) module = Reboot(argument_spec=argument_spec, supports_check_mode=True) if not HAS_NCCLIENT: module.network_module.fail_json(msg='Error: The ncclient library is required.') changed = False rebooted = False module.work() changed = True rebooted = True results = dict() results['changed'] = changed results['rebooted'] = rebooted module.network_module.exit_json(**results) if __name__ == '__main__': main()