mirror of
https://github.com/ansible/awx.git
synced 2026-01-10 15:32:07 -03:30
fix the api-lint fix the api-lint add the descrition to the bulk job launch module params add the description for the description field add the description for the description field add docs for the bulk api fix the models on the bulk api serializers fix some of the issues highlighted in the code review better use of role model remove comments better error message revert the PrimaryKeyRelatedField for unified_job_template and inventory
100 lines
2.6 KiB
Python
100 lines
2.6 KiB
Python
#!/usr/bin/python
|
|
# coding: utf-8 -*-
|
|
|
|
# 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: bulk_host_create
|
|
author: "Seth Foster (@fosterseth)"
|
|
short_description: Bulk host create in Automation Platform Controller
|
|
description:
|
|
- Single-request bulk host creation in Automation Platform Controller.
|
|
- Provides a way to add many hosts at once to an inventory in Controller.
|
|
options:
|
|
hosts:
|
|
description:
|
|
- List of hosts to add to inventory.
|
|
required: True
|
|
type: list
|
|
elements: dict
|
|
suboptions:
|
|
name:
|
|
description:
|
|
- The name to use for the host.
|
|
type: str
|
|
require: True
|
|
description:
|
|
description:
|
|
- The description to use for the host.
|
|
type: str
|
|
enabled:
|
|
description:
|
|
- If the host should be enabled.
|
|
type: bool
|
|
variables:
|
|
description:
|
|
- Variables to use for the host.
|
|
type: dict
|
|
instance_id:
|
|
description:
|
|
- instance_id to use for the host.
|
|
type: str
|
|
inventory:
|
|
description:
|
|
- Inventory ID the hosts should be made a member of.
|
|
required: True
|
|
type: int
|
|
extends_documentation_fragment: awx.awx.auth
|
|
'''
|
|
|
|
EXAMPLES = '''
|
|
- name: Bulk host create
|
|
bulk_host_create:
|
|
inventory: 1
|
|
hosts:
|
|
- name: foobar.org
|
|
- name: 127.0.0.1
|
|
'''
|
|
|
|
from ..module_utils.controller_api import ControllerAPIModule
|
|
import json
|
|
|
|
|
|
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'),
|
|
inventory=dict(required=True, type='int'),
|
|
)
|
|
|
|
# Create a module for ourselves
|
|
module = ControllerAPIModule(argument_spec=argument_spec)
|
|
|
|
# Extract our parameters
|
|
inventory = module.params.get('inventory')
|
|
hosts = module.params.get('hosts')
|
|
|
|
for h in hosts:
|
|
if 'variables' in h:
|
|
h['variables'] = json.dumps(h['variables'])
|
|
# Launch the jobs
|
|
result = module.post_endpoint("bulk/host_create", data={"inventory": inventory, "hosts": hosts})
|
|
|
|
if result['status_code'] != 201:
|
|
module.fail_json(msg="Failed to create hosts, see response for details", response=result)
|
|
|
|
module.json_output['changed'] = True
|
|
|
|
module.exit_json(**module.json_output)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|