Modif script migration pour facilier reprise sur erreur
This commit is contained in:
parent
5e2e36cfab
commit
502f6a9277
@ -1,7 +1,7 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
SCOVERSION = "9.0.65"
|
SCOVERSION = "9.0.66"
|
||||||
|
|
||||||
SCONAME = "ScoDoc"
|
SCONAME = "ScoDoc"
|
||||||
|
|
||||||
|
@ -66,7 +66,8 @@ def make_shell_context():
|
|||||||
|
|
||||||
|
|
||||||
@app.cli.command()
|
@app.cli.command()
|
||||||
def sco_db_init(): # sco-db-init
|
@click.option("--erase/--no-erase", default=False)
|
||||||
|
def sco_db_init(erase=False): # sco-db-init
|
||||||
"""Initialize the database.
|
"""Initialize the database.
|
||||||
Starts from an existing database and create all
|
Starts from an existing database and create all
|
||||||
the necessary SQL tables and functions.
|
the necessary SQL tables and functions.
|
||||||
@ -76,7 +77,7 @@ def sco_db_init(): # sco-db-init
|
|||||||
"""La variable SCODOC_ADMIN_MAIL n'est pas positionnée: vérifier votre .env"""
|
"""La variable SCODOC_ADMIN_MAIL n'est pas positionnée: vérifier votre .env"""
|
||||||
)
|
)
|
||||||
return 100
|
return 100
|
||||||
initialize_scodoc_database()
|
initialize_scodoc_database(erase=erase)
|
||||||
|
|
||||||
|
|
||||||
@app.cli.command()
|
@app.cli.command()
|
||||||
|
@ -30,41 +30,72 @@ usage() {
|
|||||||
echo "Ce script doit être lancé en tant que root sur le nouveau"
|
echo "Ce script doit être lancé en tant que root sur le nouveau"
|
||||||
echo "serveur ScoDoc 9 / Debian 11."
|
echo "serveur ScoDoc 9 / Debian 11."
|
||||||
echo
|
echo
|
||||||
echo "Usage: $0 archive"
|
echo "Usage: $0 [-h] [-m] [-z] archive"
|
||||||
echo " ou $0 -m"
|
|
||||||
echo
|
echo
|
||||||
echo " archive doit être un répertoire exporté via save_scodoc7_data.sh"
|
echo " archive doit être un répertoire exporté via save_scodoc7_data.sh"
|
||||||
echo " sur le serveur ScoDoc 7"
|
echo " sur le serveur ScoDoc 7"
|
||||||
echo " Avec l'option -m, effectue une migration \"en place\""
|
echo " Options:"
|
||||||
echo " avec import des données ScoDoc 7 qui étaient sur cette même"
|
echo " -m"
|
||||||
echo " machine."
|
echo " effectue une migration \"en place\""
|
||||||
echo " Dans ce cas, le répertoire /opt/scodoc DOIT avoir été renommé"
|
echo " avec import des données ScoDoc 7 qui étaient sur cette même"
|
||||||
echo " /opt/scodoc7"
|
echo " machine."
|
||||||
echo " AVANT l'installation de ScoDoc 9."
|
echo " Dans ce cas, le répertoire /opt/scodoc DOIT avoir été renommé"
|
||||||
echo
|
echo " /opt/scodoc7"
|
||||||
|
echo " AVANT l'installation de ScoDoc 9."
|
||||||
|
echo
|
||||||
|
echo " -z"
|
||||||
|
echo " efface la base existante, utilise le scodoc-data existant sans"
|
||||||
|
echo " l'effacer et tolère les fichiers manquants dans la source."
|
||||||
|
echo " Utilisée pour reprendre une migration interrompue."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
if [ ! $# -eq 1 ]
|
|
||||||
then
|
INPLACE=0
|
||||||
|
RESTART=0
|
||||||
|
while getopts "hmz" opt; do
|
||||||
|
case "$opt" in
|
||||||
|
h)
|
||||||
usage
|
usage
|
||||||
fi
|
;;
|
||||||
if [ "$1" == "-h" ] || [ "$1" == "--help" ]
|
m)
|
||||||
then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
if [ "$1" == "-m" ]
|
|
||||||
then
|
|
||||||
echo "Migration en place"
|
echo "Migration en place"
|
||||||
INPLACE=1
|
INPLACE=1
|
||||||
SCODOC7_HOME=/opt/scodoc7
|
SCODOC7_HOME=/opt/scodoc7
|
||||||
# vérifie que ScoDoc7 est bien arrêté:
|
# vérifie que ScoDoc7 est bien arrêté:
|
||||||
systemctl is-active scodoc >& /dev/null && systemctl stop scodoc
|
systemctl is-active scodoc >& /dev/null && systemctl stop scodoc
|
||||||
else
|
;;
|
||||||
|
z)
|
||||||
|
echo "Mode reprise sur erreur"
|
||||||
|
RESTART=1
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Invalid option: -$OPTARG" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "Option -$OPTARG requires an argument." >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
shift "$((OPTIND - 1))"
|
||||||
|
|
||||||
|
if [ "$INPLACE" = "0" ]
|
||||||
|
then
|
||||||
echo "Migration depuis archive $1"
|
echo "Migration depuis archive $1"
|
||||||
INPLACE=0
|
|
||||||
SCODOC7_HOME="$1" # racine de l'archive importée
|
SCODOC7_HOME="$1" # racine de l'archive importée
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- 0. En mode reprise, efface la base de données. En effet, les base d'origine ne sont pas
|
||||||
|
# effacées par le script de migration, et en cas d'erreur en cours d'import, il est plus
|
||||||
|
# sûr de repartir de zéro.
|
||||||
|
if [ "$RESTART" = "1" ]
|
||||||
|
then
|
||||||
|
echo "Efface la base existante"
|
||||||
|
su -c "(cd /opt/scodoc && source venv/bin/activate && flask sco-db-init --erase)" "$SCODOC_USER" || die "Erreur: sco-db-init"
|
||||||
|
fi
|
||||||
|
|
||||||
# --- 1. Vérifie qu'aucun des départements à importer n'existe déjà
|
# --- 1. Vérifie qu'aucun des départements à importer n'existe déjà
|
||||||
check_existing_depts() {
|
check_existing_depts() {
|
||||||
sco7_depts=""
|
sco7_depts=""
|
||||||
@ -115,22 +146,28 @@ migrate_database_ownership() {
|
|||||||
|
|
||||||
migrate_local_files() {
|
migrate_local_files() {
|
||||||
echo "Déplacement des fichiers de configuration et des archives"
|
echo "Déplacement des fichiers de configuration et des archives"
|
||||||
SCODOC_VAR_DIR_BACKUP="$SCODOC_VAR_DIR".bak
|
if [ "$RESTART" = "0" ] # ne le fait pas en mode "reprise"
|
||||||
if [ -e "$SCODOC_VAR_DIR_BACKUP" ]
|
|
||||||
then
|
then
|
||||||
die "supprimer ou déplacer $SCODOC_VAR_DIR_BACKUP avant de continuer"
|
SCODOC_VAR_DIR_BACKUP="$SCODOC_VAR_DIR".bak
|
||||||
|
if [ -e "$SCODOC_VAR_DIR_BACKUP" ]
|
||||||
|
then
|
||||||
|
die "supprimer ou déplacer $SCODOC_VAR_DIR_BACKUP avant de continuer"
|
||||||
|
fi
|
||||||
|
if [ -e "$SCODOC_VAR_DIR" ]
|
||||||
|
then
|
||||||
|
echo " renomme $SCODOC_VAR_DIR en $SCODOC_VAR_DIR_BACKUP"
|
||||||
|
mv "$SCODOC_VAR_DIR" "$SCODOC_VAR_DIR_BACKUP"
|
||||||
|
fi
|
||||||
|
mkdir "$SCODOC_VAR_DIR" || die "erreur creation repertoire"
|
||||||
fi
|
fi
|
||||||
if [ -e "$SCODOC_VAR_DIR" ]
|
if [ $(ls "${SCODOC7_HOME}/var/scodoc" | wc -l) -ne 0 ]
|
||||||
then
|
then
|
||||||
echo " renomme $SCODOC_VAR_DIR en $SCODOC_VAR_DIR_BACKUP"
|
echo " déplace ${SCODOC7_HOME}/var/scodoc/ dans $SCODOC_VAR_DIR..."
|
||||||
mv "$SCODOC_VAR_DIR" "$SCODOC_VAR_DIR_BACKUP"
|
mv "${SCODOC7_HOME}"/var/scodoc/* "$SCODOC_VAR_DIR" || die "migrate_local_files failed"
|
||||||
fi
|
fi
|
||||||
mkdir "$SCODOC_VAR_DIR" || die "erreur creation repertoire"
|
|
||||||
echo " déplace ${SCODOC7_HOME}/var/scodoc/ dans $SCODOC_VAR_DIR..."
|
|
||||||
mv "${SCODOC7_HOME}"/var/scodoc/* "$SCODOC_VAR_DIR" || die "migrate_local_files failed"
|
|
||||||
# Récupère le .env: normalement ./opt/scodoc/.env est un lien vers
|
# Récupère le .env: normalement ./opt/scodoc/.env est un lien vers
|
||||||
# /opt/scodoc-data/.env
|
# /opt/scodoc-data/.env
|
||||||
# sauf si installation non standard (developeurs) avec .env réelement dans /opt/scodoc
|
# sauf si installation non standard (developeurs) avec .env réellement dans /opt/scodoc
|
||||||
if [ -L "$SCODOC_DIR"/.env ]
|
if [ -L "$SCODOC_DIR"/.env ]
|
||||||
then
|
then
|
||||||
cp -p "$SCODOC_VAR_DIR_BACKUP"/.env "$SCODOC_VAR_DIR" || die "fichier .env manquant dans l'ancien $SCODOC_VAR_DIR !"
|
cp -p "$SCODOC_VAR_DIR_BACKUP"/.env "$SCODOC_VAR_DIR" || die "fichier .env manquant dans l'ancien $SCODOC_VAR_DIR !"
|
||||||
@ -144,8 +181,10 @@ migrate_local_files() {
|
|||||||
old_logs_dest="$SCODOC_VAR_DIR/log/scodoc7"
|
old_logs_dest="$SCODOC_VAR_DIR/log/scodoc7"
|
||||||
echo "Copie des anciens logs ScoDoc 7 dans $old_logs_dest"
|
echo "Copie des anciens logs ScoDoc 7 dans $old_logs_dest"
|
||||||
mkdir -p "$old_logs_dest" || die "erreur creation $old_logs_dest"
|
mkdir -p "$old_logs_dest" || die "erreur creation $old_logs_dest"
|
||||||
mv "${SCODOC7_HOME}"/log/* "$old_logs_dest" || die "erreur mv"
|
if [ $(ls "${SCODOC7_HOME}/log" | wc -l) -ne 0 ]
|
||||||
|
then
|
||||||
|
mv "${SCODOC7_HOME}"/log/* "$old_logs_dest" || die "erreur mv"
|
||||||
|
fi
|
||||||
# Le fichier de customization local:
|
# Le fichier de customization local:
|
||||||
# peut être dans .../var/config/scodoc_local.py
|
# peut être dans .../var/config/scodoc_local.py
|
||||||
# ou bien, sur les très anciennes installs, dans Products/ScoDoc/config/scodoc_config.py
|
# ou bien, sur les très anciennes installs, dans Products/ScoDoc/config/scodoc_config.py
|
||||||
|
Loading…
Reference in New Issue
Block a user