diff --git a/packages/shared-state-async/README.adoc b/packages/shared-state-async/README.adoc index 6d7535708..3359017c7 100644 --- a/packages/shared-state-async/README.adoc +++ b/packages/shared-state-async/README.adoc @@ -47,3 +47,24 @@ https://openwrt.org/docs/guide-developer/gdb VoCore2: Develop for OpenWrt on Qt Creator https://vonger.cn/?p=14657 +=== Plugin related notes +Plugins must be registered into shared-state-async by using the config file. UCI infrastructure is preferred + +[source,console] +-------------------------------------------------------------------------------- +mSc="plugin_name" + +uci set shared-state.${mSc}=dataType +uci set shared-state.${mSc}.name='plugin-name' +uci set shared-state.${mSc}.scope='community' +uci set shared-state.${mSc}.ttl='1200' +uci set shared-state.${mSc}.update_interval='120' +uci commit shared-state +-------------------------------------------------------------------------------- + +Publishers must be located at +/usr/share/shared-state/publishers+ +All Publishers will be called at least once using shared-state-async-publish-all + +Sync is called automatically by shared-state-async according to "update_interval" parameter +"ttl" stands for "time to live" and will decrease until 0. +Data contents will be erased if "ttl" reaches 0. diff --git a/packages/shared-state-async/files/etc/init.d/shared-state-async b/packages/shared-state-async/files/etc/init.d/shared-state-async index c8949a51d..d99d2bf4f 100755 --- a/packages/shared-state-async/files/etc/init.d/shared-state-async +++ b/packages/shared-state-async/files/etc/init.d/shared-state-async @@ -31,4 +31,7 @@ start_service() procd_set_param stderr 1 procd_set_param term_timeout 10 procd_close_instance + + #wait 10 secconds in detached mode and call publishres + ((sleep 10; shared-state-async-publish-all)&) } diff --git a/packages/shared-state-async/files/etc/uci-defaults/shared-state-publish-all-cron b/packages/shared-state-async/files/etc/uci-defaults/shared-state-publish-all-cron new file mode 100755 index 000000000..5f9183c2a --- /dev/null +++ b/packages/shared-state-async/files/etc/uci-defaults/shared-state-publish-all-cron @@ -0,0 +1,10 @@ +#!/bin/sh + +unique_append() +{ + grep -qF "$1" "$2" || echo "$1" >> "$2" +} + +unique_append \ + '*/30 * * * * ((sleep $(($RANDOM % 120)); shared-state-async-publish-all &> /dev/null)&)' \ + /etc/crontabs/root diff --git a/packages/shared-state-async/files/usr/bin/shared-state-async-publish-all b/packages/shared-state-async/files/usr/bin/shared-state-async-publish-all new file mode 100755 index 000000000..651f8685b --- /dev/null +++ b/packages/shared-state-async/files/usr/bin/shared-state-async-publish-all @@ -0,0 +1,5 @@ +#!/bin/sh + +for publisher in /usr/share/shared-state/publishers/* ; do + [ -x "$publisher" ] && "$publisher"; +done diff --git a/packages/shared-state-babel_links_info/files/etc/shared-state/publishers/shared-state-publish_babel_links_info b/packages/shared-state-babel_links_info/files/etc/shared-state/publishers/shared-state-publish_babel_links_info deleted file mode 120000 index c11b29137..000000000 --- a/packages/shared-state-babel_links_info/files/etc/shared-state/publishers/shared-state-publish_babel_links_info +++ /dev/null @@ -1 +0,0 @@ -../../../usr/bin/shared-state-publish_babel_links_info \ No newline at end of file diff --git a/packages/shared-state-babel_links_info/files/etc/uci-defaults/shared-state_babel_links_info b/packages/shared-state-babel_links_info/files/etc/uci-defaults/shared-state_babel_links_info index 599d8cf9b..372624d4a 100755 --- a/packages/shared-state-babel_links_info/files/etc/uci-defaults/shared-state_babel_links_info +++ b/packages/shared-state-babel_links_info/files/etc/uci-defaults/shared-state_babel_links_info @@ -12,6 +12,3 @@ uci set shared-state.babel_links_info.ttl='2400' uci set shared-state.babel_links_info.update_interval='30' uci commit shared-state -unique_append \ - '*/30 * * * * ((sleep $(($RANDOM % 120)); shared-state-publish_babel_links_info &> /dev/null)&)' \ - /etc/crontabs/root diff --git a/packages/shared-state-babel_links_info/files/usr/bin/shared-state-publish_babel_links_info b/packages/shared-state-babel_links_info/files/usr/share/shared-state/publishers/shared-state-publish_babel_links_info similarity index 100% rename from packages/shared-state-babel_links_info/files/usr/bin/shared-state-publish_babel_links_info rename to packages/shared-state-babel_links_info/files/usr/share/shared-state/publishers/shared-state-publish_babel_links_info diff --git a/packages/shared-state-babel_links_info/tests/test_shared-state-babel_links_info.lua b/packages/shared-state-babel_links_info/tests/test_shared-state-babel_links_info.lua index 0ea931008..5dff885fa 100644 --- a/packages/shared-state-babel_links_info/tests/test_shared-state-babel_links_info.lua +++ b/packages/shared-state-babel_links_info/tests/test_shared-state-babel_links_info.lua @@ -27,7 +27,7 @@ describe('Tests network_nodes #network_nodes', function() end) it('a simple test to get babel info and assert requiered fields are present', function() - package.path = package.path .. ";packages/shared-state-babel_links_info/files/usr/bin/?;;" + package.path = package.path .. ";packages/shared-state-babel_links_info/files/usr/share/shared-state/publishers/?;;" require("shared-state-publish_babel_links_info") babelinfo = get_babel_links_info() diff --git a/packages/shared-state-bat_hosts/files/etc/hotplug.d/iface/shared-state-bat_hosts.sh b/packages/shared-state-bat_hosts/files/etc/hotplug.d/iface/shared-state-bat_hosts.sh index 7ed4a9666..40ab79aa9 100755 --- a/packages/shared-state-bat_hosts/files/etc/hotplug.d/iface/shared-state-bat_hosts.sh +++ b/packages/shared-state-bat_hosts/files/etc/hotplug.d/iface/shared-state-bat_hosts.sh @@ -1,2 +1,2 @@ #!/bin/sh -[ "x$ACTION" == "xifup" ] && ((sleep 30; shared-state-publish_bat_hosts; shared-state-async sync bat-hosts)&) +[ "x$ACTION" == "xifup" ] && ((sleep 30; /usr/share/shared-state/publishers/shared-state-publish_bat_hosts)&) diff --git a/packages/shared-state-bat_hosts/files/etc/uci-defaults/shared-state-bat_hosts-cron b/packages/shared-state-bat_hosts/files/etc/uci-defaults/shared-state-bat_hosts-cron index 817759679..d1efbe5d3 100755 --- a/packages/shared-state-bat_hosts/files/etc/uci-defaults/shared-state-bat_hosts-cron +++ b/packages/shared-state-bat_hosts/files/etc/uci-defaults/shared-state-bat_hosts-cron @@ -12,6 +12,3 @@ uci set shared-state.bat_hosts.ttl='2400' uci set shared-state.bat_hosts.update_interval='30' uci commit shared-state -unique_append \ - '*/30 * * * * ((sleep $(($RANDOM % 120)); shared-state-publish_bat_hosts &> /dev/null)&)' \ - /etc/crontabs/root diff --git a/packages/shared-state-bat_hosts/files/usr/bin/shared-state-publish_bat_hosts b/packages/shared-state-bat_hosts/files/usr/share/shared-state/publishers/shared-state-publish_bat_hosts similarity index 100% rename from packages/shared-state-bat_hosts/files/usr/bin/shared-state-publish_bat_hosts rename to packages/shared-state-bat_hosts/files/usr/share/shared-state/publishers/shared-state-publish_bat_hosts diff --git a/packages/shared-state-bat_links_info/files/etc/hotplug.d/iface/shared-state-bat_links.sh b/packages/shared-state-bat_links_info/files/etc/hotplug.d/iface/shared-state-bat_links.sh new file mode 100755 index 000000000..3634563f5 --- /dev/null +++ b/packages/shared-state-bat_links_info/files/etc/hotplug.d/iface/shared-state-bat_links.sh @@ -0,0 +1,2 @@ +#!/bin/sh +[ "x$ACTION" == "xifup" ] && ((sleep 30; /usr/share/shared-state/publishers/shared-state-publish_bat_links)&) diff --git a/packages/shared-state-bat_links_info/files/etc/shared-state/publishers/shared-state-publish_bat_links_info b/packages/shared-state-bat_links_info/files/etc/shared-state/publishers/shared-state-publish_bat_links_info deleted file mode 120000 index 895385186..000000000 --- a/packages/shared-state-bat_links_info/files/etc/shared-state/publishers/shared-state-publish_bat_links_info +++ /dev/null @@ -1 +0,0 @@ -../../../usr/bin/shared-state-publish_bat_links_info \ No newline at end of file diff --git a/packages/shared-state-bat_links_info/files/etc/uci-defaults/shared-state_bat_links_info_cron b/packages/shared-state-bat_links_info/files/etc/uci-defaults/shared-state_bat_links_info_cron index c725f7168..e31bbaf38 100755 --- a/packages/shared-state-bat_links_info/files/etc/uci-defaults/shared-state_bat_links_info_cron +++ b/packages/shared-state-bat_links_info/files/etc/uci-defaults/shared-state_bat_links_info_cron @@ -11,7 +11,3 @@ uci set shared-state.bat_links_info.scope='community' uci set shared-state.bat_links_info.ttl='2400' uci set shared-state.bat_links_info.update_interval='30' uci commit shared-state - -unique_append \ - '*/30 * * * * ((sleep $(($RANDOM % 120)); shared-state-publish_bat_links_info &> /dev/null)&)' \ - /etc/crontabs/root diff --git a/packages/shared-state-bat_links_info/files/usr/bin/shared-state-publish_bat_links_info b/packages/shared-state-bat_links_info/files/usr/share/shared-state/publishers/shared-state-publish_bat_links_info similarity index 100% rename from packages/shared-state-bat_links_info/files/usr/bin/shared-state-publish_bat_links_info rename to packages/shared-state-bat_links_info/files/usr/share/shared-state/publishers/shared-state-publish_bat_links_info diff --git a/packages/shared-state-bat_links_info/tests/test_shared-state-bat_links_info.lua b/packages/shared-state-bat_links_info/tests/test_shared-state-bat_links_info.lua index 2dc3c7e42..d1b6045bd 100644 --- a/packages/shared-state-bat_links_info/tests/test_shared-state-bat_links_info.lua +++ b/packages/shared-state-bat_links_info/tests/test_shared-state-bat_links_info.lua @@ -189,7 +189,7 @@ describe('Tests bat_links_info #bat_links_info', function () return iwinfo.mocks.wlan1_mesh_mac end) - package.path = package.path .. ";packages/shared-state-bat_links_info/files/usr/bin/?;;" + package.path = package.path .. ";packages/shared-state-bat_links_info/files/usr/share/shared-state/publishers/?;;" require ("shared-state-publish_bat_links_info") it('a simple test to get node info and assert requiered fields are present', function()