summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)