diff options
author | Christian Hesse <mail@eworm.de> | 2020-03-12 08:40:29 +0100 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2020-03-12 08:40:29 +0100 |
commit | 98585afe1cc068203e5d713eb9965c930ac762de (patch) | |
tree | 9faee0f709c3f69b2456f561d3ea3f89191a14fb | |
parent | 63ed093340df70c79ecec21396d136a03d869eca (diff) |
add script 'global-wait'
Run this in schedulers that fire on startup without interval. Schedulers
should look something like this:
/ system scheduler {
add name=global-scripts on-event="/ system script { run global-config; run global-config-overlay; run global-functions; }" start-time=startup;
add name=bridge-port-to-default on-event="/ system script { run global-wait; run bridge-port-to-default; }" start-time=startup;
}
-rw-r--r-- | global-functions | 4 | ||||
-rw-r--r-- | global-wait | 11 | ||||
-rw-r--r-- | script-updates | 4 |
3 files changed, 17 insertions, 2 deletions
diff --git a/global-functions b/global-functions index be7a7ba..eda9ab6 100644 --- a/global-functions +++ b/global-functions @@ -9,6 +9,7 @@ :global ExpectedConfigVersion 13; # global variables not to be changed by user +:global GlobalFunctionsReady false; :global Identity [ / system identity get name ]; :global SentConfigChangesNotification "-"; :global SentLteFirmwareUpgradeNotification "-"; @@ -524,3 +525,6 @@ :delay 1s; } } + +# signal we are ready +:set GlobalFunctionsReady true; diff --git a/global-wait b/global-wait new file mode 100644 index 0000000..29d634d --- /dev/null +++ b/global-wait @@ -0,0 +1,11 @@ +#!rsc +# RouterOS script: global-wait +# Copyright (c) 2020 Christian Hesse <mail@eworm.de> +# +# wait for global-functions to finish + +:global GlobalFunctionsReady; + +:while ($GlobalFunctionsReady != true) do={ + :delay 500ms; +} diff --git a/script-updates b/script-updates index 6ecdd37..38165c9 100644 --- a/script-updates +++ b/script-updates @@ -36,9 +36,9 @@ :if ($SchedulerVal->"name" != "global-scripts" && \ $SchedulerVal->"start-time" = "startup" && \ $SchedulerVal->"interval" = 0s && \ - [ :pick ($SchedulerVal->"on-event") 0 7 ] != ":delay ") do={ + !(($SchedulerVal->"on-event") ~ "\\brun global-wait\\b")) do={ $LogPrintExit warning ("Scheduler " . $SchedulerVal->"name" . " starts on startup, " . \ - "without interval. Add delay to make sure the configuration is available!") false; + "without waiting for global-functions. Run 'global-wait' to avoid race conditions!") false; } } |