diff options
author | Christian Breunig <christian@breunig.cc> | 2024-03-16 09:46:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-16 09:46:53 +0100 |
commit | aea9bfb803c8943d289e939c9ec8185ffcc0985d (patch) | |
tree | a38c0270b953c61ff02da477b159d172cfce611e /src/helpers/vyos_config_sync.py | |
parent | 828e94d7cb67caf5a3b0e9c275ba067998874c5e (diff) | |
parent | 25b611f504521181f85cb4460bfdfd702c377b5e (diff) | |
download | vyos-1x-aea9bfb803c8943d289e939c9ec8185ffcc0985d.tar.gz vyos-1x-aea9bfb803c8943d289e939c9ec8185ffcc0985d.zip |
Merge pull request #3132 from sever-sever/T6121
T6121: Extend service config-sync to new sections
Diffstat (limited to 'src/helpers/vyos_config_sync.py')
-rwxr-xr-x | src/helpers/vyos_config_sync.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/helpers/vyos_config_sync.py b/src/helpers/vyos_config_sync.py index 7cfa8fe88..572fea61f 100755 --- a/src/helpers/vyos_config_sync.py +++ b/src/helpers/vyos_config_sync.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2023 VyOS maintainers and contributors +# Copyright (C) 2023-2024 VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as @@ -60,6 +60,7 @@ def post_request(url: str, return response + def retrieve_config(section: str = None) -> Optional[Dict[str, Any]]: """Retrieves the configuration from the local server. @@ -71,8 +72,6 @@ def retrieve_config(section: str = None) -> Optional[Dict[str, Any]]: """ if section is None: section = [] - else: - section = section.split() conf = Config() config = conf.get_config_dict(section, get_first_key=True) @@ -101,8 +100,6 @@ def set_remote_config( if path is None: path = [] - else: - path = path.split() headers = {'Content-Type': 'application/json'} # Disable the InsecureRequestWarning @@ -127,17 +124,16 @@ def set_remote_config( def is_section_revised(section: str) -> bool: from vyos.config_mgmt import is_node_revised - return is_node_revised([section]) + return is_node_revised(section) def config_sync(secondary_address: str, secondary_key: str, - sections: List[str], + sections: List[list], mode: str): """Retrieve a config section from primary router in JSON format and send it to secondary router """ - # Config sync only if sections changed if not any(map(is_section_revised, sections)): return @@ -188,5 +184,17 @@ if __name__ == '__main__': "Missing required configuration data for config synchronization.") exit(0) + # Generate list_sections of sections/subsections + # [ + # ['interfaces', 'pseudo-ethernet'], ['interfaces', 'virtual-ethernet'], ['nat'], ['nat66'] + # ] + list_sections = [] + for section, subsections in sections.items(): + if subsections: + for subsection in subsections: + list_sections.append([section, subsection]) + else: + list_sections.append([section]) + config_sync(secondary_address, secondary_key, - sections, mode) + list_sections, mode) |