From 47dd35c6e4071519e4b9dfbb6067fc1ec0c171e5 Mon Sep 17 00:00:00 2001 From: Davide Principi Date: Wed, 10 Apr 2024 18:34:19 +0200 Subject: [PATCH] Fix backup/restore procedure - Restore the "active from" timestamp - Add to the backup and restore the "active to" timestamp --- imageroot/actions/restore-module/06copyenv | 29 +++++++++------------- imageroot/bin/module-cleanup-state | 13 ++++++++++ imageroot/bin/module-dump-state | 14 +++++++++++ imageroot/etc/state-include.conf | 1 + 4 files changed, 40 insertions(+), 17 deletions(-) create mode 100755 imageroot/bin/module-cleanup-state create mode 100755 imageroot/bin/module-dump-state diff --git a/imageroot/actions/restore-module/06copyenv b/imageroot/actions/restore-module/06copyenv index f861062..5b5b427 100755 --- a/imageroot/actions/restore-module/06copyenv +++ b/imageroot/actions/restore-module/06copyenv @@ -1,23 +1,8 @@ #!/usr/bin/env python3 # -# Copyright (C) 2022 Nethesis S.r.l. -# http://www.nethesis.it - nethserver@nethesis.it -# -# This script is part of NethServer. -# -# NethServer is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, -# or any later version. -# -# NethServer is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with NethServer. If not, see COPYING. +# Copyright (C) 2024 Nethesis S.r.l. +# SPDX-License-Identifier: GPL-3.0-or-later # import sys @@ -33,5 +18,15 @@ for evar in [ "LOKI_API_AUTH_PASSWORD", "LOKI_LOGS_INGRESS_TOKEN", "LOKI_RETENTION_PERIOD", + "LOKI_ACTIVE_FROM", ]: agent.set_env(evar, original_environment[evar]) + +try: + backup_env = agent.read_envfile("backup.env") +except: + backup_env = {} + +# If available, restore the backup approximate timestamp +if "LOKI_ACTIVE_TO" in backup_env: + agent.set_env("LOKI_ACTIVE_TO", backup_env["LOKI_ACTIVE_TO"]) diff --git a/imageroot/bin/module-cleanup-state b/imageroot/bin/module-cleanup-state new file mode 100755 index 0000000..427c2c9 --- /dev/null +++ b/imageroot/bin/module-cleanup-state @@ -0,0 +1,13 @@ +#!/bin/bash + +# +# Copyright (C) 2024 Nethesis S.r.l. +# SPDX-License-Identifier: GPL-3.0-or-later +# + +set -e + +# Redirect any output to the journal (stderr) +exec 1>&2 + +rm -vf backup.env \ No newline at end of file diff --git a/imageroot/bin/module-dump-state b/imageroot/bin/module-dump-state new file mode 100755 index 0000000..e121ae1 --- /dev/null +++ b/imageroot/bin/module-dump-state @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 + +# +# Copyright (C) 2024 Nethesis S.r.l. +# SPDX-License-Identifier: GPL-3.0-or-later +# + +import json +import sys +import agent + +agent.write_envfile("backup.env", { + 'LOKI_ACTIVE_TO': datetime.datetime.now().astimezone().isoformat(), +}) \ No newline at end of file diff --git a/imageroot/etc/state-include.conf b/imageroot/etc/state-include.conf index 2034dab..cab3688 100644 --- a/imageroot/etc/state-include.conf +++ b/imageroot/etc/state-include.conf @@ -1 +1,2 @@ volumes/loki-server-data +state/backup.env