mirror of
https://github.com/ansible/awx.git
synced 2026-01-09 23:12:08 -03:30
Address Lookup Plugins AttributeError (#15770)
* fix backend attribute error * managedcredential may now contain 2 different classes * managedcredentialType and one that represents a lookup plugin * conditionalize creation params * added a conditional statement to filter our external types * all external credentials are managed by awx/aap
This commit is contained in:
parent
d36cd6c6ab
commit
c6930bdf32
@ -438,11 +438,15 @@ class CredentialType(CommonModelNameNotUnique):
|
||||
@classmethod
|
||||
def from_db(cls, db, field_names, values):
|
||||
instance = super(CredentialType, cls).from_db(db, field_names, values)
|
||||
if instance.managed and instance.namespace:
|
||||
if instance.managed and instance.namespace and instance.kind != "external":
|
||||
native = ManagedCredentialType.registry[instance.namespace]
|
||||
instance.inputs = native.inputs
|
||||
instance.injectors = native.injectors
|
||||
instance.custom_injectors = getattr(native, 'custom_injectors', None)
|
||||
elif instance.namespace and instance.kind == "external":
|
||||
native = ManagedCredentialType.registry[instance.namespace]
|
||||
instance.inputs = native.inputs
|
||||
|
||||
return instance
|
||||
|
||||
def get_absolute_url(self, request=None):
|
||||
@ -544,7 +548,7 @@ class CredentialType(CommonModelNameNotUnique):
|
||||
@classmethod
|
||||
def load_plugin(cls, ns, plugin):
|
||||
# TODO: User "side-loaded" credential custom_injectors isn't supported
|
||||
ManagedCredentialType.registry[ns] = ManagedCredentialType(namespace=ns, name=plugin.name, kind='external', inputs=plugin.inputs, injectors={})
|
||||
ManagedCredentialType.registry[ns] = SimpleNamespace(namespace=ns, name=plugin.name, kind='external', inputs=plugin.inputs, backend=plugin.backend)
|
||||
|
||||
def inject_credential(self, credential, env, safe_env, args, private_data_dir):
|
||||
from awx_plugins.interfaces._temporary_private_inject_api import inject_credential
|
||||
@ -555,6 +559,8 @@ class CredentialType(CommonModelNameNotUnique):
|
||||
class CredentialTypeHelper:
|
||||
@classmethod
|
||||
def get_creation_params(cls, cred_type):
|
||||
if cred_type.kind == 'external':
|
||||
return dict(namespace=cred_type.namespace, kind=cred_type.kind, name=cred_type.name, managed=True)
|
||||
return dict(
|
||||
namespace=cred_type.namespace,
|
||||
kind=cred_type.kind,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user