summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/network/junos/junos_package.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/modules/network/junos/junos_package.py')
-rw-r--r--lib/ansible/modules/network/junos/junos_package.py224
1 files changed, 0 insertions, 224 deletions
diff --git a/lib/ansible/modules/network/junos/junos_package.py b/lib/ansible/modules/network/junos/junos_package.py
deleted file mode 100644
index 0bbae47592..0000000000
--- a/lib/ansible/modules/network/junos/junos_package.py
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-# (c) 2017, Ansible by Red Hat, inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-
-ANSIBLE_METADATA = {'metadata_version': '1.1',
- 'status': ['preview'],
- 'supported_by': 'network'}
-
-
-DOCUMENTATION = """
----
-module: junos_package
-version_added: "2.1"
-author: "Peter Sprygada (@privateip)"
-short_description: Installs packages on remote devices running Junos
-description:
- - This module can install new and updated packages on remote
- devices running Junos. The module will compare the specified
- package with the one running on the remote device and install
- the specified version if there is a mismatch
-extends_documentation_fragment: junos
-options:
- src:
- description:
- - The I(src) argument specifies the path to the source package to be
- installed on the remote device in the advent of a version mismatch.
- The I(src) argument can be either a localized path or a full
- path to the package file to install.
- required: true
- aliases: ['package']
- version:
- description:
- - The I(version) argument can be used to explicitly specify the
- version of the package that should be installed on the remote
- device. If the I(version) argument is not specified, then
- the version is extracts from the I(src) filename.
- reboot:
- description:
- - In order for a package to take effect, the remote device must be
- restarted. When enabled, this argument will instruct the module
- to reboot the device once the updated package has been installed.
- If disabled or the remote package does not need to be changed,
- the device will not be started.
- type: bool
- default: 'yes'
- no_copy:
- description:
- - The I(no_copy) argument is responsible for instructing the remote
- device on where to install the package from. When enabled, the
- package is transferred to the remote device prior to installing.
- type: bool
- default: 'no'
- validate:
- description:
- - The I(validate) argument is responsible for instructing the remote
- device to skip checking the current device configuration
- compatibility with the package being installed. When set to false
- validation is not performed.
- version_added: 2.5
- type: bool
- default: 'yes'
- force:
- description:
- - The I(force) argument instructs the module to bypass the package
- version check and install the packaged identified in I(src) on
- the remote device.
- type: bool
- default: 'no'
- force_host:
- description:
- - The I(force_host) argument controls the way software package or
- bundle is added on remote JUNOS host and is applicable
- for JUNOS QFX5100 device. If the value is set to C(True) it
- will ignore any warnings while adding the host software package or bundle.
- type: bool
- default: False
- version_added: 2.8
- issu:
- description:
- - The I(issu) argument is a boolean flag when set to C(True) allows
- unified in-service software upgrade (ISSU) feature which enables
- you to upgrade between two different Junos OS releases with no
- disruption on the control plane and with minimal disruption of traffic.
- type: bool
- default: False
- version_added: 2.8
- ssh_private_key_file:
- description:
- - The C(ssh_private_key_file) argument is path to the SSH private key file.
- This can be used if you need to provide a private key rather than loading
- the key into the ssh-key-ring/environment
- type: path
- version_added: '2.10'
- ssh_config:
- description:
- - The C(ssh_config) argument is path to the SSH configuration file.
- This can be used to load SSH information from a configuration file.
- If this option is not given by default ~/.ssh/config is queried.
- type: path
- version_added: '2.10'
-requirements:
- - junos-eznc
- - ncclient (>=v0.5.2)
-notes:
- - This module requires the netconf system service be enabled on
- the remote device being managed.
- - Tested against vSRX JUNOS version 15.1X49-D15.4, vqfx-10000 JUNOS Version 15.1X53-D60.4.
- - Works with C(local) connections only.
- - Since this module uses junos-eznc to establish connection with junos
- device the netconf configuration parameters needs to be passed
- using module options for example C(ssh_config) unlike other junos
- modules that uses C(netconf) connection type.
-"""
-
-EXAMPLES = """
-# the required set of connection arguments have been purposely left off
-# the examples for brevity
-
-- name: install local package on remote device
- junos_package:
- src: junos-vsrx-12.1X46-D10.2-domestic.tgz
-
-- name: install local package on remote device without rebooting
- junos_package:
- src: junos-vsrx-12.1X46-D10.2-domestic.tgz
- reboot: no
-
-- name: install local package on remote device with jumpost
- junos_package:
- src: junos-vsrx-12.1X46-D10.2-domestic.tgz
- ssh_config: /home/user/customsshconfig
-"""
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.network.junos.junos import junos_argument_spec, get_device
-
-try:
- from jnpr.junos.utils.sw import SW
- HAS_PYEZ = True
-except ImportError:
- HAS_PYEZ = False
-
-
-def install_package(module, device):
- junos = SW(device)
- package = module.params['src']
- no_copy = module.params['no_copy']
- validate = module.params['validate']
- force_host = module.params['force_host']
- issu = module.params['issu']
-
- def progress_log(dev, report):
- module.log(report)
-
- module.log('installing package')
- result = junos.install(package, progress=progress_log, no_copy=no_copy,
- validate=validate, force_host=force_host, issu=issu)
-
- if not result:
- module.fail_json(msg='Unable to install package on device')
-
- if module.params['reboot']:
- module.log('rebooting system')
- junos.reboot()
-
-
-def main():
- """ Main entry point for Ansible module execution
- """
- argument_spec = dict(
- src=dict(type='path', required=True, aliases=['package']),
- version=dict(),
- reboot=dict(type='bool', default=True),
- no_copy=dict(default=False, type='bool'),
- validate=dict(default=True, type='bool'),
- force=dict(type='bool', default=False),
- transport=dict(default='netconf', choices=['netconf']),
- force_host=dict(type='bool', default=False),
- issu=dict(type='bool', default=False),
- ssh_private_key_file=dict(type='path'),
- ssh_config=dict(type='path')
- )
-
- argument_spec.update(junos_argument_spec)
-
- module = AnsibleModule(argument_spec=argument_spec,
- supports_check_mode=True)
-
- if module.params['provider'] is None:
- module.params['provider'] = {}
-
- if not HAS_PYEZ:
- module.fail_json(
- msg='junos-eznc is required but does not appear to be installed. '
- 'It can be installed using `pip install junos-eznc`'
- )
-
- result = dict(changed=False)
-
- do_upgrade = module.params['force'] or False
-
- device = get_device(module)
-
- if not module.params['force']:
- device.facts_refresh()
- has_ver = device.facts.get('version')
- wants_ver = module.params['version']
- do_upgrade = has_ver != wants_ver
-
- if do_upgrade:
- if not module.check_mode:
- install_package(module, device)
- result['changed'] = True
-
- module.exit_json(**result)
-
-
-if __name__ == '__main__':
- main()