---
# When we update package "a-${version}" and a requires b >= ${version} if we
# don't specify the version of b yum will choose the latest version of b
# available and the whole set of dependencies end up at the latest version.
# Since the package module, unlike the yum module, doesn't flatten a list
# of packages into one transaction we need to do that explicitly. The ansible
# core team tells us not to rely on yum module transaction flattening anyway.

- name: Upgrade master packages - yum
  command:
    yum install -y {{ master_pkgs | join(' ') }} \
    {{ ' --exclude *' ~ openshift_service_type ~ '*3.9*' if openshift_upgrade_target | version_compare('3.9','<') else '' }}
  vars:
    master_pkgs:
      - "{{ openshift_service_type }}{{ openshift_pkg_version | default('') }}"
      - "{{ openshift_service_type }}-master{{ openshift_pkg_version | default('') }}"
      - "{{ openshift_service_type }}-node{{ openshift_pkg_version | default('') }}"
      - "{{ openshift_service_type + '-sdn-ovs' + openshift_pkg_version | default('') if openshift_use_openshift_sdn | default(true) | bool else '' }}"
      - "{{ openshift_service_type }}-clients{{ openshift_pkg_version | default('') }}"
  register: result
  until: result is succeeded
  when: ansible_pkg_mgr == 'yum'

- name: Upgrade master packages - dnf
  dnf:
    name: "{{ master_pkgs | join(',') }}"
    state: present
  vars:
    master_pkgs:
      - "{{ openshift_service_type }}{{ openshift_pkg_version }}"
      - "{{ openshift_service_type }}-master{{ openshift_pkg_version }}"
      - "{{ openshift_service_type }}-node{{ openshift_pkg_version }}"
      - "{{ openshift_service_type + '-sdn-ovs' + openshift_pkg_version | default('') if openshift_use_openshift_sdn | default(true) | bool else '' }}"
      - "{{ openshift_service_type }}-clients{{ openshift_pkg_version }}"
  register: result
  until: result is succeeded
  when: ansible_pkg_mgr == 'dnf'
