summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2025-05-28 14:53:38 -0500
committerJohn Estabrook <jestabro@vyos.io>2025-05-28 15:35:16 -0500
commitc8d4ef91d39216218a10d6e643bdb15a2530628c (patch)
tree4c0636190f0084b506524e0bb7d2ec6db07ff63e /src
parent0464fc0dd9c62beff242ec024086fb57947469c0 (diff)
downloadvyos-1x-c8d4ef91d39216218a10d6e643bdb15a2530628c.tar.gz
vyos-1x-c8d4ef91d39216218a10d6e643bdb15a2530628c.zip
http-api: T7498: allow passing config string in body of 'merge' request
Diffstat (limited to 'src')
-rw-r--r--src/services/api/rest/models.py2
-rw-r--r--src/services/api/rest/routers.py8
2 files changed, 7 insertions, 3 deletions
diff --git a/src/services/api/rest/models.py b/src/services/api/rest/models.py
index 9ca985a91..fa2d07d28 100644
--- a/src/services/api/rest/models.py
+++ b/src/services/api/rest/models.py
@@ -140,7 +140,7 @@ class ConfigFileModel(ApiModel):
json_schema_extra = {
'example': {
'key': 'id_key',
- 'op': 'save | load',
+ 'op': 'save | load | merge',
'file': 'filename',
'string': 'config_string'
}
diff --git a/src/services/api/rest/routers.py b/src/services/api/rest/routers.py
index 8679329da..fba08a65a 100644
--- a/src/services/api/rest/routers.py
+++ b/src/services/api/rest/routers.py
@@ -507,7 +507,7 @@ def config_file_op(data: ConfigFileModel, background_tasks: BackgroundTasks):
else:
path = '/config/config.boot'
msg = session.save_config(path)
- elif op == 'load':
+ elif op in ('load', 'merge'):
if data.file:
path = data.file
elif data.string:
@@ -517,7 +517,11 @@ def config_file_op(data: ConfigFileModel, background_tasks: BackgroundTasks):
else:
return error(400, 'Missing required field "file | string"')
- session.migrate_and_load_config(path)
+ match op:
+ case 'load':
+ session.migrate_and_load_config(path)
+ case 'merge':
+ session.merge_config(path)
config = Config(session_env=env)
d = get_config_diff(config)