utils/lxc: Add working autostart for OpenWrt

Standard LXC autostart is currently not working in OpenWrt,
therefore add our own autostart mechanism for now.

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
This commit is contained in:
Daniel Dickinson 2016-03-12 19:01:59 -05:00
parent 403079aff8
commit b7b0f59e1c
2 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,5 @@
#config container
#option name container1
#option timeout 300
#list command '/bin/command --option'

60
utils/lxc/files/lxc-auto.init Executable file
View File

@ -0,0 +1,60 @@
#!/bin/sh /etc/rc.common
. /lib/functions.sh
START=99
STOP=00
run_command() {
local command="$1"
$command
}
start_container() {
local cfg="$1"
local name
config_get name "$cfg" name
config_list_foreach "$cfg" command run_command
if [ -n "$name" ]; then
/usr/bin/lxc-start -n "$name"
fi
}
max_timeout=0
stop_container() {
local cfg="$1"
local name timeout
config_get name "$cfg" name
config_get timeout "$cfg" timeout 300
if [ "$max_timeout" -lt "$timeout" ]; then
max_timeout=$timeout
fi
if [ -n "$name" ]; then
if [ "$timeout" = "0" ]; then
/usr/bin/lxc-stop -n "$name" &
else
/usr/bin/lxc-stop -n "$name" -t $timeout &
fi
fi
}
start() {
config_load lxc-auto
config_foreach start_container container
}
stop() {
config_load lxc-auto
config_foreach stop_container container
# ensure e.g. shutdown doesn't occur before maximum timeout on
# containers that are shutting down
if [ $max_timeout -gt 0 ]; then
sleep $max_timeout
fi
}