diff --git a/dependencies/direct/py-constraints.in b/dependencies/direct/py-constraints.in index fc6f4e3bb1..7527327b1a 100644 --- a/dependencies/direct/py-constraints.in +++ b/dependencies/direct/py-constraints.in @@ -14,4 +14,4 @@ # # ############################################################################### -awx_plugins.interfaces @ git+https://github.com/ansible/awx_plugins.interfaces.git +awx_plugins.interfaces @ git+https://github.com/webknjaz/ansible--awx_plugins.interfaces.git@features/inventory-entry-points diff --git a/pyproject.toml b/pyproject.toml index bdbdf64e1b..bbaeda3afd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -84,6 +84,16 @@ thycotic_dsv = "awx_plugins.credentials.dsv:dsv_plugin" thycotic_tss = "awx_plugins.credentials.tss:tss_plugin" aws_secretsmanager_credential = "awx_plugins.credentials.aws_secretsmanager:aws_secretmanager_plugin" +[project.entry-points."awx_plugins.injector"] +aws = "awx_plugins.credential.injectors:aws" +azure_rm = "awx_plugins.credential.injectors:azure_rm" +ec2 = "awx_plugins.credential.injectors:aws" +gce = "awx_plugins.credential.injectors:gce" +kubernetes_bearer_token = "awx_plugins.credential.injectors:kubernetes_bearer_token" +openstack = "awx_plugins.credential.injectors:openstack" +terraform = "awx_plugins.credential.injectors:terraform" +vmware = "awx_plugins.credential.injectors:vmware" + [project.entry-points."awx_plugins.inventory"] # new entry points group name azure-rm = "awx_plugins.inventory.plugins:azure_rm" ec2 = "awx_plugins.inventory.plugins:ec2" diff --git a/src/awx_plugins/inventory/plugins.py b/src/awx_plugins/inventory/plugins.py index 752c97a67f..9378da6b2f 100644 --- a/src/awx_plugins/inventory/plugins.py +++ b/src/awx_plugins/inventory/plugins.py @@ -8,6 +8,9 @@ from awx_plugins.interfaces._temporary_private_container_api import ( # noqa: WPS436 get_incontainer_path, ) +from awx_plugins.interfaces._temporary_private_injector_api import ( # noqa: WPS436 + load_injector_callable, +) import yaml @@ -102,15 +105,16 @@ def _get_shared_env( inventory_update.pk, ), # so injector knows this is inventory } + if self.base_injector == 'managed': - from awx_plugins.credentials import injectors as builtin_injectors - - cred_kind = inventory_update.source.replace('ec2', 'aws') - if cred_kind in dir(builtin_injectors): - getattr( - builtin_injectors, - cred_kind, - )( + try: + inject_credential_into_env = load_injector_callable( + inventory_update.source, + ) + except LookupError: + pass # noqa: WPS420 + else: + inject_credential_into_env( credential, injected_env, private_data_dir,