diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index ac6ab5acc0..04895217b3 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -2320,8 +2320,12 @@ class vmware(PluginFileInjector): host_filters = vmware_opts.get('host_filters') if host_filters: - pass - # ret['resources'] = host_filters.split(',') # does not follow same pattern + ret.setdefault('host_filters', []) + for hf in host_filters.split(','): + striped_hf = hf.replace('{', '').replace('}', '').strip() # make best effort + if not striped_hf: + continue + ret['host_filters'].append(striped_hf) groupby_patterns = vmware_opts.get('groupby_patterns') if groupby_patterns: diff --git a/awx/main/tests/data/inventory/plugins/vmware/files/vmware_vm_inventory.yml b/awx/main/tests/data/inventory/plugins/vmware/files/vmware_vm_inventory.yml index feb2150190..3bc5269dd8 100644 --- a/awx/main/tests/data/inventory/plugins/vmware/files/vmware_vm_inventory.yml +++ b/awx/main/tests/data/inventory/plugins/vmware/files/vmware_vm_inventory.yml @@ -1,3 +1,6 @@ +host_filters: +- config.name == "only_my_server" +- somevar == "bar" keyed_groups: - key: fouo prefix: '' diff --git a/awx/main/tests/data/inventory/scripts/vmware/files/file_reference b/awx/main/tests/data/inventory/scripts/vmware/files/file_reference index 8a4d8a7700..5282c2db71 100644 --- a/awx/main/tests/data/inventory/scripts/vmware/files/file_reference +++ b/awx/main/tests/data/inventory/scripts/vmware/files/file_reference @@ -5,6 +5,6 @@ username = fooo password = fooo server = https://foo.invalid base_source_var = value_of_var -host_filters = foobaa +host_filters = {{ config.name == "only_my_server" }},{{ somevar == "bar"}} groupby_patterns = fouo diff --git a/awx/main/tests/functional/test_inventory_source_injectors.py b/awx/main/tests/functional/test_inventory_source_injectors.py index 2557b158d6..e776753274 100644 --- a/awx/main/tests/functional/test_inventory_source_injectors.py +++ b/awx/main/tests/functional/test_inventory_source_injectors.py @@ -16,7 +16,7 @@ DATA = os.path.join(os.path.dirname(data.__file__), 'inventory') TEST_SOURCE_FIELDS = { 'vmware': { - 'instance_filters': 'foobaa', + 'instance_filters': '{{ config.name == "only_my_server" }},{{ somevar == "bar"}}', 'group_by': 'fouo' }, 'ec2': {