Skip to content

Commit 9a77a8a

Browse files
committed
Add jitter to auto-update, as well as simple CLI tool
1 parent 9d1c1e0 commit 9a77a8a

File tree

4 files changed

+64
-2
lines changed

4 files changed

+64
-2
lines changed

bin/get-node-status

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ echo "Voi Swarm Docker status:"
9797
echo "**************"
9898
swarm_running_image=$(docker inspect --format='{{.Image}}' "${container_id}" | cut -d':' -f2)
9999
echo "Running container image (sha256): ${swarm_running_image}"
100+
echo "Auto-update enabled: $(awk -F'=' '/swarm.cronjob.enable=/ {print $2}' "${HOME}"/voi/docker/compose.yml)"
101+
echo "Auto-update schedule (cron format): $(awk -F'=' '/swarm.cronjob.schedule=/ {print $2}' "${HOME}"/voi/docker/compose.yml)"
100102
echo ""
101103

102104
echo "AVM version:"

bin/set-autoupdate

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
echo "Enable/Disable autoupdate for your node"
4+
echo ""
5+
echo "To enable autoupdate use: set-autoupdate true"
6+
echo "To disable autoupdate use: set-autoupdate false"
7+
echo ""
8+
9+
if [[ -z $1 ]]; then
10+
echo "Please provide a value for autoupdate"
11+
exit 1
12+
fi
13+
14+
if [[ $1 != "true" && $1 != "false" ]]; then
15+
echo "Invalid value for autoupdate. Please use 'true' or 'false'."
16+
exit 1
17+
fi
18+
19+
VOINETWORK_PROFILE=$(cat "${HOME}/voi/profile")
20+
21+
if [[ ${VOINETWORK_PROFILE} == "relay" ]]; then
22+
docker_filename="${HOME}/voi/docker/relay.yml"
23+
else
24+
docker_filename="${HOME}/voi/docker/compose.yml"
25+
fi
26+
27+
echo "Setting autoupdate to $1 in ${docker_filename}"
28+
sed -i -E "s|(swarm.cronjob.enable=).*|\1$1|" "${docker_filename}"

docker/relay.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ services:
5151
restart_policy:
5252
condition: none
5353
labels:
54-
- swarm.cronjob.enable=false
54+
- swarm.cronjob.enable=true
5555
- swarm.cronjob.schedule=0 */4 * * *
5656
- swarm.cronjob.skip-running=true
5757
placement:

install.sh

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ start_stack() {
105105
docker_file="${voi_home}/docker/compose.yml"
106106

107107
if [[ ${VOINETWORK_PROFILE} == "relay" ]]; then
108-
echo "Starting relay node stack"
109108
docker_file="${voi_home}/docker/relay.yml"
110109
fi
111110
command="env VOINETWORK_TELEMETRY_NAME=$VOINETWORK_TELEMETRY_NAME docker stack deploy -c ${docker_file}"
@@ -767,6 +766,37 @@ set_profile() {
767766
display_banner "Setting up Voi Swarm using profile: ${VOINETWORK_PROFILE}"
768767
}
769768

769+
preserve_autoupdate() {
770+
echo "Preserving autoupdate settings..."
771+
if [[ ${VOINETWORK_PROFILE} == "relay" ]]; then
772+
docker_filename="${voi_home}/docker/relay.yml"
773+
else
774+
docker_filename="${voi_home}/docker/compose.yml"
775+
fi
776+
777+
autoupdate_state=$(awk -F'=' '/swarm.cronjob.enable=/ {print $2}' "${HOME}"/voi/docker/compose.yml)
778+
779+
if [[ ${autoupdate_state} == "false" ]]; then
780+
sed -i -E "s/(swarm.cronjob.enable=).*/\1false" "${docker_filename}"
781+
fi
782+
}
783+
784+
add_update_jitter() {
785+
echo "Add jitter to autoupdate schedule..."
786+
if [[ ${VOINETWORK_PROFILE} == "relay" ]]; then
787+
schedule_filename="${voi_home}/docker/relay.yml"
788+
else
789+
schedule_filename="${voi_home}/docker/compose.yml"
790+
fi
791+
792+
random_minute=$(( RANDOM % 60 ))
793+
# Generate a random number between 0 and 2, and add +1 to shift the range to 1-3
794+
random_hour=$(( RANDOM % 3 + 1 ))
795+
796+
new_cron_schedule="swarm.cronjob.schedule=${random_minute} */${random_hour} * * *"
797+
sed -i -E "s|(swarm.cronjob.schedule=).*|\1${new_cron_schedule}|" "${schedule_filename}"
798+
}
799+
770800
if [ -z "${BASH_VERSION:-}" ]; then
771801
abort "Bash is required to interpret this script."
772802
fi
@@ -868,6 +898,8 @@ rm "${voi_home}"/voi-swarm.tar.gz
868898

869899
cleanup_deprecated_files_and_folders
870900

901+
add_update_jitter
902+
871903
start_stack
872904

873905
wait_for_stack_to_be_ready

0 commit comments

Comments
 (0)