From 1b0bca82293ec6f82d148e6b327a17449aa037aa Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Wed, 13 Dec 2017 14:28:04 -0500 Subject: [PATCH] add back in support of towervars lost in merge --- awx/api/views.py | 3 ++- awx/main/models/inventory.py | 6 ++++- .../tests/functional/models/test_inventory.py | 22 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/awx/api/views.py b/awx/api/views.py index 42e38c410a..a6067d3268 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -2443,7 +2443,8 @@ class InventoryScriptView(RetrieveAPIView): host = get_object_or_404(obj.hosts, **hosts_q) return Response(host.variables_dict) return Response(obj.get_script_data( - hostvars=bool(request.query_params.get('hostvars', '')), + hostvars=hostvars, + towervars=towervars, show_all=show_all )) diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index 1b04548757..5f136ee5b2 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -209,7 +209,7 @@ class Inventory(CommonModelNameNotUnique, ResourceMixin): group_children.add(from_group_id) return group_children_map - def get_script_data(self, hostvars=False, show_all=False): + def get_script_data(self, hostvars=False, towervars=False, show_all=False): if show_all: hosts_q = dict() else: @@ -271,6 +271,10 @@ class Inventory(CommonModelNameNotUnique, ResourceMixin): data['_meta'].setdefault('hostvars', dict()) for host in self.hosts.filter(**hosts_q): data['_meta']['hostvars'][host.name] = host.variables_dict + if towervars: + tower_dict = dict(remote_tower_enabled=str(host.enabled).lower(), + remote_tower_id=host.id) + data['_meta']['hostvars'][host.name].update(tower_dict) return data diff --git a/awx/main/tests/functional/models/test_inventory.py b/awx/main/tests/functional/models/test_inventory.py index 85d07c1ce0..35c5a63d4f 100644 --- a/awx/main/tests/functional/models/test_inventory.py +++ b/awx/main/tests/functional/models/test_inventory.py @@ -13,6 +13,28 @@ from awx.main.models import ( from awx.main.utils.filters import SmartFilter +@pytest.mark.django_db +class TestInventoryScript: + + def test_hostvars(self, inventory): + inventory.hosts.create(name='ahost', variables={"foo": "bar"}) + assert inventory.get_script_data( + hostvars=True + )['_meta']['hostvars']['ahost'] == { + 'foo': 'bar' + } + + def test_towervars(self, inventory): + host = inventory.hosts.create(name='ahost') + assert inventory.get_script_data( + hostvars=True, + towervars=True + )['_meta']['hostvars']['ahost'] == { + 'remote_tower_enabled': 'true', + 'remote_tower_id': host.id + } + + @pytest.mark.django_db class TestSCMUpdateFeatures: