From 836518c90b36216fd5790d20f6151ca3782ffe50 Mon Sep 17 00:00:00 2001 From: "Christian M. Adams" Date: Wed, 16 Oct 2024 11:29:00 -0400 Subject: [PATCH] Compare gating version against existing deployment versions and set upgradeFrom status --- .../tasks/check_previous_version.yml | 19 +++++++++++++++++++ roles/installer/tasks/main.yml | 4 ++++ roles/installer/tasks/update_status.yml | 9 +++++++++ roles/installer/vars/main.yml | 3 +++ 4 files changed, 35 insertions(+) create mode 100644 roles/installer/tasks/check_previous_version.yml diff --git a/roles/installer/tasks/check_previous_version.yml b/roles/installer/tasks/check_previous_version.yml new file mode 100644 index 000000000..0f1823013 --- /dev/null +++ b/roles/installer/tasks/check_previous_version.yml @@ -0,0 +1,19 @@ +--- + +- name: Check for existing deployment + k8s_info: + api_version: "{{ api_version }}" + kind: "{{ kind }}" + namespace: "{{ ansible_operator_meta.namespace }}" + name: "{{ ansible_operator_meta.name }}" + register: existing_deployment + +- name: Set previous_version version based on AWX CR version status + ansible.builtin.set_fact: + previous_version: "{{ existing_deployment.resources[0].status.version | default(0.0.0) }}" + when: existing_deployment['resources'] | length > 0 + +- name: If previous_version is less than or equal to gating_version, set upgraded_from to previous_version + ansible.builtin.set_fact: + upgraded_from: "{{ previous_version }}" + when: previous_version | version_compare(gating_version, '<=') diff --git a/roles/installer/tasks/main.yml b/roles/installer/tasks/main.yml index f0b2ae5b6..a53b57331 100644 --- a/roles/installer/tasks/main.yml +++ b/roles/installer/tasks/main.yml @@ -23,6 +23,10 @@ namespace: "{{ ansible_operator_meta.namespace }}" register: awx_web_deployment +- name: Check for existing deployment for previous version + include_tasks: check_previous_version.yml + when: gating_version | length > 0 + - name: Start installation if auto_upgrade is true include_tasks: install.yml when: diff --git a/roles/installer/tasks/update_status.yml b/roles/installer/tasks/update_status.yml index 1c0b7b6b4..f413f8b2d 100644 --- a/roles/installer/tasks/update_status.yml +++ b/roles/installer/tasks/update_status.yml @@ -55,6 +55,15 @@ changed_when: false when: awx_web_pod_name != '' +- name: Update upgradedFrom status + operator_sdk.util.k8s_status: + api_version: '{{ api_version }}' + kind: "{{ kind }}" + name: "{{ ansible_operator_meta.name }}" + namespace: "{{ ansible_operator_meta.namespace }}" + status: + upgradedFrom: "{{ upgraded_from | default(omit) }}" + - name: Update version status operator_sdk.util.k8s_status: api_version: '{{ api_version }}' diff --git a/roles/installer/vars/main.yml b/roles/installer/vars/main.yml index 38e48b3d4..9ef8d1ecf 100644 --- a/roles/installer/vars/main.yml +++ b/roles/installer/vars/main.yml @@ -21,3 +21,6 @@ _metrics_utility_pvc_claim: "{{ metrics_utility_pvc_claim | default(deployment_t _metrics_utility_pvc_claim_size: "{{ metrics_utility_pvc_claim_size | default('5Gi') }}" _metrics_utility_cronjob_gather_schedule: "{{ metrics_utility_cronjob_gather_schedule | default('@hourly') }}" _metrics_utility_cronjob_report_schedule: "{{ metrics_utility_cronjob_report_schedule | default('@monthly') }}" + +# version check +gating_version: "{{ gating_version | default('') }}"