From 816834bcad0a536930dd1bc4a35ef6b8537f3522 Mon Sep 17 00:00:00 2001 From: John Estabrook Date: Tue, 24 Jun 2025 07:11:41 -0500 Subject: T7499: use direct request to vyconfd to avoid re-validating --- python/vyos/vyconf_session.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'python') diff --git a/python/vyos/vyconf_session.py b/python/vyos/vyconf_session.py index 3f3f3957b..b42266793 100644 --- a/python/vyos/vyconf_session.py +++ b/python/vyos/vyconf_session.py @@ -188,6 +188,33 @@ class VyconfSession: return self.output(out), out.status + @raise_exception + @config_mode + def merge_config( + self, file: str, migrate: bool = False, destructive: bool = False + ) -> tuple[str, int]: + # pylint: disable=consider-using-with + if migrate: + tmp = tempfile.NamedTemporaryFile() + shutil.copy2(file, tmp.name) + config_migrate = ConfigMigrate(tmp.name) + try: + config_migrate.run() + except ConfigMigrateError as e: + tmp.close() + return repr(e), 1 + file = tmp.name + else: + tmp = '' + + out = vyconf_client.send_request( + 'merge', token=self.__token, location=file, destructive=destructive + ) + if tmp: + tmp.close() + + return self.output(out), out.status + @raise_exception def save_config(self, file: str, append_version: bool = False) -> tuple[str, int]: out = vyconf_client.send_request('save', token=self.__token, location=file) -- cgit v1.2.3