����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# 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: export
author: "John Westcott IV (@john-westcott-iv)"
version_added: "3.7.0"
short_description: export resources from Automation Platform Controller.
description:
- Export assets from Automation Platform Controller.
options:
all:
description:
- Export all assets
type: bool
default: 'False'
organizations:
description:
- organization names to export
type: list
elements: str
users:
description:
- user names to export
type: list
elements: str
teams:
description:
- team names to export
type: list
elements: str
credential_types:
description:
- credential type names to export
type: list
elements: str
credentials:
description:
- credential names to export
type: list
elements: str
execution_environments:
description:
- execution environment names to export
type: list
elements: str
notification_templates:
description:
- notification template names to export
type: list
elements: str
inventory_sources:
description:
- inventory soruces to export
type: list
elements: str
inventory:
description:
- inventory names to export
type: list
elements: str
projects:
description:
- project names to export
type: list
elements: str
job_templates:
description:
- job template names to export
type: list
elements: str
workflow_job_templates:
description:
- workflow names to export
type: list
elements: str
applications:
description:
- OAuth2 application names to export
type: list
elements: str
schedules:
description:
- schedule names to export
type: list
elements: str
requirements:
- "awxkit >= 9.3.0"
notes:
- Specifying a name of "all" for any asset type will export all items of that asset type.
extends_documentation_fragment: awx.awx.auth
'''
EXAMPLES = '''
- name: Export all assets
export:
all: True
- name: Export all inventories
export:
inventory: 'all'
- name: Export a job template named "My Template" and all Credentials
export:
job_templates: "My Template"
credential: 'all'
- name: Export a list of inventories
export:
inventory: ['My Inventory 1', 'My Inventory 2']
'''
import logging
from ansible.module_utils.six.moves import StringIO
from ..module_utils.awxkit import ControllerAWXKitModule
try:
from awxkit.api.pages.api import EXPORTABLE_RESOURCES
HAS_EXPORTABLE_RESOURCES = True
except ImportError:
HAS_EXPORTABLE_RESOURCES = False
def main():
argument_spec = dict(
all=dict(type='bool', default=False),
)
# We are not going to raise an error here because the __init__ method of ControllerAWXKitModule will do that for us
if HAS_EXPORTABLE_RESOURCES:
for resource in EXPORTABLE_RESOURCES:
argument_spec[resource] = dict(type='list', elements='str')
module = ControllerAWXKitModule(argument_spec=argument_spec)
if not HAS_EXPORTABLE_RESOURCES:
module.fail_json(msg="Your version of awxkit does not have import/export")
# The export process will never change the AWX system
module.json_output['changed'] = False
# The exporter code currently works like the following:
# Empty string == all assets of that type
# Non-Empty string = just one asset of that type (by name or ID)
# Asset type not present or None = skip asset type (unless everything is None, then export all)
# Here we are going to setup a dict of values to export
export_args = {}
for resource in EXPORTABLE_RESOURCES:
if module.params.get('all') or module.params.get(resource) == 'all':
# If we are exporting everything or we got the keyword "all" we pass in an empty string for this asset type
export_args[resource] = ''
else:
# Otherwise we take either the string or None (if the parameter was not passed) to get one or no items
export_args[resource] = module.params.get(resource)
# Currently the export process does not return anything on error
# It simply just logs to Python's logger
# Set up a log gobbler to get error messages from export_assets
log_capture_string = StringIO()
ch = logging.StreamHandler(log_capture_string)
for logger_name in ['awxkit.api.pages.api', 'awxkit.api.pages.page']:
logger = logging.getLogger(logger_name)
logger.setLevel(logging.ERROR)
ch.setLevel(logging.ERROR)
logger.addHandler(ch)
log_contents = ''
# Run the export process
try:
module.json_output['assets'] = module.get_api_v2_object().export_assets(**export_args)
module.exit_json(**module.json_output)
except Exception as e:
module.fail_json(msg="Failed to export assets {0}".format(e))
finally:
# Finally, consume the logs in case there were any errors and die if there were
log_contents = log_capture_string.getvalue()
log_capture_string.close()
if log_contents != '':
module.fail_json(msg=log_contents)
if __name__ == '__main__':
main()
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| __init__.py | File | 0 B | 0644 |
|
| ad_hoc_command.py | File | 5.44 KB | 0644 |
|
| ad_hoc_command_cancel.py | File | 3.85 KB | 0644 |
|
| ad_hoc_command_wait.py | File | 3.26 KB | 0644 |
|
| application.py | File | 5.11 KB | 0644 |
|
| bulk_host_create.py | File | 2.7 KB | 0644 |
|
| bulk_job_launch.py | File | 9.03 KB | 0644 |
|
| controller_meta.py | File | 1.88 KB | 0644 |
|
| credential.py | File | 10.86 KB | 0644 |
|
| credential_input_source.py | File | 4.06 KB | 0644 |
|
| credential_type.py | File | 4.48 KB | 0644 |
|
| execution_environment.py | File | 3.86 KB | 0644 |
|
| export.py | File | 5.6 KB | 0644 |
|
| group.py | File | 6 KB | 0644 |
|
| host.py | File | 3.73 KB | 0644 |
|
| import.py | File | 3.1 KB | 0644 |
|
| instance.py | File | 3.88 KB | 0644 |
|
| instance_group.py | File | 6.4 KB | 0644 |
|
| inventory.py | File | 6.51 KB | 0644 |
|
| inventory_source.py | File | 10.68 KB | 0644 |
|
| inventory_source_update.py | File | 4.45 KB | 0644 |
|
| job_cancel.py | File | 2.66 KB | 0644 |
|
| job_launch.py | File | 11.35 KB | 0644 |
|
| job_list.py | File | 3.54 KB | 0644 |
|
| job_template.py | File | 22.5 KB | 0644 |
|
| job_wait.py | File | 3.48 KB | 0644 |
|
| label.py | File | 2.97 KB | 0644 |
|
| license.py | File | 3.64 KB | 0644 |
|
| notification_template.py | File | 9.61 KB | 0644 |
|
| organization.py | File | 7.82 KB | 0644 |
|
| project.py | File | 14.71 KB | 0644 |
|
| project_update.py | File | 4.27 KB | 0644 |
|
| role.py | File | 11.26 KB | 0644 |
|
| schedule.py | File | 12.48 KB | 0644 |
|
| settings.py | File | 5.47 KB | 0644 |
|
| subscriptions.py | File | 3.12 KB | 0644 |
|
| team.py | File | 3.2 KB | 0644 |
|
| token.py | File | 6.76 KB | 0644 |
|
| user.py | File | 6.2 KB | 0644 |
|
| workflow_approval.py | File | 3.42 KB | 0644 |
|
| workflow_job_template.py | File | 38.14 KB | 0644 |
|
| workflow_job_template_node.py | File | 16.61 KB | 0644 |
|
| workflow_launch.py | File | 6.56 KB | 0644 |
|
| workflow_node_wait.py | File | 2.67 KB | 0644 |
|