diff options
Diffstat (limited to 'lib/ansible/modules/web_infrastructure/ansible_tower/tower_send.py')
-rw-r--r-- | lib/ansible/modules/web_infrastructure/ansible_tower/tower_send.py | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_send.py b/lib/ansible/modules/web_infrastructure/ansible_tower/tower_send.py deleted file mode 100644 index d8011806fe..0000000000 --- a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_send.py +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/python -# coding: utf-8 -*- - -# (c) 2017, John Westcott IV <john.westcott.iv@redhat.com> -# 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': 'community'} - - -DOCUMENTATION = ''' ---- -module: tower_send -author: "John Westcott IV (@john-westcott-iv)" -version_added: "2.8" -short_description: Send assets to Ansible Tower. -description: - - Send assets to Ansible Tower. See - U(https://www.ansible.com/tower) for an overview. -options: - assets: - description: - - The assets to import. - - This can be the output of tower_receive or loaded from a file - required: False - files: - description: - - List of files to import. - required: False - default: [] - prevent: - description: - - A list of asset types to prevent import for - required: false - default: [] - password_management: - description: - - The password management option to use. - - The prompt option is not supported. - required: false - default: 'default' - choices: ["default", "random"] - -notes: - - One of assets or files needs to be passed in - -requirements: - - "ansible-tower-cli >= 3.3.0" - - six.moves.StringIO - - sys - -extends_documentation_fragment: tower -''' - -EXAMPLES = ''' -- name: Import all tower assets - tower_send: - assets: "{{ export_output.assets }}" - tower_config_file: "~/tower_cli.cfg" -''' - -RETURN = ''' -output: - description: The import messages - returned: success, fail - type: list - sample: [ 'Message 1', 'Message 2' ] -''' - -import os -import sys - -from ansible.module_utils.six.moves import StringIO -from ansible.module_utils.ansible_tower import TowerModule, tower_auth_config, HAS_TOWER_CLI - -from tempfile import mkstemp - -try: - from tower_cli.cli.transfer.send import Sender - from tower_cli.utils.exceptions import TowerCLIError - - from tower_cli.conf import settings - TOWER_CLI_HAS_EXPORT = True -except ImportError: - TOWER_CLI_HAS_EXPORT = False - - -def main(): - argument_spec = dict( - assets=dict(required=False), - files=dict(required=False, default=[], type='list'), - prevent=dict(required=False, default=[], type='list'), - password_management=dict(required=False, default='default', choices=['default', 'random']), - ) - - module = TowerModule(argument_spec=argument_spec, supports_check_mode=False) - - if not HAS_TOWER_CLI: - module.fail_json(msg='ansible-tower-cli required for this module') - - if not TOWER_CLI_HAS_EXPORT: - module.fail_json(msg='ansible-tower-cli version does not support export') - - assets = module.params.get('assets') - prevent = module.params.get('prevent') - password_management = module.params.get('password_management') - files = module.params.get('files') - - result = dict( - changed=False, - msg='', - output='', - ) - - if not assets and not files: - result['msg'] = "Assets or files must be specified" - module.fail_json(**result) - - path = None - if assets: - # We got assets so we need to dump this out to a temp file and append that to files - handle, path = mkstemp(prefix='', suffix='', dir='') - with open(path, 'w') as f: - f.write(assets) - files.append(path) - - tower_auth = tower_auth_config(module) - failed = False - with settings.runtime_values(**tower_auth): - try: - sender = Sender(no_color=False) - old_stdout = sys.stdout - sys.stdout = captured_stdout = StringIO() - try: - sender.send(files, prevent, password_management) - except TypeError as e: - # Newer versions of TowerCLI require 4 parameters - sender.send(files, prevent, [], password_management) - - if sender.error_messages > 0: - failed = True - result['msg'] = "Transfer Failed with %d errors" % sender.error_messages - if sender.changed_messages > 0: - result['changed'] = True - except TowerCLIError as e: - result['msg'] = e.message - failed = True - finally: - if path is not None: - os.remove(path) - result['output'] = captured_stdout.getvalue().split("\n") - sys.stdout = old_stdout - - # Return stdout so that module returns will work - if failed: - module.fail_json(**result) - else: - module.exit_json(**result) - - -if __name__ == '__main__': - main() |