make a backup before upgrade

+ add no_backup flag
+ add keep_maintenance_mode internal flag
This commit is contained in:
Marc Koch 2020-12-16 23:06:27 +01:00
parent def0776066
commit 4bf6a7d91f
Signed by: marc
GPG Key ID: AC2D4E00990A6767
3 changed files with 60 additions and 43 deletions

View File

@ -9,6 +9,7 @@ import shutil
from colorama import Fore, Style from colorama import Fore, Style
from pathlib import Path from pathlib import Path
from utils import _print from utils import _print
import utils
class Container: class Container:
@ -198,7 +199,8 @@ class Container:
return False return False
# Disable Nextcloud maintenance mode # Disable Nextcloud maintenance mode
def __disable_maintenance_mode(self): def __disable_maintenance_mode(self) -> bool:
if not utils.keep_maintenance_mode:
try: try:
disable_maintenance_mode = check_output( disable_maintenance_mode = check_output(
["docker", "exec", "--user", "www-data", self.app_container, "php", "occ", "maintenance:mode", "--off"]) ["docker", "exec", "--user", "www-data", self.app_container, "php", "occ", "maintenance:mode", "--off"])
@ -213,6 +215,8 @@ class Container:
self.exceptions.update({'__disable_maintenance_mode': traceback.format_exc()}) self.exceptions.update({'__disable_maintenance_mode': traceback.format_exc()})
_print(F"Disable Nextcloud maintenance mode: {self.FAILED}") _print(F"Disable Nextcloud maintenance mode: {self.FAILED}")
return False return False
else:
return True
# Pull new docker images # Pull new docker images
def __pull_images(self): def __pull_images(self):

View File

@ -10,6 +10,7 @@ import utils
from utils import _print from utils import _print
from models import Container from models import Container
from models import Log from models import Log
import backup
def upgrade(): def upgrade():
@ -35,7 +36,15 @@ def upgrade():
container: Container container: Container
for container in containers.values(): for container in containers.values():
# Start backup go_on = True
# Make a backup
if not utils.no_backup:
utils.keep_maintenance_mode = True
go_on = backup.backup()
if go_on:
# Make the upgrade
utils.keep_maintenance_mode = True if "--maintenance" in sys.argv else False
_print("----------------------------------------------") _print("----------------------------------------------")
_print(F"Start upgrade for {container.name} at {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") _print(F"Start upgrade for {container.name} at {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
result = container.upgrade() result = container.upgrade()

View File

@ -4,7 +4,10 @@ no_log = False
no_cleanup = False no_cleanup = False
all_containers = False all_containers = False
no_confirm = False no_confirm = False
no_backup = False
# intern Flags
keep_maintenance_mode = False
def set_flags(flags=list): def set_flags(flags=list):
@ -20,6 +23,7 @@ def set_flags(flags=list):
all_containers = "--all" in flags all_containers = "--all" in flags
no_cleanup = "--nocleanup" in flags no_cleanup = "--nocleanup" in flags
no_confirm = "--yes" in flags no_confirm = "--yes" in flags
no_backup = "--nobackup" in flags
def _print(text=None): def _print(text=None):