WIP: Module for EEs

This commit is contained in:
Shane McDonald 2020-10-10 11:02:16 -04:00
parent 1f4a45a698
commit ee1d322336
8 changed files with 112 additions and 0 deletions

View File

@ -28,6 +28,11 @@ options:
- Job_type to use for the ad hoc command.
type: str
choices: [ 'run', 'check' ]
execution_environment:
description:
- Execution Environment to use for the ad hoc command.
required: False
type: str
inventory:
description:
- Inventory to use for the ad hoc command.

View File

@ -0,0 +1,86 @@
#!/usr/bin/python
# coding: utf-8 -*-
# (c) 2020, Shane McDonald <shanemcd@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: tower_execution_environment
author: "Shane McDonald"
short_description: create, update, or destroy Execution Environments in Ansible Tower.
description:
- Create, update, or destroy Execution Environments in Ansible Tower. See
U(https://www.ansible.com/tower) for an overview.
options:
image:
description:
- The fully qualified name of the container image
required: True
type: str
state:
description:
- Desired state of the resource.
choices: ["present", "absent"]
default: "present"
type: str
credential:
description:
- Name of the credential to use for the job template.
- Deprecated, use 'credentials'.
type: str
description:
description:
- Description to use for the job template.
type: str
organization:
description:
- TODO
type: str
extends_documentation_fragment: awx.awx.auth
'''
EXAMPLES = '''
- name: Add EE to Tower
tower_execution_environment:
image: quay.io/awx/ee
'''
from ..module_utils.tower_api import TowerAPIModule
import json
def main():
# Any additional arguments that are not fields of the item can be added here
argument_spec = dict(
image=dict(required=True),
)
# Create a module for ourselves
module = TowerAPIModule(argument_spec=argument_spec)
# Extract our parameters
image = module.params.get('image')
state = module.params.get('state')
existing_item = module.get_one('execution_environments', name_or_id=image)
if state == 'absent':
module.delete_if_needed(image)
module.create_or_update_if_needed(existing_item, image, endpoint='execution_environments', item_type='execution_environment')
if __name__ == '__main__':
main()

View File

@ -73,6 +73,10 @@ options:
description:
- Credential to use for the source.
type: str
execution_environment:
description:
- Execution Environment to use for the source.
type: str
overwrite:
description:
- Delete child groups and hosts not found in source.

View File

@ -60,6 +60,10 @@ options:
description:
- Path to the playbook to use for the job template within the project provided.
type: str
execution_environment:
description:
- Execution Environment to use for the JT.
type: str
credential:
description:
- Name of the credential to use for the job template.

View File

@ -36,6 +36,10 @@ options:
- Local absolute file path containing a custom Python virtualenv to use.
type: str
default: ''
default_environment:
description:
- Default Execution Environment to use for the Organization.
type: str
max_hosts:
description:
- The max hosts allowed in this organizations

View File

@ -31,6 +31,10 @@ options:
description:
- Description to use for the project.
type: str
execution_environment:
description:
- Execution Environment to use for the project.
type: str
scm_type:
description:
- Type of SCM resource.

View File

@ -40,6 +40,10 @@ options:
description:
- Variables which will be made available to jobs ran inside the workflow.
type: dict
execution_environment:
description:
- Execution Environment to use for the WFJT.
type: str
organization:
description:
- Organization the workflow job template exists in.

View File

@ -138,6 +138,7 @@ def determine_state(module_id, endpoint, module, parameter, api_option, module_o
if not api_option and module_option and module_option.get('type', 'str') == 'list':
return "OK, Field appears to be relation"
# TODO, at some point try and check the object model to confirm its actually a relation
return cause_error('Failed, option mismatch')
# We made it through all of the checks so we are ok