mirror of
https://github.com/ansible/awx.git
synced 2026-01-25 00:11:23 -03:30
Enabled the params bulk job make black make black again Fixed inventory and organization input params for bulk modules add collection integration tests Fix cli return errors fix test completeness
99 lines
2.6 KiB
Python
99 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:
|
|
- 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()
|