summaryrefslogtreecommitdiff
path: root/interface-definitions
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2023-06-14 13:36:39 +0000
committerViacheslav Hletenko <v.gletenko@vyos.io>2023-06-30 11:59:42 +0000
commita1f140c5a5eb18cb86465bc496349d093382dfef (patch)
treee3a0aca8132b09be5d965c3f784b15e28c887281 /interface-definitions
parent93724b596dab81d9a801bb5da7fd06933e293cae (diff)
downloadvyos-1x-a1f140c5a5eb18cb86465bc496349d093382dfef.tar.gz
vyos-1x-a1f140c5a5eb18cb86465bc496349d093382dfef.zip
T775: Add service config-sync between 2 routers
Service config-sync allows synchronizing a section of the configuration. As PoC allow only nat, nat66 and firewall sections Rertreive the configuration for a section from self node and send this configuration to the section of the 'secondary' node. This feature adds a symlink from helper 'vyos_config_sync.py' to '/config/scripts/commit/post-hooks.d' and config that is located in '/run/config_sync_conf.conf' It will synchronyze the config only if the setcion was changed. set service config-sync secondary address 192.0.2.11 set service config-sync secondary key xxx set service config-sync section nat set service config-sync section nat66 set service config-sync section firewall set service config-sync mode load
Diffstat (limited to 'interface-definitions')
-rw-r--r--interface-definitions/service-config-sync.xml.in104
1 files changed, 104 insertions, 0 deletions
diff --git a/interface-definitions/service-config-sync.xml.in b/interface-definitions/service-config-sync.xml.in
new file mode 100644
index 000000000..e804e17f7
--- /dev/null
+++ b/interface-definitions/service-config-sync.xml.in
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interfaceDefinition>
+ <node name="service">
+ <children>
+ <node name="config-sync" owner="${vyos_conf_scripts_dir}/service_config_sync.py">
+ <properties>
+ <help>Configuration synchronization</help>
+ </properties>
+ <children>
+ <node name="secondary">
+ <properties>
+ <help>Secondary server parameters</help>
+ </properties>
+ <children>
+ <leafNode name="address">
+ <properties>
+ <help>IP address</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address to match</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>IPv6 address to match</description>
+ </valueHelp>
+ <valueHelp>
+ <format>hostname</format>
+ <description>FQDN address to match</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ <validator name="ipv6-address"/>
+ <validator name="fqdn"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="timeout">
+ <properties>
+ <help>Connection API timeout</help>
+ <valueHelp>
+ <format>u32:1-300</format>
+ <description>Connection API timeout</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-300"/>
+ </constraint>
+ </properties>
+ <defaultValue>60</defaultValue>
+ </leafNode>
+ <leafNode name="key">
+ <properties>
+ <help>HTTP API key</help>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <leafNode name="mode">
+ <properties>
+ <help>Synchronization mode</help>
+ <completionHelp>
+ <list>load set</list>
+ </completionHelp>
+ <valueHelp>
+ <format>load</format>
+ <description>Load and replace configuration section</description>
+ </valueHelp>
+ <valueHelp>
+ <format>set</format>
+ <description>Set configuration section</description>
+ </valueHelp>
+ <constraint>
+ <regex>(load|set)</regex>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="section">
+ <properties>
+ <help>Section for synchronization</help>
+ <completionHelp>
+ <list>nat nat66 firewall</list>
+ </completionHelp>
+ <valueHelp>
+ <format>nat</format>
+ <description>NAT</description>
+ </valueHelp>
+ <valueHelp>
+ <format>nat66</format>
+ <description>NAT66</description>
+ </valueHelp>
+ <valueHelp>
+ <format>firewall</format>
+ <description>firewall</description>
+ </valueHelp>
+ <constraint>
+ <regex>(nat|nat66|firewall)</regex>
+ </constraint>
+ <multi/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </node>
+</interfaceDefinition>