bbfdm/libbbfdm-api/scripts/bbf.config
Amin Ben Romdhane 73356e08a4 Introduce a new ubus obj 'bbf.config' to commit/revert uci config/dmmap changes and restart the required services
- Delete dmmap commit from Get Value/Get Name/ Get Instances methods
- dmmap changes can only be committed if restart_services is set to true during transaction commit
2024-04-23 17:15:03 +00:00

72 lines
1.7 KiB
Bash
Executable file

#!/bin/sh
. /usr/share/libubox/jshn.sh
BBFDM_DMMAP_CONFIG="/etc/bbfdm/dmmap"
BBFDM_DMMAP_SAVEDIR="/tmp/.bbfdm"
check_result() {
local res="$1"
local service="$2"
local action="$3"
if [ "${res}" -ne 0 ]; then
echo "{ \"error\": \"Failed to ${action} ${service} service\" }"
exit "${res}"
fi
}
apply_config_changes() {
local service="$1"
local action="$3"
# Check if either service or action is empty
if [ -z "$service" ] || [ -z "$action" ]; then
return
fi
logger -t bbf.config -p info "Applying $action configuration for service: $service"
# Commit/Revert config changes
ubus -t 1 call uci ${action} "{'config': '${service}'}"
check_result "$?" "${service}" "${action}"
}
case "$1" in
list)
echo '{ "commit": { "services": [] }, "revert": { "services": [] } }'
;;
call)
# Read input JSON from standard input
read -r input
# Parse input JSON
json_load "${input}"
# Check if 'services' array is provided
json_get_type type "services"
if [ -z "${type}" ]; then
echo '{ "error": "Services array should be defined !!!" }'
exit 1
fi
# Check if 'services' is array
if [ "${type}" != "array" ]; then
echo '{ "error": "Services argument should be array of strings !!!" }'
exit 1
fi
# Iterate over each service and apply config changes
json_for_each_item "apply_config_changes" "services" "$2"
# Commit/Revert bbfdm dmmap config changes
for file in "${BBFDM_DMMAP_CONFIG}"/*; do
file_name=$(basename "${file}")
logger -t bbf.config -p info "Applying $2 configuration for file: $file_name"
uci -q -c "${BBFDM_DMMAP_CONFIG}" -t "${BBFDM_DMMAP_SAVEDIR}" "$2" "${file_name}"
check_result "$?" "${file_name}" "$2"
done
echo '{ "status": "ok" }'
;;
esac