diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/conf_mode/system_ip.py | 5 | ||||
-rw-r--r-- | src/services/api/rest/models.py | 4 | ||||
-rw-r--r-- | src/services/api/rest/routers.py | 14 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/conf_mode/system_ip.py b/src/conf_mode/system_ip.py index 7f3796168..7f8b00ceb 100755 --- a/src/conf_mode/system_ip.py +++ b/src/conf_mode/system_ip.py @@ -53,6 +53,11 @@ def verify(config_dict): for protocol, protocol_options in opt['protocol'].items(): if 'route_map' in protocol_options: verify_route_map(protocol_options['route_map'], opt) + + if dict_search('import_table', opt): + for table_num, import_config in opt['import_table'].items(): + if dict_search('route_map', import_config): + verify_route_map(import_config['route_map'], opt) return def generate(config_dict): diff --git a/src/services/api/rest/models.py b/src/services/api/rest/models.py index da60e1220..47c7a65b3 100644 --- a/src/services/api/rest/models.py +++ b/src/services/api/rest/models.py @@ -134,13 +134,15 @@ class RetrieveModel(ApiModel): class ConfigFileModel(ApiModel): op: StrictStr file: StrictStr = None + string: StrictStr = None class Config: 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 d3df91ef5..4866ec5d8 100644 --- a/src/services/api/rest/routers.py +++ b/src/services/api/rest/routers.py @@ -508,13 +508,21 @@ 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: + path = '/tmp/config.file' + with open(path, 'w') as f: + f.write(data.string) else: - return error(400, 'Missing required field "file"') + 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) |