From 5f0f4ed6cec01e9eb845e242a81c70716e72628e Mon Sep 17 00:00:00 2001 From: regdocs <55305804+regdocs@users.noreply.github.com> Date: Fri, 15 May 2026 13:30:17 +0530 Subject: [PATCH 1/2] fix(restore-with-files): Include site config as part of restore --- agent/bench.py | 4 +++- agent/site.py | 11 ++++++++++- agent/web.py | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/agent/bench.py b/agent/bench.py index 50a8a77a..dcdd483c 100644 --- a/agent/bench.py +++ b/agent/bench.py @@ -447,7 +447,7 @@ def bench_archive_site(self, name, mariadb_root_password, force): self.drop_mariadb_user(name, mariadb_root_password, site_database) @step("Download Backup Files") - def download_files(self, name, database_url, public_url, private_url): + def download_files(self, name, database_url, public_url, private_url, config_url): download_directory = os.path.join(self.sites_directory, "downloads") if not os.path.exists(download_directory): os.mkdir(download_directory) @@ -455,11 +455,13 @@ def download_files(self, name, database_url, public_url, private_url): database_file = download_file(database_url, prefix=directory) if database_url else "" private_file = download_file(private_url, prefix=directory) if private_url else "" public_file = download_file(public_url, prefix=directory) if public_url else "" + config_file = download_file(config_url, prefix=directory) if config_url else "" return { "directory": directory, "database": database_file, "private": private_file, "public": public_file, + "config": config_file, } @step("Delete Downloaded Backup Files") diff --git a/agent/site.py b/agent/site.py index b6d21f19..f6d349d2 100644 --- a/agent/site.py +++ b/agent/site.py @@ -198,9 +198,10 @@ def restore_job( database, public, private, + config, skip_failing_patches, ): - files = self.bench.download_files(self.name, database, public, private) + files = self.bench.download_files(self.name, database, public, private, config) is_database_restoration_required = False try: if files["database"]: @@ -212,6 +213,14 @@ def restore_job( files["public"], files["private"], ) + + if not files.get("config"): + self.update_config() + else: + sites_directory = self.bench.sites_directory + site_config_path = files["config"].replace(sites_directory, "/home/frappe/frappe-bench/sites") + with open(site_config_path) as f: + self.update_config(f.read()) else: self.restore_files( public_file=files["public"], diff --git a/agent/web.py b/agent/web.py index 7f6170b2..3f34efad 100644 --- a/agent/web.py +++ b/agent/web.py @@ -611,6 +611,7 @@ def restore_site(bench, site): data["database"], data.get("public"), data.get("private"), + data.get("config"), data.get("skip_failing_patches", False), ) ) From e64d1d4bac020cf5a5a17fb9104d2b166bd20015 Mon Sep 17 00:00:00 2001 From: regdocs <55305804+regdocs@users.noreply.github.com> Date: Fri, 15 May 2026 13:59:47 +0530 Subject: [PATCH 2/2] fix(restore-with-files): Receive sanitized site config --- agent/bench.py | 4 +--- agent/site.py | 13 +++++-------- agent/web.py | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/agent/bench.py b/agent/bench.py index dcdd483c..50a8a77a 100644 --- a/agent/bench.py +++ b/agent/bench.py @@ -447,7 +447,7 @@ def bench_archive_site(self, name, mariadb_root_password, force): self.drop_mariadb_user(name, mariadb_root_password, site_database) @step("Download Backup Files") - def download_files(self, name, database_url, public_url, private_url, config_url): + def download_files(self, name, database_url, public_url, private_url): download_directory = os.path.join(self.sites_directory, "downloads") if not os.path.exists(download_directory): os.mkdir(download_directory) @@ -455,13 +455,11 @@ def download_files(self, name, database_url, public_url, private_url, config_url database_file = download_file(database_url, prefix=directory) if database_url else "" private_file = download_file(private_url, prefix=directory) if private_url else "" public_file = download_file(public_url, prefix=directory) if public_url else "" - config_file = download_file(config_url, prefix=directory) if config_url else "" return { "directory": directory, "database": database_file, "private": private_file, "public": public_file, - "config": config_file, } @step("Delete Downloaded Backup Files") diff --git a/agent/site.py b/agent/site.py index f6d349d2..c9e88e2e 100644 --- a/agent/site.py +++ b/agent/site.py @@ -198,10 +198,10 @@ def restore_job( database, public, private, - config, + sanitized_config_content, skip_failing_patches, ): - files = self.bench.download_files(self.name, database, public, private, config) + files = self.bench.download_files(self.name, database, public, private) is_database_restoration_required = False try: if files["database"]: @@ -213,14 +213,11 @@ def restore_job( files["public"], files["private"], ) - - if not files.get("config"): + + if not sanitized_config_content: self.update_config() else: - sites_directory = self.bench.sites_directory - site_config_path = files["config"].replace(sites_directory, "/home/frappe/frappe-bench/sites") - with open(site_config_path) as f: - self.update_config(f.read()) + self.update_config(sanitized_config_content) else: self.restore_files( public_file=files["public"], diff --git a/agent/web.py b/agent/web.py index 3f34efad..6caaf19b 100644 --- a/agent/web.py +++ b/agent/web.py @@ -611,7 +611,7 @@ def restore_site(bench, site): data["database"], data.get("public"), data.get("private"), - data.get("config"), + data.get("sanitized_config_content"), data.get("skip_failing_patches", False), ) )