mirror of
https://github.com/ansible/awx.git
synced 2026-01-09 23:12:08 -03:30
Resolve id inventory and organization (#14)
This commit is contained in:
parent
f622d3a1e6
commit
4b9ca3deee
@ -48,9 +48,9 @@ options:
|
||||
type: str
|
||||
inventory:
|
||||
description:
|
||||
- Inventory ID the hosts should be made a member of.
|
||||
- Inventory name or ID the hosts should be made a member of.
|
||||
required: True
|
||||
type: int
|
||||
type: str
|
||||
extends_documentation_fragment: awx.awx.auth
|
||||
'''
|
||||
|
||||
@ -71,21 +71,24 @@ def main():
|
||||
# Any additional arguments that are not fields of the item can be added here
|
||||
argument_spec = dict(
|
||||
hosts=dict(required=True, type='list', elements='dict'),
|
||||
inventory=dict(required=True, type='int'),
|
||||
inventory=dict(required=True, type='str'),
|
||||
)
|
||||
|
||||
# Create a module for ourselves
|
||||
module = ControllerAPIModule(argument_spec=argument_spec)
|
||||
|
||||
# Extract our parameters
|
||||
inventory = module.params.get('inventory')
|
||||
inv_name = module.params.get('inventory')
|
||||
hosts = module.params.get('hosts')
|
||||
|
||||
for h in hosts:
|
||||
if 'variables' in h:
|
||||
h['variables'] = json.dumps(h['variables'])
|
||||
|
||||
inv_id = module.resolve_name_to_id('inventories', inv_name)
|
||||
|
||||
# Launch the jobs
|
||||
result = module.post_endpoint("bulk/host_create", data={"inventory": inventory, "hosts": hosts})
|
||||
result = module.post_endpoint("bulk/host_create", data={"inventory": inv_id, "hosts": hosts})
|
||||
|
||||
if result['status_code'] != 201:
|
||||
module.fail_json(msg="Failed to create hosts, see response for details", response=result)
|
||||
|
||||
@ -125,11 +125,11 @@ options:
|
||||
- If not provided, will use the organization the user is in.
|
||||
- Required if the user belongs to more than one organization.
|
||||
- Affects who can see the resulting bulk job.
|
||||
type: int
|
||||
type: str
|
||||
inventory:
|
||||
description:
|
||||
- Inventory ID to use for the jobs ran within the bulk job, only used if prompt for inventory is set.
|
||||
type: int
|
||||
- Inventory name or ID to use for the jobs ran within the bulk job, only used if prompt for inventory is set.
|
||||
type: str
|
||||
scm_branch:
|
||||
description:
|
||||
- A specific branch of the SCM project to run the template on.
|
||||
@ -189,14 +189,15 @@ EXAMPLES = '''
|
||||
extra_vars: # these override / extend extra_data at the job level
|
||||
food: grape
|
||||
animal: owl
|
||||
inventory: 1
|
||||
organization: Default
|
||||
inventory: Demo Inventory
|
||||
|
||||
- name: Launch bulk jobs with lookup plugin
|
||||
bulk_job_launch:
|
||||
name: My Bulk Job Launch
|
||||
jobs:
|
||||
- unified_job_template: 7
|
||||
- unified_job_template: "{{ lookup('awx.awx.controller_api', 'job_templates', query_params={'name': 'Demo Job Template'}, return_ids=True) }}"
|
||||
- unified_job_template: "{{ lookup('awx.awx.controller_api', 'job_templates', query_params={'name': 'Demo Job Template'}, return_ids=True, expect_one=True) }}"
|
||||
'''
|
||||
|
||||
from ..module_utils.controller_api import ControllerAPIModule
|
||||
@ -208,8 +209,8 @@ def main():
|
||||
jobs=dict(required=True, type='list', elements='dict'),
|
||||
name=dict(),
|
||||
description=dict(),
|
||||
organization=dict(type='int'),
|
||||
inventory=dict(type='int'),
|
||||
organization=dict(type='str'),
|
||||
inventory=dict(type='str'),
|
||||
limit=dict(),
|
||||
scm_branch=dict(),
|
||||
extra_vars=dict(type='dict'),
|
||||
@ -226,8 +227,6 @@ def main():
|
||||
'jobs',
|
||||
'name',
|
||||
'description',
|
||||
'organization',
|
||||
'inventory',
|
||||
'limit',
|
||||
'scm_branch',
|
||||
'extra_vars',
|
||||
@ -240,6 +239,16 @@ def main():
|
||||
if val:
|
||||
post_data[p] = val
|
||||
|
||||
# Resolve name to ID for related resources
|
||||
# Do not resolve name for "jobs" suboptions, for optimization
|
||||
org_name = module.params.get('organization')
|
||||
if org_name:
|
||||
post_data['organization'] = module.resolve_name_to_id('organizations', org_name)
|
||||
|
||||
inv_name = module.params.get('inventory')
|
||||
if inv_name:
|
||||
post_data['inventory'] = module.resolve_name_to_id('inventories', inv_name)
|
||||
|
||||
# Extract our parameters
|
||||
wait = module.params.get('wait')
|
||||
timeout = module.params.get('timeout')
|
||||
|
||||
@ -33,7 +33,7 @@ def test_bulk_host_create(run_module, admin_user, inventory):
|
||||
run_module(
|
||||
'bulk_host_create',
|
||||
{
|
||||
'inventory': inventory.id,
|
||||
'inventory': inventory.name,
|
||||
'hosts': hosts,
|
||||
},
|
||||
admin_user,
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
- name: Generate a unique name
|
||||
set_fact:
|
||||
bulk_host_name: "AWX-Collection-tests-bulk_host_create-{{ test_id }}"
|
||||
bulk_inv_name: "AWX-Collection-tests-bulk_host_create-{{ test_id }}"
|
||||
|
||||
- name: Get our collection package
|
||||
controller_meta:
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
- name: Create an inventory
|
||||
inventory:
|
||||
name: "{{ bulk_host_name }}"
|
||||
name: "{{ bulk_inv_name }}"
|
||||
organization: Default
|
||||
state: present
|
||||
register: inventory_result
|
||||
@ -36,7 +36,7 @@
|
||||
- name: example.dns.gg
|
||||
description: "myhost2"
|
||||
enabled: false
|
||||
inventory: "{{ inventory_result.id }}"
|
||||
inventory: "{{ bulk_inv_name }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
@ -46,6 +46,6 @@
|
||||
# cleanup
|
||||
- name: Delete inventory
|
||||
inventory:
|
||||
name: "{{ bulk_host_name }}"
|
||||
name: "{{ bulk_inv_name }}"
|
||||
organization: Default
|
||||
state: absent
|
||||
|
||||
@ -49,7 +49,8 @@
|
||||
job_tags: "Hello World"
|
||||
limit: "localhost"
|
||||
wait: False
|
||||
inventory: "{{ inventory_id }}"
|
||||
inventory: Demo Inventory
|
||||
organization: Default
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user