keepalived: add support for directory sync

This commit adds support for folder synchronization.
An example is in the 810-files file where it is explained how to
synchronize all hotplug files of keepalived.

Signed-off-by: Francesco Benini <francy.benini@gmail.com>
This commit is contained in:
Francesco Benini
2025-02-01 23:13:22 +01:00
committed by Florian Eckert
parent 8eecd2e5a0
commit 7c58cd667b
4 changed files with 19 additions and 6 deletions

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=keepalived
PKG_VERSION:=2.3.1
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.keepalived.org/software

View File

@@ -15,4 +15,7 @@ add_sync_file /etc/shinit
add_sync_file /etc/sysctl.conf
add_sync_file /tmp/dhcp.leases
# uncomment the following line and add /etc/hotplug.d/keepalived to sysupgrade.conf or keepalived configuration in order to enable hotplug scripts sync
# add_sync_file /etc/hotplug.d/keepalived
keepalived_hotplug

View File

@@ -82,6 +82,17 @@ is_sync_file() {
list_contains SYNC_FILES_LIST "$1"
}
is_sync_file_in_folder() {
local f="$1"
while [ "$f" != "" ]; do
f="${f%/*}"
if list_contains SYNC_FILES_LIST "$f"; then
return 0
fi
done
return 1
}
_set_update_target() {
set_var UPDATE_TARGET "${1:-1}"
}
@@ -227,7 +238,7 @@ _notify_sync() {
return
fi
is_sync_file "$RSYNC_TARGET" || return
is_sync_file "$RSYNC_TARGET" || is_sync_file_in_folder "$RSYNC_TARGET" || return
if ! cp -a "$RSYNC_SOURCE" "$RSYNC_TARGET"; then
log_err "can not copy $RSYNC_SOURCE => $RSYNC_TARGET"

View File

@@ -44,11 +44,10 @@ ha_sync_send() {
config_get sync_list "$cfg" sync_list
for sync_file in $sync_list $(sysupgrade -l); do
[ -f "$sync_file" ] && {
dir="${sync_file%/*}"
list_contains files_list "${sync_file}" || append files_list "${sync_file}"
}
[ -f "$sync_file" ] && dir="${sync_file%/*}"
[ -d "$sync_file" ] && dir="${sync_file}"
list_contains files_list "${sync_file}" || append files_list "${sync_file}"
list_contains dirs_list "${sync_dir}${dir}" || append dirs_list "${sync_dir}${dir}"
done