From c82197a266561db99f3119ffb089a618a953d60d Mon Sep 17 00:00:00 2001 From: Boris Gallet Date: Thu, 6 Feb 2025 17:16:17 +0100 Subject: [PATCH] new: [0km] vps-clone-odoo-db : from vpsA to vpsB --- bin/0km | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 175 insertions(+), 3 deletions(-) diff --git a/bin/0km b/bin/0km index 624979b..9de4f3f 100755 --- a/bin/0km +++ b/bin/0km @@ -1869,8 +1869,8 @@ graph:def:disk-2() { colors[docker/images]="#00FFFF" colors[docker/local_volumes]="#6495ED" colors[docker/logs]="#000080" - - + + printf "%s\n" "${gnuplot_line_config[@]}" first=1 rrdfetch_cmd="'< rscolcat concat" @@ -2036,6 +2036,178 @@ cmdline.spec:vps-subscribe:cmd:rm:run() { } +cmdline.spec.gnu vps-clone-odoo +cmdline.spec::cmd:vps-clone-odoo:run() { + + : :posarg: FROM 'Database from which to clone + (format : "vps:dbname@servicename")' + : :posarg: TO 'Database name to clone + (format : "vps:dbname@servicename")' + + : :optval: --project,-p 'Project name (default: myc)' + : :optfla: --neutralize,-n 'Neutralize the new database' + + IFS=':@' read -r vps_from db_from service_from <<< "$FROM" + IFS=':@' read -r vps_to db_to service_to <<< "$TO" + + echo "Cloning from VPS: $vps_from, Service: $service_from, DB: $db_from" + echo "Cloning to VPS: $vps_to, Service: $service_to, DB: $db_to" + + ## if not -n option we warn the user + if [ -z "$opt_neutralize" ]; then + warn "Neutralize option '-n' not set, the new database will have email servers ON" + fi + + DUMPDATE=$(date +%Y%m%d%H%M%S) + DUMPFILENAME="${vps_from}_${service_from}_${db_from}_${DUMPDATE}.zip" + DUMPFILE="$(mktemp -u)/${DUMPFILENAME}" + + info "Dumpfile : $DUMPFILE" + + if [ -n "$opt_project" ]; then + PROJECT="$opt_project" + else + PROJECT="myc" + fi + + clone:odoo:check "$vps_from" "$service_from" "$vps_to" "$service_to" "$PROJECT" || { + err "check failed" + return 1 + } + + clone:odoo:dump "$vps_from" "$service_from" "$db_from" "$DUMPFILE" "$opt_force" || { + err "Failed to dump database $db_from from $vps_from" + return 1 + } + clone:odoo:scp "$vps_from" "$vps_to" "$DUMPFILE" || { + err "Failed to scp database $db_from from $vps_from to $vps_to" + return 1 + } + clone:odoo:restore "$vps_to" "$service_to" "$db_to" "$DUMPFILE" "$opt_neutralize" || { + err "Failed to restore database $db_to on $vps_to" + return 1 + } + + clone:odoo:clean "$vps_from" "$vps_to" "$DUMPFILE" || { + err "Failed to clean database dump $DUMPFILE" + return 1 + } + +} + +clone:odoo:retrieveinfo(){ + local vps="$1" + local service="$2" + local dbname="$3" +} +clone:odoo:check(){ + local vps_from="$1" + local service_from="$2" + local vps_to="$3" + local service_to="$4" + local project="$5" + + # Check VPS connections + vps_connection_check "$vps_from"