Example #1
0
def run_module():
    module_args = dict(domain=dict(type='str', required=True),
                       action=dict(type='str', required=True,
                                   aliases=['name']),
                       parameters=dict(type='dict', required=False))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False)
    connection = Connection(module._socket_path)
    result = {}
    domain = module.params.get('domain')
    action = module.params.get('action')

    if action in excluded_actions:
        mods = ', '.join(excluded_actions[action])
        warning_message = 'The action \'' + action + \
            '\' has a module(s) that specifically target these actions, please see modules ' + mods
        module.warn(warning_message)
        module.fail_json(msg=warning_message, **result)

    parameters = module.params.get('parameters')
    dp_req = ActionQueueRequest(domain, action, parameters)

    try:
        response = connection.execute_action(**dp_req.post())
        clean_dp_dict(response)
    except ConnectionError as e:
        response = to_text(e)
        result['changed'] = False
        module.fail_json(msg=response, **result)

    result['response'] = response
    result['changed'] = True
    module.exit_json(**result)
Example #2
0
def run_module():
    module_args = dict(export_path=dict(type='path', required=True),
                       overwrite_objects=dict(type='bool',
                                              required=False,
                                              default=False),
                       overwrite_files=dict(type='bool',
                                            required=False,
                                            default=False),
                       rewrite_local_ip=dict(type='bool',
                                             required=False,
                                             default=False),
                       domains=dict(type='list',
                                    required=False,
                                    elements='dict'),
                       files=dict(type='list', required=False,
                                  elements='dict'))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False)
    connection = Connection(module._socket_path)
    result = {}

    action = "Import"
    params = deepcopy(module.params)
    # Convert booleans in the domain dictionaries
    if params['domains']:
        for domain in params['domains']:
            convert_bool_to_on_or_off(domain)

    params = map_module_args_to_datapower_keys(params)
    params = convert_bool_to_on_or_off(params)

    params['Format'] = 'ZIP'

    try:
        with open(module.params['export_path'], 'rb') as f:
            data = f.read()
    except (IOError, OSError) as e:
        module.fail_json(
            msg='Error while reading export zip file from disk: {0}'.format(e))
    params['InputFile'] = base64.b64encode(data).decode()

    action_req = ActionQueueRequest('default', action, params)

    try:
        response = connection.execute_action(**action_req.post())
    except ConnectionError as e:
        response = to_text(e)
        result['parameters'] = params
        result['changed'] = False
        module.fail_json(msg=response, **result)

    del params['InputFile']
    result['response'] = response
    result['changed'] = True
    module.exit_json(**result)
Example #3
0
def run_module():
    module_args = dict(domain=dict(type='str', required=True),
                       export_path=dict(type='path', required=True))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False)

    connection = Connection(module._socket_path)
    result = {}
    domain = module.params.get('domain')
    action = "Import"
    params = deepcopy(module.params)
    params['OverwriteFiles'] = 'on'
    params['OverwriteObjects'] = 'on'
    params = convert_bool_to_on_or_off(params)
    params['Format'] = 'ZIP'

    try:
        with open(module.params['export_path'], 'rb') as f:
            data = f.read()
    except (IOError, OSError) as e:
        module.fail_json(
            msg='Error while reading export zip file from disk: {0}'.format(e))

    params['InputFile'] = base64.b64encode(data).decode()
    action_req = ActionQueueRequest(domain, action, params)

    try:
        response = connection.execute_action(**action_req.post())
    except ConnectionError as e:
        response = to_text(e)
        result['changed'] = False
        module.fail_json(msg=response, **result)

    result['response'] = response
    result['changed'] = True
    module.exit_json(**result)
Example #4
0
def run_module():
    # https://www.ibm.com/docs/en/datapower-gateways/10.0.x?topic=actions-export-action
    module_args = dict(
        dest=dict(type='path', required=True),
        domains=dict(type='list',
                     required=False,
                     elements='str',
                     default='all-domains'),
        ref_objects=dict(type='bool', required=False, default=False),
        ref_files=dict(type='bool', required=False, default=True),
        include_debug=dict(type='bool', required=False),
        user_comment=dict(type='str', required=False),
        all_files=dict(type='bool', required=False, default=False),
        persisted=dict(type='bool', required=False, default=False),
        include_internal_files=dict(type='bool', required=False, default=True),
        deployment_policy=dict(type='str', required=False),
    )

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False)
    connection = Connection(module._socket_path)
    result = {}

    action = "Export"

    parameters = map_module_args_to_datapower_keys(module.params)
    parameters = convert_bool_to_on_or_off(parameters)

    parameters['Format'] = 'ZIP'

    domains = []
    if module.params['domains']:
        for domain in module.params['domains']:
            domain_dict = {
                'name': domain,
                'ref-objects': module.params['ref_objects'],
                'ref-files': module.params['ref_files'],
                'include-debug': module.params['include_debug']
            }
            domains.append(domain_dict)
        parameters['Domain'] = domains

    action_req = ActionQueueRequest('default', action, parameters)
    filename = get_random_file_name('zip')

    try:
        response = connection.execute_action(**action_req.post())
    except ConnectionError as e:
        response = to_text(e)
        result['changed'] = False
        module.fail_json(msg=response, **result)

    dest = module.params['dest']
    path = os.path.join(dest, filename)

    try:
        create_file_from_base64(path, response['result']['file'])
    except (IOError, OSError) as e:
        module.fail_json(msg='Error while writing file to disk: {0}'.format(e))

    result['path'] = path
    result['changed'] = True
    module.exit_json(**result)