Server IP : 85.214.239.14 / Your IP : 3.138.118.211 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 : /usr/lib/python3/dist-packages/ansible_collections/cisco/nxos/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: nxos_rollback extends_documentation_fragment: - cisco.nxos.nxos short_description: Set a checkpoint or rollback to a checkpoint. description: - This module offers the ability to set a configuration checkpoint file or rollback to a configuration checkpoint file on Cisco NXOS switches. version_added: 1.0.0 author: - Jason Edelman (@jedelman8) - Gabriele Gerbino (@GGabriele) notes: - Tested against NXOSv 7.3.(0)D1(1) on VIRL - Unsupported for Cisco MDS - Sometimes C(transport=nxapi) may cause a timeout error. options: checkpoint_file: description: - Name of checkpoint file to create. Mutually exclusive with rollback_to. type: str rollback_to: description: - Name of checkpoint file to rollback to. Mutually exclusive with checkpoint_file. type: str """ EXAMPLES = """ - cisco.nxos.nxos_rollback: checkpoint_file: backup.cfg username: '{{ un }}' password: '{{ pwd }}' host: '{{ inventory_hostname }}' - cisco.nxos.nxos_rollback: rollback_to: backup.cfg username: '{{ un }}' password: '{{ pwd }}' host: '{{ inventory_hostname }}' """ RETURN = """ filename: description: The filename of the checkpoint/rollback file. returned: success type: str sample: 'backup.cfg' status: description: Which operation took place and whether it was successful. returned: success type: str sample: 'rollback executed' """ from ansible.module_utils.basic import AnsibleModule from ansible_collections.cisco.nxos.plugins.module_utils.network.nxos.nxos import run_commands def checkpoint(filename, module): commands = [ {"command": "terminal dont-ask", "output": "text"}, {"command": "checkpoint file %s" % filename, "output": "text"}, ] run_commands(module, commands) def rollback(filename, module): commands = [ { "command": "rollback running-config file %s" % filename, "output": "text", }, ] run_commands(module, commands) def main(): argument_spec = dict(checkpoint_file=dict(required=False), rollback_to=dict(required=False)) module = AnsibleModule( argument_spec=argument_spec, mutually_exclusive=[["checkpoint_file", "rollback_to"]], supports_check_mode=False, ) checkpoint_file = module.params["checkpoint_file"] rollback_to = module.params["rollback_to"] status = None filename = None changed = False if checkpoint_file: checkpoint(checkpoint_file, module) status = "checkpoint file created" elif rollback_to: rollback(rollback_to, module) status = "rollback executed" changed = True filename = rollback_to or checkpoint_file module.exit_json(changed=changed, status=status, filename=filename) if __name__ == "__main__": main()