From 79b5d8e86d5582913877a0d5749575ad2543c786 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 18 Feb 2019 16:05:07 +0100 Subject: [PATCH 1/4] add %% before a one_ha_role --- tmpl/oned.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmpl/oned.conf b/tmpl/oned.conf index 15356a3..c3d5de1 100644 --- a/tmpl/oned.conf +++ b/tmpl/oned.conf @@ -170,7 +170,7 @@ RAFT = [ XMLRPC_TIMEOUT_MS = 450 ] -%if %%enable_one_ha == 'oui' and one_ha_role == 'leader' +%if %%enable_one_ha == 'oui' and %%one_ha_role == 'leader' # Executed when a server transits from follower->leader RAFT_LEADER_HOOK = [ COMMAND = "raft/vip.sh", From a71da6200655c55d79c9dbea1a23e39ec1ef4fa0 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 18 Feb 2019 17:39:41 +0100 Subject: [PATCH 2/4] demarrer une fois opennebula pour creer la base sqlite + migrer mysql avant le demarrage des services --- postservice/30-one-mng | 16 +---------- posttemplate/90-one-db | 62 ++++++++++++++++++++++++++---------------- preservice/30-one-auth | 5 ++++ 3 files changed, 45 insertions(+), 38 deletions(-) diff --git a/postservice/30-one-mng b/postservice/30-one-mng index 05386c3..41fb52b 100755 --- a/postservice/30-one-mng +++ b/postservice/30-one-mng @@ -433,7 +433,7 @@ function init_ha() { # server 0 not displayed with onezone SERVER=$(CreoleGet one_master) DOMAIN=$(CreoleGet nom_domaine_machine) - FOLLOWER=$(CreoleGet one_follower_servername) + FOLLOWER=$(CreoleGet one_followers_domain) onezone server-add 0 --name $SERVER --rpc http://$DOMAIN:2633/RPC2 for $follower in $FOLLOWER; do onezone server-add 0 --name $follower --rpc http://$follower:2633/RPC2 @@ -441,26 +441,12 @@ function init_ha() { fi } -function to_mysql() { - if [ $(CreoleGet one_database_type) = "mysql" && $(CreoleGet one_ha_role leader) = "leader" ]; then - # do not recover db on follower - HOST=$(CreoleGet one_database_host) - DB=$(CreoleGet one_database_name) - USER=$(CreoleGet one_database_user) - PASS=$(CreoleGet one_database_pass) - onedb sqlite2mysql -s /var/lib/one/one.db -u $USER -p $PASS -d $DB -S $HOST - systemctl stop opennebula.service - systemctl start opennebula.service - fi -} - function main() { wait_true_retcode "Wait for oned to be started" "onecluster show 0 > /dev/null" if [ $(CreoleGet one_ha_role) = "leader" ]; then init_ha fi - to_mysql # # Rename default cluster clst_name=$(CreoleGet one_cluster_name) diff --git a/posttemplate/90-one-db b/posttemplate/90-one-db index dd2963a..f5f2ea5 100644 --- a/posttemplate/90-one-db +++ b/posttemplate/90-one-db @@ -9,36 +9,51 @@ function clean_backups() { - file=${1} - bcks=($(ls ${file}_*)) - nbbck=$(expr ${#bcks[@]} - 2) + file=${1} + bcks=($(ls ${file}_*)) + nbbck=$(expr ${#bcks[@]} - 2) - if [[ ${nbbck} -gt 1 ]] - then - EchoGras "Cleaning up old backups !" - for idx in `seq 0 ${nbbck}` - do - rm -f ${bcks[${idx}]} - done - fi + if [[ ${nbbck} -gt 1 ]] + then + EchoGras "Cleaning up old backups !" + for idx in `seq 0 ${nbbck}` + do + rm -f ${bcks[${idx}]} + done + fi } function updateDB() { - local dbfile='/var/lib/one/one.db' - local cmd="onedb" - local res=0 + local dbfile='/var/lib/one/one.db' + local cmd="onedb" + local res=0 - if [[ -f ${dbfile} ]] - then - $cmd upgrade -f -s ${dbfile} - res=${?} - clean_backups ${dbfile} - return ${res} - else - return 0 - fi + if [[ -f ${dbfile} ]] + then + $cmd upgrade -f -s ${dbfile} + res=${?} + clean_backups ${dbfile} + return ${res} + else + return 0 + fi +} + +function to_mysql() { + if [ $(CreoleGet one_database_type) = "mysql" ] && [ $(CreoleGet one_ha_role leader) = "leader" ]; then + Question_ouinon "Voulez-vous migrer de SQLite à Mysql ?" "True" "non" "warn" + rep=$(echo "$?") + if [ "$rep" == "0" ]; then + # do not recover db on follower + HOST=$(CreoleGet one_database_host) + DB=$(CreoleGet one_database_name) + USER=$(CreoleGet one_database_user) + PASS=$(CreoleGet one_database_pass) + onedb sqlite2mysql -s /var/lib/one/one.db -u $USER -p $PASS -d $DB -S $HOST + fi + fi } echo @@ -46,4 +61,5 @@ EchoGras "Mise à jour de la base de données ONE" echo updateDB echo +to_mysql exit ${?} diff --git a/preservice/30-one-auth b/preservice/30-one-auth index dc5ddb0..5c54019 100644 --- a/preservice/30-one-auth +++ b/preservice/30-one-auth @@ -8,3 +8,8 @@ if [ -z "${auth_mode}" ]; then else ln -s /var/lib/one/remotes/auth/{${auth_mode},default} fi + +# creation de la base /var/lib/one/one.db +systemctl daemon-reload +systemctl start opennebula.service +exit 0 From fb1bea865412090869de84a53c58b5e6ba223878 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 18 Feb 2019 18:25:26 +0100 Subject: [PATCH 3/4] only start opennebula if database do not exists --- preservice/30-one-auth | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/preservice/30-one-auth b/preservice/30-one-auth index 5c54019..9722a18 100644 --- a/preservice/30-one-auth +++ b/preservice/30-one-auth @@ -10,6 +10,8 @@ else fi # creation de la base /var/lib/one/one.db -systemctl daemon-reload -systemctl start opennebula.service +if [ ! -e /var/lib/one/one.db ]; then + systemctl daemon-reload + systemctl start opennebula.service +fi exit 0 From 6a75234cb827da916fd9dc06cd0ffe3c87e7edda Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Tue, 19 Feb 2019 09:18:57 +0100 Subject: [PATCH 4/4] =?UTF-8?q?ne=20migrer=20sqlite=20vers=20mysql=20qu'?= =?UTF-8?q?=C3=A0=20l'instance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- posttemplate/90-one-db | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/posttemplate/90-one-db b/posttemplate/90-one-db index f5f2ea5..5fd0331 100644 --- a/posttemplate/90-one-db +++ b/posttemplate/90-one-db @@ -6,6 +6,7 @@ # . /usr/lib/eole/ihm.sh +script="$1" function clean_backups() { @@ -42,7 +43,7 @@ function updateDB() } function to_mysql() { - if [ $(CreoleGet one_database_type) = "mysql" ] && [ $(CreoleGet one_ha_role leader) = "leader" ]; then + if [ "$script" = 'instance' ] && [ $(CreoleGet one_database_type) = "mysql" ] && [ $(CreoleGet one_ha_role leader) = "leader" ]; then Question_ouinon "Voulez-vous migrer de SQLite à Mysql ?" "True" "non" "warn" rep=$(echo "$?") if [ "$rep" == "0" ]; then