mirror of
https://github.com/ansible/awx.git
synced 2026-02-01 09:38:10 -03:30
Update awx_collection to support ReceptorAddress
- Add receptor_address module which allows users to create addresses for instances - Update awx_collection functional and integration tests to support new peering design Signed-off-by: Seth Foster <fosterbseth@gmail.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user