diff options
-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) |