From 944d01ab1981740c078dd8dd2d67400bfd53dd59 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 16 Jan 2023 11:20:15 -0500 Subject: [PATCH 1/5] Fix schedule restores --- app/classes/controllers/management_controller.py | 10 +++++++++- app/classes/web/ajax_handler.py | 11 ++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/classes/controllers/management_controller.py b/app/classes/controllers/management_controller.py index 47860fe1..e1b4d8da 100644 --- a/app/classes/controllers/management_controller.py +++ b/app/classes/controllers/management_controller.py @@ -78,6 +78,10 @@ class ManagementController: command, name, enabled=True, + one_time=False, + cron_string="* * * * *", + parent=None, + delay=0, ): return HelpersManagement.create_scheduled_task( server_id, @@ -87,7 +91,11 @@ class ManagementController: start_time, command, name, - enabled, + enabled=True, + one_time=False, + cron_string="* * * * *", + parent=None, + delay=0, ) @staticmethod diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index cdd67146..0428410f 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -440,15 +440,8 @@ class AjaxHandler(BaseHandler): for schedule in self.controller.management.get_schedules_by_server( server_id ): - self.controller.management.create_scheduled_task( - new_server_id, - schedule.action, - schedule.interval, - schedule.interval_type, - schedule.start_time, - schedule.command, - schedule.name, - schedule.enabled, + self.tasks_manager.update_job( + schedule.schedule_id, {"server_id": new_server_id} ) # preserve execution command new_server_obj = self.controller.servers.get_server_obj( From 1802a7e7ef3a49340aaa13c0cd1303d8b99a1728 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 16 Jan 2023 14:15:45 -0500 Subject: [PATCH 2/5] Add backup preservation Add update job to bedrock --- app/classes/web/ajax_handler.py | 59 ++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index 0428410f..e311cc91 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -449,6 +449,30 @@ class AjaxHandler(BaseHandler): ) new_server_obj.execution_command = server_data["execution_command"] self.controller.servers.update_server(new_server_obj) + + # preserve backup config + backup_config = self.controller.management.get_backup_config( + server_id + ) + excluded_dirs = [] + server_obj = self.controller.servers.get_server_obj(server_id) + loop_backup_path = self.helper.wtol_path(server_obj.path) + for item in self.controller.management.get_excluded_backup_dirs( + server_id + ): + item_path = self.helper.wtol_path(item) + bu_path = os.path.relpath(item_path, loop_backup_path) + bu_path = os.path.join(new_server_obj.path, bu_path) + print(bu_path) + excluded_dirs.append(bu_path) + self.controller.management.set_backup_config( + new_server_id, + new_server_obj.backup_path, + backup_config["max_backups"], + excluded_dirs, + backup_config["compress"], + backup_config["shutdown"], + ) # remove old server's tasks try: self.tasks_manager.remove_all_server_tasks(server_id) @@ -477,15 +501,8 @@ class AjaxHandler(BaseHandler): for schedule in self.controller.management.get_schedules_by_server( server_id ): - self.controller.management.create_scheduled_task( - new_server_id, - schedule.action, - schedule.interval, - schedule.interval_type, - schedule.start_time, - schedule.command, - schedule.name, - schedule.enabled, + self.tasks_manager.update_job( + schedule.schedule_id, {"server_id": new_server_id} ) # preserve execution command new_server_obj = self.controller.servers.get_server_obj( @@ -493,6 +510,30 @@ class AjaxHandler(BaseHandler): ) new_server_obj.execution_command = server_data["execution_command"] self.controller.servers.update_server(new_server_obj) + + # preserve backup config + backup_config = self.controller.management.get_backup_config( + server_id + ) + excluded_dirs = [] + server_obj = self.controller.servers.get_server_obj(server_id) + loop_backup_path = self.helper.wtol_path(server_obj.path) + for item in self.controller.management.get_excluded_backup_dirs( + server_id + ): + item_path = self.helper.wtol_path(item) + bu_path = os.path.relpath(item_path, loop_backup_path) + bu_path = os.path.join(new_server_obj.path, bu_path) + print(bu_path) + excluded_dirs.append(bu_path) + self.controller.management.set_backup_config( + new_server_id, + new_server_obj.backup_path, + backup_config["max_backups"], + excluded_dirs, + backup_config["compress"], + backup_config["shutdown"], + ) try: self.tasks_manager.remove_all_server_tasks(server_id) except: From 2e25ed84c5cb3965a7917a26ea4ae075505ed2fa Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 16 Jan 2023 14:30:55 -0500 Subject: [PATCH 3/5] Remove print statements --- app/classes/web/ajax_handler.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index e311cc91..82be1fb6 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -463,7 +463,6 @@ class AjaxHandler(BaseHandler): item_path = self.helper.wtol_path(item) bu_path = os.path.relpath(item_path, loop_backup_path) bu_path = os.path.join(new_server_obj.path, bu_path) - print(bu_path) excluded_dirs.append(bu_path) self.controller.management.set_backup_config( new_server_id, @@ -524,7 +523,6 @@ class AjaxHandler(BaseHandler): item_path = self.helper.wtol_path(item) bu_path = os.path.relpath(item_path, loop_backup_path) bu_path = os.path.join(new_server_obj.path, bu_path) - print(bu_path) excluded_dirs.append(bu_path) self.controller.management.set_backup_config( new_server_id, From ede865bf332b2975c41774d11a2baa540c6a09cb Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 16 Jan 2023 15:16:43 -0500 Subject: [PATCH 4/5] Appease the linter and fix stinky code --- app/classes/controllers/management_controller.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/classes/controllers/management_controller.py b/app/classes/controllers/management_controller.py index e1b4d8da..0a1701e3 100644 --- a/app/classes/controllers/management_controller.py +++ b/app/classes/controllers/management_controller.py @@ -91,11 +91,11 @@ class ManagementController: start_time, command, name, - enabled=True, - one_time=False, - cron_string="* * * * *", - parent=None, - delay=0, + enabled, + one_time, + cron_string, + parent, + delay, ) @staticmethod From f582c295427b3fde67c8af7d620c4468223fd6eb Mon Sep 17 00:00:00 2001 From: Zedifus Date: Fri, 27 Jan 2023 19:07:22 +0000 Subject: [PATCH 5/5] Update changelog !533 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1be6c3e..7749bff5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ TBD ### Bug fixes - Fix local java server imports. ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/529)) +- Fix Schedule Restore | Add Backup Config Preservation. ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/533)) ### Tweaks - Added further login screen customisation settings. ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/531)) ### Lang