From 46227f14a19460ed8772569de4fa2d8a0993141f Mon Sep 17 00:00:00 2001 From: Oleksii Baranov Date: Thu, 16 Mar 2023 16:38:17 +0100 Subject: [PATCH] Add logging and reduce migration to one operation --- .../0177_change_cyberark_plugin_names.py | 31 ------------------- .../0179_change_cyberark_plugin_names.py | 18 +++++++++++ awx/main/migrations/_credentialtypes.py | 14 +++++++++ 3 files changed, 32 insertions(+), 31 deletions(-) delete mode 100644 awx/main/migrations/0177_change_cyberark_plugin_names.py create mode 100644 awx/main/migrations/0179_change_cyberark_plugin_names.py diff --git a/awx/main/migrations/0177_change_cyberark_plugin_names.py b/awx/main/migrations/0177_change_cyberark_plugin_names.py deleted file mode 100644 index 4a6c0452e8..0000000000 --- a/awx/main/migrations/0177_change_cyberark_plugin_names.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 3.2.16 on 2023-03-14 18:25 - -from django.db import migrations - -from awx.main.models import CredentialType - - -class Migration(migrations.Migration): - def update_cyberark_ccp_name(apps, schema_editor): - CredentialType.setup_tower_managed_defaults(apps) - aim_types = apps.get_model('main', 'CredentialType').objects.filter(namespace='aim').order_by('id') - - if aim_types.count() == 2: - original, renamed = aim_types.all() - apps.get_model('main', 'Credential').objects.filter(credential_type_id=original.id).update(credential_type_id=renamed.id) - original.delete() - - def update_cyberark_conjur_name(apps, schema_editor): - CredentialType.setup_tower_managed_defaults(apps) - conjur_types = apps.get_model('main', 'CredentialType').objects.filter(namespace='conjur').order_by('id') - - if conjur_types.count() == 2: - original, renamed = conjur_types.all() - apps.get_model('main', 'Credential').objects.filter(credential_type_id=original.id).update(credential_type_id=renamed.id) - original.delete() - - dependencies = [ - ('main', '0176_inventorysource_scm_branch'), - ] - - operations = [migrations.RunPython(update_cyberark_ccp_name), migrations.RunPython(update_cyberark_conjur_name)] diff --git a/awx/main/migrations/0179_change_cyberark_plugin_names.py b/awx/main/migrations/0179_change_cyberark_plugin_names.py new file mode 100644 index 0000000000..077f0d5efc --- /dev/null +++ b/awx/main/migrations/0179_change_cyberark_plugin_names.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.16 on 2023-03-16 15:16 +from django.db import migrations + +from awx.main.migrations._credentialtypes import migrate_credential_type +from awx.main.models import CredentialType + + +class Migration(migrations.Migration): + def update_cyberark_plugin_names(apps, schema_editor): + CredentialType.setup_tower_managed_defaults(apps) + migrate_credential_type(apps, 'aim') + migrate_credential_type(apps, 'conjur') + + dependencies = [ + ('main', '0178_instance_group_admin_migration'), + ] + + operations = [migrations.RunPython(update_cyberark_plugin_names)] diff --git a/awx/main/migrations/_credentialtypes.py b/awx/main/migrations/_credentialtypes.py index 75a825b239..64fa756772 100644 --- a/awx/main/migrations/_credentialtypes.py +++ b/awx/main/migrations/_credentialtypes.py @@ -1,6 +1,9 @@ +import logging + from awx.main.models import CredentialType from django.db.models import Q +logger = logging.getLogger('awx.main.migrations') DEPRECATED_CRED_KIND = { 'rax': { @@ -76,3 +79,14 @@ def add_tower_verify_field(apps, schema_editor): def remove_become_methods(apps, schema_editor): # this is no longer necessary; schemas are defined in code pass + + +def migrate_credential_type(apps, namespace): + ns_types = apps.get_model('main', 'CredentialType').objects.filter(namespace=namespace).order_by('created') + if ns_types.count() == 2: + original, renamed = ns_types.all() + logger.info(f'There are credential types to migrate in the "{namespace}" namespace: {original.name}') + apps.get_model('main', 'Credential').objects.filter(credential_type_id=original.id).update(credential_type_id=renamed.id) + + logger.info(f'Removing old credential type: {renamed.name}') + original.delete()