summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2025-06-23 19:24:08 -0500
committerJohn Estabrook <jestabro@vyos.io>2025-07-08 08:26:11 -0500
commit170244db88f76e42aeceb0b971246327fe079e19 (patch)
treed74e806635f1c98b9730df4c6ac9f18f57f4fd31
parent8af85206e172b2c50514df9990ea6061f72a1ed5 (diff)
downloadvyos-1x-170244db88f76e42aeceb0b971246327fe079e19.tar.gz
vyos-1x-170244db88f76e42aeceb0b971246327fe079e19.zip
T7499: expose destructive merge in http-api
-rw-r--r--python/vyos/configsession.py8
-rw-r--r--src/services/api/rest/models.py1
-rw-r--r--src/services/api/rest/routers.py2
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)