summaryrefslogtreecommitdiffstats
path: root/roles/openshift_excluder/tasks/status.yml
blob: 40bf98c1822d84e8c737c1f299cb7cd300aeef13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
---
- name: Determine if excluder packages are installed
  rpm_q:
    name: "{{ openshift.common.service_type }}-excluder"
    state: present
  register: openshift_excluder_installed
  failed_when: false

# docker excluder needs to be enable by default
- name: Determine if docker packages are installed
  rpm_q:
    name: "{{ openshift.common.service_type }}-docker-excluder"
    state: present
  register: docker_excluder_installed
  failed_when: false

# The excluder status function returns 0 when everything is excluded
# and 1 if any packages are missing from the exclusions list and outputs a warning to stderr
# # atomic-openshift-excluder status ; echo $?
# exclude -- All packages excluded
# 0
# # atomic-openshift-excluder unexclude
# # atomic-openshift-excluder status ; echo $?
# unexclude -- At least one package not excluded
# 1

- block:
  - include: init.yml
  - block:
    - name: Record openshift excluder status
      command: "{{ openshift.common.service_type }}-excluder status"
      register: excluder_status
      failed_when: false

    # Even though the openshift excluder is enabled
    # if the status is non-zero, disabled the excluder
    - name: Override openshift excluder enablement if the status is non-zero
      set_fact:
        disable_openshift_excluder_override: true
      when:
      - "{{ excluder_status.rc | default(0) != 0 }}"

    - debug:
        msg: "Disabling openshift excluder"
      when:
      - "{{ excluder_status.rc | default(0) != 0 }}"

    when:
    - "{{ openshift_excluder_installed.installed_versions | default([]) | length > 0 }}"
    - "{{ openshift_excluder_on }}"

  - block:
    - name: Record docker excluder status
      command: "{{ openshift.common.service_type }}-docker-excluder status"
      register: docker_excluder_status
      failed_when: false

    # If the docker excluder is installed and the status is non-zero
    # always enable the docker excluder
    - name: Override docker excluder enablement if the status is non-zero
      set_fact:
        enable_docker_excluder_override: true
      when:
      - "{{ docker_excluder_status.rc | default(0) != 0 }}"

    - debug:
        msg: "Enabling docker excluder"
      when:
      - "{{ docker_excluder_status.rc | default(0) != 0 }}"

    # As the docker excluder status is not satisfied,
    # re-enable entire docker excluder again
    # At the same time keep the override set in a case other task would
    - name: Enable docker excluder
      command: "{{ openshift.common.service_type }}-docker-excluder exclude"

    # Run the docker excluder status even if the excluder is disabled.
    # In order to determine of the excluder needs to be enabled.
    when:
    - "{{ docker_excluder_installed.installed_versions | default([]) | length > 0 }}"

  when:
  - not openshift.common.is_containerized | bool