From 3d027bafd0ad1f5faeafe1d76ed7f006275ea347 Mon Sep 17 00:00:00 2001 From: Alan Rominger Date: Wed, 11 Jun 2025 16:26:42 -0400 Subject: [PATCH] AAP-44233 Create credential types in new migration step (#6969) * Update database to credential types in new migration file * bump migration * Add assertion * Pre-delete credentials so we test recreation --- .../migrations/0201_create_managed_creds.py | 20 +++++++++++++++++++ awx/main/tests/functional/test_migrations.py | 19 ++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 awx/main/migrations/0201_create_managed_creds.py diff --git a/awx/main/migrations/0201_create_managed_creds.py b/awx/main/migrations/0201_create_managed_creds.py new file mode 100644 index 0000000000..310eabfc4c --- /dev/null +++ b/awx/main/migrations/0201_create_managed_creds.py @@ -0,0 +1,20 @@ +from django.db import migrations + +# AWX +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): + dependencies = [ + ('main', '0200_template_name_constraint'), + ] + + operations = [ + migrations.RunPython(setup_tower_managed_defaults), + ] diff --git a/awx/main/tests/functional/test_migrations.py b/awx/main/tests/functional/test_migrations.py index e181a6f496..fd17f1db08 100644 --- a/awx/main/tests/functional/test_migrations.py +++ b/awx/main/tests/functional/test_migrations.py @@ -140,3 +140,22 @@ class TestMigrationSmoke: Project = new_state.apps.get_model('main', 'Project') for proj in Project.objects.all(): assert proj.org_unique is True + + # Piggyback test for the new credential types + validate_exists = ['GitHub App Installation Access Token Lookup', 'Terraform backend configuration'] + CredentialType = new_state.apps.get_model('main', 'CredentialType') + # simulate an upgrade by deleting existing types with these names + for expected_name in validate_exists: + ct = CredentialType.objects.filter(name=expected_name).first() + if ct: + ct.delete() + + new_state = migrator.apply_tested_migration( + ('main', '0201_create_managed_creds'), + ) + + CredentialType = new_state.apps.get_model('main', 'CredentialType') + for expected_name in validate_exists: + assert CredentialType.objects.filter( + name=expected_name + ).exists(), f'Could not find {expected_name} credential type name, all names: {list(CredentialType.objects.values_list("name", flat=True))}'