blob: a40417dea3503259d5d81cf85b9aa8c5d8620a50 [file] [log] [blame]
{% 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 %}