From d282966aa19e08307936477ec33fafa7c078c1c3 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Thu, 26 Oct 2017 11:11:48 -0400 Subject: [PATCH] Use towervars to enable turning on remote tracking vars on Tower src * This allows the local Tower to track enabled state and unique instance id for each host imported from the remote Tower --- awx/api/views.py | 5 +++++ awx/plugins/inventory/tower.py | 2 +- awx/settings/defaults.py | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/awx/api/views.py b/awx/api/views.py index 058ab57082..a7bc27a927 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -2377,6 +2377,7 @@ class InventoryScriptView(RetrieveAPIView): obj = self.get_object() hostname = request.query_params.get('host', '') hostvars = bool(request.query_params.get('hostvars', '')) + towervars = bool(request.query_params.get('towervars', '')) show_all = bool(request.query_params.get('all', '')) if show_all: hosts_q = dict() @@ -2441,6 +2442,10 @@ class InventoryScriptView(RetrieveAPIView): data['_meta'].setdefault('hostvars', dict()) for host in obj.hosts.filter(**hosts_q): data['_meta']['hostvars'][host.name] = host.variables_dict + if towervars: + tower_dict = dict(remote_tower_enabled=host.enabled, + remote_tower_id=host.id) + data['_meta']['hostvars'][host.name].update(tower_dict) return Response(data) diff --git a/awx/plugins/inventory/tower.py b/awx/plugins/inventory/tower.py index 077aa556f9..0fae0865b2 100755 --- a/awx/plugins/inventory/tower.py +++ b/awx/plugins/inventory/tower.py @@ -80,7 +80,7 @@ def parse_configuration(): def read_tower_inventory(tower_host, tower_user, tower_pass, inventory, ignore_ssl=False): if not re.match('(?:http|https)://', tower_host): tower_host = "https://{}".format(tower_host) - inventory_url = urljoin(tower_host, "/api/v2/inventories/{}/script/?hostvars=1".format(inventory)) + inventory_url = urljoin(tower_host, "/api/v2/inventories/{}/script/?hostvars=1&towervars=1".format(inventory)) try: response = requests.get(inventory_url, auth=HTTPBasicAuth(tower_user, tower_pass), diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index 1255e9d21d..d6c1b1140e 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -835,12 +835,12 @@ OVIRT4_INSTANCE_ID_VAR = 'id' # --------------------- # ----- Tower ----- # --------------------- -TOWER_ENABLED_VAR = 'status' -TOWER_ENABLED_VALUE = 'enabled' +TOWER_ENABLED_VAR = 'remote_tower_enabled' +TOWER_ENABLED_VALUE = 'true' TOWER_GROUP_FILTER = r'^.+$' TOWER_HOST_FILTER = r'^.+$' TOWER_EXCLUDE_EMPTY_GROUPS = True -TOWER_INSTANCE_ID_VAR = 'id' +TOWER_INSTANCE_ID_VAR = 'remote_tower_id' # --------------------- # ----- Foreman -----