| {% from "glusterfs/map.jinja" import client with context %} |
| |
| {# Ensure newest package is available #} |
| {% set latest_pkg_version = salt['pkg.latest_version']('glusterfs-client') %} |
| {% set desired_version = salt['pillar.get']('_param:linux_system_repo_mcp_glusterfs_version_number') %} |
| {% if latest_pkg_version and salt['pkg.version_cmp'](latest_pkg_version, desired_version) >= 0 %} |
| {% set ready_to_upgrade = True %} |
| {% else %} |
| {% set ready_to_upgrade = False %} |
| {% endif %} |
| |
| |
| {%- if client.enabled and ready_to_upgrade %} |
| |
| {# TODO: support kdt #} |
| {# Drain #} |
| drain_docker_payload: |
| cmd.run: |
| - name: docker node update --availability drain {{ grains.nodename }} |
| - onlyif: which docker |
| |
| {# Update #} |
| glusterfs_kill_processes: |
| process.absent: |
| - name: /usr/sbin/gluster |
| |
| glusterfs_install_latest_packages: |
| pkg.latest: |
| - pkgs: {{ client.pkgs }} |
| - refresh: true |
| - require: |
| - process: glusterfs_kill_processes |
| |
| {# Validate #} |
| glusterfs_validate_client_update: |
| cmd.script: |
| - name: validate_glusterfs_update.sh {{ desired_version }} client |
| - source: salt://glusterfs/files/validate_glusterfs_update.sh |
| - stateful: True |
| - require: |
| - pkg: glusterfs_install_latest_packages |
| - retry: True |
| |
| {# run glusterfs.client to restart mounts #} |
| glusterfs_apply_client_state: |
| module.run: |
| - name: state.sls |
| - mods: glusterfs.client |
| - require: |
| - cmd: glusterfs_validate_client_update |
| |
| {# TODO: support kdt #} |
| {# (Un)Drain #} |
| restore_docker_node_availability: |
| cmd.run: |
| - name: docker node update --availability active {{ grains.nodename }} |
| - onlyif: which docker |
| - order: last |
| |
| {%- endif %} |