diff --git a/awx/main/migrations/0167_project_signature_validation_credential.py b/awx/main/migrations/0167_project_signature_validation_credential.py index e8e3c6a92a..2dd96aca8b 100644 --- a/awx/main/migrations/0167_project_signature_validation_credential.py +++ b/awx/main/migrations/0167_project_signature_validation_credential.py @@ -4,6 +4,14 @@ from django.db import migrations, models import django.db.models.deletion from django.utils.translation import gettext_lazy as _ +from awx.main.models import CredentialType +from awx.main.utils.common import set_current_apps + + +def setup_tower_managed_defaults(apps, schema_editor): + set_current_apps(apps) + CredentialType.setup_tower_managed_defaults(apps) + class Migration(migrations.Migration): @@ -25,4 +33,5 @@ class Migration(migrations.Migration): help_text=_('An optional credential used for validating files in the project against unexpected changes.'), ), ), + migrations.RunPython(setup_tower_managed_defaults), ] diff --git a/awx/main/models/credential/__init__.py b/awx/main/models/credential/__init__.py index 53f6ffaa1f..6f132a0deb 100644 --- a/awx/main/models/credential/__init__.py +++ b/awx/main/models/credential/__init__.py @@ -1171,6 +1171,25 @@ ManagedCredentialType( }, ) +ManagedCredentialType( + namespace='gpg_public_key', + kind='cryptography', + name=gettext_noop('GPG Public Key'), + inputs={ + 'fields': [ + { + 'id': 'gpg_public_key', + 'label': gettext_noop('GPG Public Key'), + 'type': 'string', + 'secret': True, + 'multiline': True, + 'help_text': gettext_noop('GPG Public Key used to validate content signatures.'), + }, + ], + 'required': ['gpg_public_key'], + }, +) + class CredentialInputSource(PrimordialModel): class Meta: diff --git a/awx/main/tests/functional/test_credential.py b/awx/main/tests/functional/test_credential.py index ae5d99730f..d2937412da 100644 --- a/awx/main/tests/functional/test_credential.py +++ b/awx/main/tests/functional/test_credential.py @@ -74,34 +74,37 @@ GLqbpJyX2r3p/Rmo6mLY71SqpA== @pytest.mark.django_db def test_default_cred_types(): - assert sorted(CredentialType.defaults.keys()) == [ - 'aim', - 'aws', - 'azure_kv', - 'azure_rm', - 'centrify_vault_kv', - 'conjur', - 'controller', - 'galaxy_api_token', - 'gce', - 'github_token', - 'gitlab_token', - 'hashivault_kv', - 'hashivault_ssh', - 'insights', - 'kubernetes_bearer_token', - 'net', - 'openstack', - 'registry', - 'rhv', - 'satellite6', - 'scm', - 'ssh', - 'thycotic_dsv', - 'thycotic_tss', - 'vault', - 'vmware', - ] + assert sorted(CredentialType.defaults.keys()) == sorted( + [ + 'aim', + 'aws', + 'azure_kv', + 'azure_rm', + 'centrify_vault_kv', + 'conjur', + 'controller', + 'galaxy_api_token', + 'gce', + 'github_token', + 'gitlab_token', + 'gpg_public_key', + 'hashivault_kv', + 'hashivault_ssh', + 'insights', + 'kubernetes_bearer_token', + 'net', + 'openstack', + 'registry', + 'rhv', + 'satellite6', + 'scm', + 'ssh', + 'thycotic_dsv', + 'thycotic_tss', + 'vault', + 'vmware', + ] + ) for type_ in CredentialType.defaults.values(): assert type_().managed is True