diff options
author | John Estabrook <jestabro@vyos.io> | 2025-06-23 19:24:08 -0500 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2025-07-08 08:26:11 -0500 |
commit | 170244db88f76e42aeceb0b971246327fe079e19 (patch) | |
tree | d74e806635f1c98b9730df4c6ac9f18f57f4fd31 | |
parent | 8af85206e172b2c50514df9990ea6061f72a1ed5 (diff) | |
download | vyos-1x-170244db88f76e42aeceb0b971246327fe079e19.tar.gz vyos-1x-170244db88f76e42aeceb0b971246327fe079e19.zip |
T7499: expose destructive merge in http-api
-rw-r--r-- | python/vyos/configsession.py | 8 | ||||
-rw-r--r-- | src/services/api/rest/models.py | 1 | ||||
-rw-r--r-- | src/services/api/rest/routers.py | 2 |
3 files changed, 5 insertions, 6 deletions
diff --git a/python/vyos/configsession.py b/python/vyos/configsession.py index 216069992..175b40260 100644 --- a/python/vyos/configsession.py +++ b/python/vyos/configsession.py @@ -363,11 +363,9 @@ class ConfigSession(object): return out - def merge_config(self, file_path): - if self._vyconf_session is None: - out = self.__run_command(MERGE_CONFIG + [file_path]) - else: - out = 'unimplemented' + def merge_config(self, file_path, destructive=False): + destr = ['--destructive'] if destructive else [] + out = self.__run_command(MERGE_CONFIG + [file_path] + destr) return out diff --git a/src/services/api/rest/models.py b/src/services/api/rest/models.py index 7a61ddfd1..70fab03ec 100644 --- a/src/services/api/rest/models.py +++ b/src/services/api/rest/models.py @@ -143,6 +143,7 @@ class ConfigFileModel(ApiModel): file: StrictStr = None string: StrictStr = None confirm_time: StrictInt = 0 + destructive: bool = False class Config: json_schema_extra = { diff --git a/src/services/api/rest/routers.py b/src/services/api/rest/routers.py index 48eca8f15..329d6e51f 100644 --- a/src/services/api/rest/routers.py +++ b/src/services/api/rest/routers.py @@ -597,7 +597,7 @@ async def config_file_op(data: ConfigFileModel, background_tasks: BackgroundTask case 'load': session.migrate_and_load_config(path) case 'merge': - session.merge_config(path) + session.merge_config(path, destructive=data.destructive) config = Config(session_env=env) d = get_config_diff(config) |