fix
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
ba189cf9f5
commit
7da1a7b838
1 changed files with 35 additions and 3 deletions
|
|
@ -238,6 +238,22 @@ fetch_asset () {
|
||||||
|| die "somme de contrôle incorrecte après téléchargement : ${NAME}"
|
|| die "somme de contrôle incorrecte après téléchargement : ${NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Une unit déjà installée dans la bonne version n'a rien à faire dans le cache
|
||||||
|
# versionné : ni téléchargement, ni réinstallation. C'est le cas courant à
|
||||||
|
# l'upgrade — les units bougent rarement d'une release à l'autre, alors que
|
||||||
|
# /opt/two/<nouveau-tag>/units/ est vide par construction. Le fichier installé
|
||||||
|
# est le seul qui persiste d'un tag au suivant, donc le seul à interroger.
|
||||||
|
#
|
||||||
|
# install_units rejoue ce même test : les deux décisions découlent du manifeste,
|
||||||
|
# aucun état n'est partagé entre les deux fonctions.
|
||||||
|
unit_up_to_date () {
|
||||||
|
local MANIFEST="${1}"
|
||||||
|
local UNIT="${2}"
|
||||||
|
|
||||||
|
[[ -n "${MANIFEST}" ]] || return 1
|
||||||
|
sum_matches "${MANIFEST}" "${UNIT}" "${UNIT_DIR}/${UNIT}"
|
||||||
|
}
|
||||||
|
|
||||||
fetch_assets () {
|
fetch_assets () {
|
||||||
local DRY_RUN="${1}"
|
local DRY_RUN="${1}"
|
||||||
local PROFILE="${2}"
|
local PROFILE="${2}"
|
||||||
|
|
@ -253,6 +269,11 @@ fetch_assets () {
|
||||||
|
|
||||||
for unit in $(profile_units "${PROFILE}")
|
for unit in $(profile_units "${PROFILE}")
|
||||||
do
|
do
|
||||||
|
if unit_up_to_date "${MANIFEST}" "${unit}"
|
||||||
|
then
|
||||||
|
info " ${unit} déjà installée en bonne version — téléchargement évité"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
fetch_asset "${DRY_RUN}" "${MANIFEST}" "${ASSETS}" "${unit}" "${UNIT_PATH}${unit}"
|
fetch_asset "${DRY_RUN}" "${MANIFEST}" "${ASSETS}" "${unit}" "${UNIT_PATH}${unit}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
@ -268,23 +289,34 @@ fetch_assets () {
|
||||||
install_units () {
|
install_units () {
|
||||||
local DRY_RUN="${1}"
|
local DRY_RUN="${1}"
|
||||||
local PROFILE="${2}"
|
local PROFILE="${2}"
|
||||||
local UNITS unit
|
local MANIFEST="${3}"
|
||||||
|
local UNITS unit CHANGED
|
||||||
|
|
||||||
UNITS=$(profile_units "${PROFILE}") || die "profil inconnu : ${PROFILE}"
|
UNITS=$(profile_units "${PROFILE}") || die "profil inconnu : ${PROFILE}"
|
||||||
[[ -n "${UNITS}" ]] || { info "units : aucune pour le profil ${PROFILE}"; return 0; }
|
[[ -n "${UNITS}" ]] || { info "units : aucune pour le profil ${PROFILE}"; return 0; }
|
||||||
|
|
||||||
info "units du profil ${PROFILE}"
|
info "units du profil ${PROFILE}"
|
||||||
|
|
||||||
|
CHANGED=0
|
||||||
for unit in ${UNITS}
|
for unit in ${UNITS}
|
||||||
do
|
do
|
||||||
|
# Même test que fetch_assets : rien n'a été téléchargé pour cette unit,
|
||||||
|
# il n'y a donc rien à installer depuis le cache versionné.
|
||||||
|
if unit_up_to_date "${MANIFEST}" "${unit}"
|
||||||
|
then
|
||||||
|
info " ${unit} inchangée — installation évitée"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [[ ${DRY_RUN} -ne ${FLAGS_TRUE} ]] && [[ ! -f "${UNIT_PATH}${unit}" ]]
|
if [[ ${DRY_RUN} -ne ${FLAGS_TRUE} ]] && [[ ! -f "${UNIT_PATH}${unit}" ]]
|
||||||
then
|
then
|
||||||
die "unit absente des assets de la release ${TAG} : ${unit}"
|
die "unit absente des assets de la release ${TAG} : ${unit}"
|
||||||
fi
|
fi
|
||||||
run "${DRY_RUN}" "install -m 0644 '${UNIT_PATH}${unit}' '${UNIT_DIR}/${unit}'"
|
run "${DRY_RUN}" "install -m 0644 '${UNIT_PATH}${unit}' '${UNIT_DIR}/${unit}'"
|
||||||
|
CHANGED=1
|
||||||
done
|
done
|
||||||
|
|
||||||
run "${DRY_RUN}" "systemctl daemon-reload"
|
# daemon-reload seulement si une unit a bougé.
|
||||||
|
[[ ${CHANGED} -eq 1 ]] && run "${DRY_RUN}" "systemctl daemon-reload"
|
||||||
|
|
||||||
for unit in ${UNITS}
|
for unit in ${UNITS}
|
||||||
do
|
do
|
||||||
|
|
@ -383,7 +415,7 @@ main () {
|
||||||
|
|
||||||
fetch_assets "${FLAGS_dryrun}" "${FLAGS_profile}" "${ASSETS}" "${MANIFEST}"
|
fetch_assets "${FLAGS_dryrun}" "${FLAGS_profile}" "${ASSETS}" "${MANIFEST}"
|
||||||
|
|
||||||
install_units "${FLAGS_dryrun}" "${FLAGS_profile}"
|
install_units "${FLAGS_dryrun}" "${FLAGS_profile}" "${MANIFEST}"
|
||||||
switch_binaries "${FLAGS_dryrun}" "${FLAGS_profile}" "${ASSETS}"
|
switch_binaries "${FLAGS_dryrun}" "${FLAGS_profile}" "${ASSETS}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue