mirror of
https://github.com/ansible/awx.git
synced 2026-03-02 17:28:51 -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:
@@ -438,11 +438,15 @@ class CredentialType(CommonModelNameNotUnique):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def from_db(cls, db, field_names, values):
|
def from_db(cls, db, field_names, values):
|
||||||
instance = super(CredentialType, cls).from_db(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]
|
native = ManagedCredentialType.registry[instance.namespace]
|
||||||
instance.inputs = native.inputs
|
instance.inputs = native.inputs
|
||||||
instance.injectors = native.injectors
|
instance.injectors = native.injectors
|
||||||
instance.custom_injectors = getattr(native, 'custom_injectors', None)
|
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
|
return instance
|
||||||
|
|
||||||
def get_absolute_url(self, request=None):
|
def get_absolute_url(self, request=None):
|
||||||
@@ -544,7 +548,7 @@ class CredentialType(CommonModelNameNotUnique):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def load_plugin(cls, ns, plugin):
|
def load_plugin(cls, ns, plugin):
|
||||||
# TODO: User "side-loaded" credential custom_injectors isn't supported
|
# 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):
|
def inject_credential(self, credential, env, safe_env, args, private_data_dir):
|
||||||
from awx_plugins.interfaces._temporary_private_inject_api import inject_credential
|
from awx_plugins.interfaces._temporary_private_inject_api import inject_credential
|
||||||
@@ -555,6 +559,8 @@ class CredentialType(CommonModelNameNotUnique):
|
|||||||
class CredentialTypeHelper:
|
class CredentialTypeHelper:
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_creation_params(cls, cred_type):
|
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(
|
return dict(
|
||||||
namespace=cred_type.namespace,
|
namespace=cred_type.namespace,
|
||||||
kind=cred_type.kind,
|
kind=cred_type.kind,
|
||||||
|
|||||||
Reference in New Issue
Block a user