From 0e2786d1f19f41d3d42a20e1b140fba904be5586 Mon Sep 17 00:00:00 2001 From: Jim Ladd Date: Mon, 17 Feb 2020 21:39:29 -0800 Subject: [PATCH] compat layer for foreman --- awx/main/models/inventory.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index 022d9a409c..41373b2cb8 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -2594,7 +2594,7 @@ class rhv(PluginFileInjector): class satellite6(PluginFileInjector): plugin_name = 'foreman' ini_env_reference = 'FOREMAN_INI_PATH' - initial_version = 2.10 + initial_version = '2.10' # No base injector, because this does not work in playbooks. Bug?? namespace = 'theforeman' collection = 'foreman' @@ -2666,6 +2666,37 @@ class satellite6(PluginFileInjector): ret['FOREMAN_PASSWORD'] = credential.get_input('password', default='') return ret + def inventory_as_dict(self, inventory_update, private_data_dir): + ret = super(satellite6, self).inventory_as_dict(inventory_update, private_data_dir) + + # Compatibility content + group_by_hostvar = { + "environment": {"prefix": "foreman_environment_", + "separator": "", + "key": "foreman['environment_name'] | lower | regex_replace(' ', '') | " + "regex_replace('[^A-Za-z0-9\_]', '_') | regex_replace('none', '')"}, # NOQA: W605 + "location": {"prefix": "foreman_location_", + "separator": "", + "key": "foreman['location_name'] | lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9\_]', '_')"}, + "organization": {"prefix": "foreman_organization_", + "separator": "", + "key": "foreman['organization_name'] | lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9\_]', '_')"}, + "lifecycle_environment": {"prefix": "foreman_lifecycle_environment_", + "separator": "", + "key": "foreman['content_facet_attributes']['lifecycle_environment_name'] | " + "lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9\_]', '_')"}, + "content_view": {"prefix": "foreman_content_view_", + "separator": "", + "key": "foreman['content_facet_attributes']['content_view_name'] | " + "lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9\_]', '_')"} + } + ret['keyed_groups'] = [group_by_hostvar[grouping_name] for grouping_name in group_by_hostvar] + ret['legacy_hostvars'] = True + ret['want_facts'] = True + ret['want_params'] = True + + return ret + class cloudforms(PluginFileInjector): # plugin_name = 'FIXME' # contribute inventory plugin to Ansible