--- - name: check if project {{ project_name }} exists shell: "{{ openshift_cli }} get project {{ project_name }}" register: result ignore_errors: true changed_when: false - name: get deploymentconfig names in {{ project_name }} shell: "{{ openshift_cli }} get dc -l {{ selector }} -o jsonpath='{.items[*].metadata.name}' -n {{ project_name }}" register: deploymentconfigs_list when: result|succeeded changed_when: false - name: get deployment config replica counts in {{ project_name }} shell: "{{ openshift_cli }} get dc {{ deploymentconfigs_list.stdout }} -o json -n {{ project_name }}" register: deploymentconfigs_list_json when: result|succeeded changed_when: false - name: redeploy if deployment has failed shell: | {{ openshift_cli }} rollout cancel dc/{{ dc.metadata.name }} -n {{ project_name }} | true sleep 5 {{ openshift_cli }} rollout latest dc/{{ dc.metadata.name }} -n {{ project_name }} {{ openshift_cli }} rollout status dc/{{ dc.metadata.name }} -n {{ project_name }} when: - result|succeeded - deploymentconfigs_list_json|succeeded - dc.metadata is defined - dc.status is defined - dc.spec is defined - dc.status.availableReplicas != dc.spec.replicas loop_control: loop_var: dc label: "{{ dc.metadata.name if dc.metadata is defined else dc }}" with_items: "{{ deploymentconfigs_list_json.stdout|default('[]')|from_json|json_query('items') }}"