From c22577bc808aea57414b3015b259c3d0ef8dc6fd Mon Sep 17 00:00:00 2001 From: "Christian M. Adams" Date: Tue, 16 Mar 2021 01:16:27 -0400 Subject: [PATCH] Make data migration idempotent --- .../manifests/awx-operator.clusterserviceversion.yaml | 4 ++++ roles/installer/tasks/database_configuration.yml | 2 -- roles/installer/tasks/main.yml | 7 ++----- roles/installer/tasks/migrate_data.yml | 5 ++--- roles/installer/tasks/secret_key_configuration.yml | 2 ++ 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/deploy/olm-catalog/awx-operator/manifests/awx-operator.clusterserviceversion.yaml b/deploy/olm-catalog/awx-operator/manifests/awx-operator.clusterserviceversion.yaml index f4ff94d9..56d98093 100644 --- a/deploy/olm-catalog/awx-operator/manifests/awx-operator.clusterserviceversion.yaml +++ b/deploy/olm-catalog/awx-operator/manifests/awx-operator.clusterserviceversion.yaml @@ -98,6 +98,10 @@ spec: x-descriptors: - urn:alm:descriptor:com.tectonic.ui:advanced - urn:alm:descriptor:io.kubernetes:Secret + path: tower_old_postgres_configuration_secret + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - urn:alm:descriptor:io.kubernetes:Secret - displayName: Secret key secret path: tower_secret_key_secret x-descriptors: diff --git a/roles/installer/tasks/database_configuration.yml b/roles/installer/tasks/database_configuration.yml index 06962381..a2af97c8 100644 --- a/roles/installer/tasks/database_configuration.yml +++ b/roles/installer/tasks/database_configuration.yml @@ -65,10 +65,8 @@ name: '{{ tower_old_postgres_configuration_secret }}' register: old_pg_config when: tower_old_postgres_configuration_secret | length - ignore_errors: true no_log: true - name: Migrate data from old Openshift instance import_tasks: migrate_data.yml when: old_pg_config['resources'][0]['data']['host'] is defined - ignore_errors: true diff --git a/roles/installer/tasks/main.yml b/roles/installer/tasks/main.yml index 22e68471..5e739a10 100644 --- a/roles/installer/tasks/main.yml +++ b/roles/installer/tasks/main.yml @@ -63,10 +63,7 @@ pod: "{{ tower_pod_name }}" container: "{{ meta.name }}-task" command: >- - bash -c "echo 'from django.db import connection; - tbl = \"auth_user\" in connection.introspection.table_names(); - exit(0 if tbl else 1)' - | awx-manage shell" + bash -c "awx-manage showmigrations | grep -v '[X]' | grep '[ ]' | wc -l" ignore_errors: true changed_when: false register: database_check @@ -80,7 +77,7 @@ command: >- bash -c "awx-manage migrate --noinput" register: migrate_result - when: (k8s_defs_result is changed) or (database_check is defined and database_check.return_code != 0) + when: (k8s_defs_result is changed) or (database_check is defined and database_check.stdout != 0) - include_tasks: initialize.yml diff --git a/roles/installer/tasks/migrate_data.yml b/roles/installer/tasks/migrate_data.yml index 119a89ff..55fa3b20 100644 --- a/roles/installer/tasks/migrate_data.yml +++ b/roles/installer/tasks/migrate_data.yml @@ -53,8 +53,7 @@ namespace: "{{ meta.namespace }}" pod: "{{ postgres_pod_name }}" command: >- - bash -c "PGPASSWORD={{ tower_old_postgres_pass }} {{ pgdump }} | PGPASSWORD={{ awx_postgres_pass }} {{ psql_restore }}" + bash -c "PGPASSWORD={{ tower_old_postgres_pass }} {{ pgdump }} | PGPASSWORD={{ awx_postgres_pass }} {{ psql_restore }} && echo 'Finished'" no_log: true - ignore_errors: true register: data_migration - # changed_when: success_condition? + changed_when: false diff --git a/roles/installer/tasks/secret_key_configuration.yml b/roles/installer/tasks/secret_key_configuration.yml index 26b6ea9d..8d27f81f 100644 --- a/roles/installer/tasks/secret_key_configuration.yml +++ b/roles/installer/tasks/secret_key_configuration.yml @@ -6,6 +6,7 @@ name: '{{ tower_secret_key_secret }}' register: _custom_secret_key when: tower_secret_key_secret | length + no_log: true - name: Check for default secret key configuration k8s_info: @@ -17,6 +18,7 @@ - name: Set secret key secret set_fact: _secret_key_secret: '{{ _custom_secret_key["resources"] | default([]) | length | ternary(_custom_secret_key, _default_secret_key) }}' + no_log: true - block: - name: Create secret key secret