diff options
Diffstat (limited to 'awx_collection/plugins/modules/instance.py')
-rw-r--r-- | awx_collection/plugins/modules/instance.py | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/awx_collection/plugins/modules/instance.py b/awx_collection/plugins/modules/instance.py index 54866fb731..c29246ae31 100644 --- a/awx_collection/plugins/modules/instance.py +++ b/awx_collection/plugins/modules/instance.py @@ -58,23 +58,15 @@ options: - installed required: False type: str - listener_port: - description: - - Port that Receptor will listen for incoming connections on. - required: False - type: int peers: description: - List of peers to connect outbound to. Only configurable for hop and execution nodes. - To remove all current peers, set value to an empty list, []. + - Each item is an ID or address of a receptor address. + - If item is address, it must be unique across all receptor addresses. required: False type: list elements: str - peers_from_control_nodes: - description: - - If enabled, control plane nodes will automatically peer to this node. - required: False - type: bool extends_documentation_fragment: awx.awx.auth ''' @@ -83,12 +75,24 @@ EXAMPLES = ''' awx.awx.instance: hostname: my-instance.prod.example.com capacity_adjustment: 0.4 - listener_port: 31337 - name: Deprovision the instance awx.awx.instance: hostname: my-instance.prod.example.com node_state: deprovisioning + +- name: Create execution node + awx.awx.instance: + hostname: execution.example.com + node_type: execution + peers: + - 12 + - route.to.hop.example.com + +- name: Remove peers + awx.awx.instance: + hostname: execution.example.com + peers: ''' from ..module_utils.controller_api import ControllerAPIModule @@ -103,9 +107,7 @@ def main(): managed_by_policy=dict(type='bool'), node_type=dict(type='str', choices=['execution', 'hop']), node_state=dict(type='str', choices=['deprovisioning', 'installed']), - listener_port=dict(type='int'), peers=dict(required=False, type='list', elements='str'), - peers_from_control_nodes=dict(required=False, type='bool'), ) # Create a module for ourselves @@ -118,12 +120,21 @@ def main(): managed_by_policy = module.params.get('managed_by_policy') node_type = module.params.get('node_type') node_state = module.params.get('node_state') - listener_port = module.params.get('listener_port') peers = module.params.get('peers') - peers_from_control_nodes = module.params.get('peers_from_control_nodes') # Attempt to look up an existing item based on the provided data existing_item = module.get_one('instances', name_or_id=hostname) + # peer item can be an id or address + # if address, get the id + peers_ids = [] + if peers: + for p in peers: + if not p.isdigit(): + p_id = module.get_one('receptor_addresses', allow_none=False, data={'address': p}) + peers_ids.append(p_id['id']) + else: + peers_ids.append(p) + # Create the data that gets sent for create and update new_fields = {'hostname': hostname} if capacity_adjustment is not None: @@ -136,12 +147,8 @@ def main(): new_fields['node_type'] = node_type if node_state is not None: new_fields['node_state'] = node_state - if listener_port is not None: - new_fields['listener_port'] = listener_port if peers is not None: - new_fields['peers'] = peers - if peers_from_control_nodes is not None: - new_fields['peers_from_control_nodes'] = peers_from_control_nodes + new_fields['peers'] = peers_ids module.create_or_update_if_needed( existing_item, |