diff --git a/press/agent.py b/press/agent.py index a0b05ea2d49..a971b81b27d 100644 --- a/press/agent.py +++ b/press/agent.py @@ -173,15 +173,21 @@ def reinstall_site(self, site): ) def restore_site(self, site: "Site", skip_failing_patches=False): + from press.utils import sanitize_config + site.check_space_on_server_for_restore() apps = [app.app for app in site.apps] - public_link, private_link, database_link = None, None, None + public_link, private_link, database_link, sanitized_config_content = None, None, None, None if site.remote_database_file: database_link = frappe.get_doc("Remote File", site.remote_database_file).download_link if site.remote_public_file: public_link = frappe.get_doc("Remote File", site.remote_public_file).download_link if site.remote_private_file: private_link = frappe.get_doc("Remote File", site.remote_private_file).download_link + if site.remote_config_file: + config_content = frappe.get_doc("Remote File", site.remote_config_file).get_content() + sanitized_config_content = sanitize_config(config_content) if config_content else None + sanitized_config_content.update({"maintenance_mode": 0}) if sanitized_config_content else None data = { "apps": apps, @@ -190,6 +196,7 @@ def restore_site(self, site: "Site", skip_failing_patches=False): "database": database_link, "public": public_link, "private": private_link, + "sanitized_config_content": sanitized_config_content, "skip_failing_patches": skip_failing_patches, "managed_database_config": self._get_managed_db_config(site), } diff --git a/press/press/doctype/site/site.py b/press/press/doctype/site/site.py index 6c8fa384976..172178a4a71 100644 --- a/press/press/doctype/site/site.py +++ b/press/press/doctype/site/site.py @@ -1156,6 +1156,9 @@ def restore_site(self, skip_failing_patches=False): ): raise Exception(f"Remote File {self.remote_database_file} is unavailable on S3") + if self.remote_database_file and not frappe.get_doc("Remote File", self.remote_config_file).exists(): + raise Exception(f"Remote File {self.remote_config_file} is unavailable on S3") + agent = Agent(self.server) job = agent.restore_site(self, skip_failing_patches=skip_failing_patches) log_site_activity(self.name, "Restore", job=job.name)