From 52095595c35a10806ba62d9526f586ceaba795dd Mon Sep 17 00:00:00 2001 From: Sviatoslav Sydorenko Date: Tue, 22 Oct 2024 19:14:30 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=93=A6=20Discover=20injectors=20throu?= =?UTF-8?q?gh=20entrypoints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch eliminates import-based injector discovery, switching to distribution package-indepdendent hosting of the respective callables. --- pyproject.toml | 10 ++++++++++ src/awx_plugins/inventory/plugins.py | 20 ++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) 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, From 3e25834ccd54061d2cd881e6ffd2c11ae86dd01c Mon Sep 17 00:00:00 2001 From: Sviatoslav Sydorenko Date: Tue, 22 Oct 2024 19:15:51 +0200 Subject: [PATCH 2/2] Temporarily depend on the WIP branches of the deps TODO: Revert this commit before merging! --- dependencies/direct/py-constraints.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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