From a3d645e8a8f500f0c12a14abe7f9bda03f4cd768 Mon Sep 17 00:00:00 2001 From: Frank Ketelaars Date: Sun, 23 Oct 2022 18:28:47 +0000 Subject: [PATCH] #182 Avoid deletion of dependent cartridge --- .../tasks/cp4d-remove-cr.yml | 38 +++---------------- .../cp4d/cp4d-variables/tasks/main.yml | 17 +++++++++ 2 files changed, 22 insertions(+), 33 deletions(-) diff --git a/automation-roles/50-install-cloud-pak/cp4d/cp4d-cartridge-remove/tasks/cp4d-remove-cr.yml b/automation-roles/50-install-cloud-pak/cp4d/cp4d-cartridge-remove/tasks/cp4d-remove-cr.yml index e2f6234c8..32d2f1e2f 100644 --- a/automation-roles/50-install-cloud-pak/cp4d/cp4d-cartridge-remove/tasks/cp4d-remove-cr.yml +++ b/automation-roles/50-install-cloud-pak/cp4d/cp4d-cartridge-remove/tasks/cp4d-remove-cr.yml @@ -12,42 +12,14 @@ failed_when: False register: _cartridge_installed - - set_fact: - _cartridge_is_dependent: False - - - name: Validate if cartridge is installed as part of a dependent component - block: - - name: Check if cartridge {{ _current_cartridge_cr.name }} is installed with a dependency flag - shell: | - oc get {{ _current_cartridge_cr.cr_cr }} \ - --namespace {{ _p_current_cp4d_cluster.project }} \ - -o json | jq -r ".items [] | select({{ _current_cartridge_cr.filter_dependency }}) | .metadata.name" | wc -l - register: _cartridge_dependency_result - - - set_fact: - _cartridge_is_dependent: True - when: - - _cartridge_dependency_result.rc == 0 - - _cartridge_dependency_result.stdout != '0' - - - debug: - msg: > - "Cartridge {{ _current_cartridge_cr.name }} is deployed as part of a dependency. - CR {{ _current_cartridge_cr.cr_cr }} contains select filter: {{ _current_cartridge_cr.filter_dependency }}. - Skipping delete...." - when: _cartridge_is_dependent == True - - when: > - _cartridge_installed.rc == 0 and - _current_cartridge_cr.filter_dependency | default ('') != '' - - name: Remove cartridge if it is currently installed but is to be uninstalled shell: | oc delete {{ _current_cartridge_cr.cr_cr }} --namespace {{ _p_current_cp4d_cluster.project }} --all - when: > - _cartridge_is_dependent == False and - _cartridge_installed.rc == 0 and - ( _configured_cartridge == {} or ( (_configured_cartridge.state | default('installed')) == 'removed' ) ) + when: + - not (_configured_cartridge.Component_name | default('')) in _cartridge_dependencies + - _cartridge_installed.rc == 0 + - _configured_cartridge == {} or ((_configured_cartridge.state | default('installed')) == 'removed' ) + when: - (_current_cartridge_cr.cr_cr | default('')) != '' - not (_current_cartridge_cr.embedded | default(False) | bool) diff --git a/automation-roles/50-install-cloud-pak/cp4d/cp4d-variables/tasks/main.yml b/automation-roles/50-install-cloud-pak/cp4d/cp4d-variables/tasks/main.yml index 09975c5c1..5727283d5 100644 --- a/automation-roles/50-install-cloud-pak/cp4d/cp4d-variables/tasks/main.yml +++ b/automation-roles/50-install-cloud-pak/cp4d/cp4d-variables/tasks/main.yml @@ -13,6 +13,7 @@ - set_fact: _cartridges_with_olm_utils_name: [] _cartridges_to_install: [] + _cartridge_dependencies: [] - name: Obtain versions of case files and cartridges include_tasks: list-components-olm-utils.yml @@ -70,6 +71,22 @@ debug: var: _sequential_install +- name: Determine cartridge dependencies + set_fact: + _cartridge_dependencies: >- + {{ _cartridge_dependencies + ( item.Dependencies.split('+') | map("trim") | list | reject('match','^$') | list ) | unique }} + when: (item.state | default('installed')) == 'installed' + loop: "{{ _cartridges_to_install }}" + +- name: Remove duplicate entries from cartridge dependencies + set_fact: + _cartridge_dependencies: >- + {{ _cartridge_dependencies | unique }} + - name: Show full cartridge information debug: var: _cartridges_to_install + +- name: Show cartridge dependencies + debug: + var: _cartridge_dependencies \ No newline at end of file