diff --git a/awx/main/constants.py b/awx/main/constants.py index 5610dde101ec..7a93481f6f3e 100644 --- a/awx/main/constants.py +++ b/awx/main/constants.py @@ -14,7 +14,25 @@ 'STANDARD_INVENTORY_UPDATE_ENV', ] -CLOUD_PROVIDERS = ('azure_rm', 'ec2', 'gce', 'vmware', 'openstack', 'rhv', 'satellite6', 'controller', 'insights', 'terraform', 'openshift_virtualization') +CLOUD_PROVIDERS = ( + 'azure_rm', + 'ec2', + 'gce', + 'vmware', + 'openstack', + 'rhv', + 'satellite6', + 'controller', + 'insights', + 'terraform', + 'openshift_virtualization', + 'controller_supported', + 'rhv_supported', + 'openshift_virtualization_supported', + 'insights_supported', + 'satellite6_supported', +) + PRIVILEGE_ESCALATION_METHODS = [ ('sudo', _('Sudo')), ('su', _('Su')), diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index 15f8b1562533..fd0796ad25f3 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -1062,7 +1062,10 @@ def get_cloud_credential(self): credential = None for cred in self.credentials.all(): if self.source in CLOUD_PROVIDERS: - if cred.kind == self.source.replace('ec2', 'aws'): + source = self.source.replace('ec2', 'aws') + if source.endswith('_supported'): + source = source[:-10] + if cred.kind == source: credential = cred break else: diff --git a/awx/main/tests/functional/test_inventory_source_injectors.py b/awx/main/tests/functional/test_inventory_source_injectors.py index 6c93717b76b5..35e74f820d2d 100644 --- a/awx/main/tests/functional/test_inventory_source_injectors.py +++ b/awx/main/tests/functional/test_inventory_source_injectors.py @@ -49,6 +49,7 @@ def credential_kind(source): """Given the inventory source kind, return expected credential kind""" if source == 'openshift_virtualization': return 'kubernetes_bearer_token' + return source.replace('ec2', 'aws') @@ -194,6 +195,9 @@ def create_reference_data(source_dir, env, content): @pytest.mark.django_db @pytest.mark.parametrize('this_kind', CLOUD_PROVIDERS) def test_inventory_update_injected_content(this_kind, inventory, fake_credential_factory, mock_me): + if this_kind.endswith('_supported'): + this_kind = this_kind[:-10] + ExecutionEnvironment.objects.create(name='Control Plane EE', managed=True) ExecutionEnvironment.objects.create(name='Default Job EE', managed=False)