diff --git a/awx/main/migrations/0010_saved_launchtime_configs.py b/awx/main/migrations/0010_saved_launchtime_configs.py index 196c710ee7..529e466d3e 100644 --- a/awx/main/migrations/0010_saved_launchtime_configs.py +++ b/awx/main/migrations/0010_saved_launchtime_configs.py @@ -6,7 +6,7 @@ import django.db.models.deletion import awx.main.fields from awx.main.migrations import _migration_utils as migration_utils -from awx.main.migrations._workflow_credential import migrate_workflow_cred +from awx.main.migrations._multi_cred import migrate_workflow_cred, migrate_workflow_cred_reverse class Migration(migrations.Migration): @@ -67,8 +67,8 @@ class Migration(migrations.Migration): field=awx.main.fields.JSONField(default={}, editable=False, blank=True), ), # Run data migration before removing the old credential field - migrations.RunPython(migration_utils.set_current_apps_for_migrations, lambda x, y: None), - migrations.RunPython(migrate_workflow_cred, lambda x, y: None), + migrations.RunPython(migration_utils.set_current_apps_for_migrations, migrations.RunPython.noop), + migrations.RunPython(migrate_workflow_cred, migrate_workflow_cred_reverse), migrations.RemoveField( model_name='workflowjobnode', name='credential', diff --git a/awx/main/migrations/_multi_cred.py b/awx/main/migrations/_multi_cred.py index c7c8252870..dd363e8685 100644 --- a/awx/main/migrations/_multi_cred.py +++ b/awx/main/migrations/_multi_cred.py @@ -10,3 +10,25 @@ def migrate_to_multi_cred(app, schema_editor): j.credentials.add(j.vault_credential) for cred in j.extra_credentials.all(): j.credentials.add(cred) + + +def migrate_workflow_cred(app, schema_editor): + WorkflowJobTemplateNode = app.get_model('main', 'WorkflowJobTemplateNode') + WorkflowJobNode = app.get_model('main', 'WorkflowJobNode') + + for cls in (WorkflowJobNode, WorkflowJobTemplateNode): + for node in cls.objects.iterator(): + if node.credential: + node.credentials.add(j.credential) + + +def migrate_workflow_cred_reverse(app, schema_editor): + WorkflowJobTemplateNode = app.get_model('main', 'WorkflowJobTemplateNode') + WorkflowJobNode = app.get_model('main', 'WorkflowJobNode') + + for cls in (WorkflowJobNode, WorkflowJobTemplateNode): + for node in cls.objects.iterator(): + cred = node.credentials.first() + if cred: + node.credential = cred + node.save() diff --git a/awx/main/migrations/_workflow_credential.py b/awx/main/migrations/_workflow_credential.py deleted file mode 100644 index 0da68148ea..0000000000 --- a/awx/main/migrations/_workflow_credential.py +++ /dev/null @@ -1,8 +0,0 @@ -def migrate_workflow_cred(app, schema_editor): - WorkflowJobTemplateNode = app.get_model('main', 'WorkflowJobTemplateNode') - WorkflowJobNode = app.get_model('main', 'WorkflowJobNode') - - for cls in (WorkflowJobNode, WorkflowJobTemplateNode): - for j in cls.objects.iterator(): - if j.credential: - j.credentials.add(j.credential) \ No newline at end of file