[lxc-devel] [PATCH 2/2] lxc-autostart: Add a new --ignore-auto/-A flag

Serge Hallyn serge.hallyn at ubuntu.com
Fri Mar 7 21:11:56 UTC 2014


Quoting Stéphane Graber (stgraber at ubuntu.com):
> When passed, this flag will cause lxc-autostart to ignore the value of
> lxc.start.auto.
> 
> This then allows things like: lxc-autostart -s -a -A
> 
> Which will select all containers regardless of groups (-a), regardless
> of whether they are actually marked as auto-started (-A) and will shut
> them down (-s).
> 
> Update our init scripts to use the new feature.
> 
> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>

Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>

> ---
>  config/init/sysvinit/lxc     |  2 +-
>  config/init/upstart/lxc.conf |  4 ++++
>  doc/lxc-autostart.sgml.in    | 13 +++++++++++++
>  src/lxc/arguments.h          |  1 +
>  src/lxc/lxc_autostart.c      |  6 +++++-
>  5 files changed, 24 insertions(+), 2 deletions(-)
> 
> diff --git a/config/init/sysvinit/lxc b/config/init/sysvinit/lxc
> index 9128187..436eef4 100755
> --- a/config/init/sysvinit/lxc
> +++ b/config/init/sysvinit/lxc
> @@ -50,7 +50,7 @@ case "$1" in
>  	touch /var/lock/subsys/lxc
>  	;;
>    stop)
> -	action $"Stopping LXC containers: " /usr/bin/lxc-autostart -s
> +	action $"Stopping LXC containers: " /usr/bin/lxc-autostart -a -A -s
>  	rm -f /var/lock/subsys/lxc
>  	;;
>    restart|reload|force-reload)
> diff --git a/config/init/upstart/lxc.conf b/config/init/upstart/lxc.conf
> index 1a5c5c9..d5131ad 100644
> --- a/config/init/upstart/lxc.conf
> +++ b/config/init/upstart/lxc.conf
> @@ -25,3 +25,7 @@ pre-start script
>  		(start lxc-instance NAME=$1 && sleep $2) || true
>  	done
>  end script
> +
> +post-stop script
> +	lxc-autostart -a -A -s || true
> +end script
> diff --git a/doc/lxc-autostart.sgml.in b/doc/lxc-autostart.sgml.in
> index 985cbe4..3d423dd 100644
> --- a/doc/lxc-autostart.sgml.in
> +++ b/doc/lxc-autostart.sgml.in
> @@ -51,6 +51,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>              <arg choice="opt">-r</arg>
>              <arg choice="opt">-s</arg>
>              <arg choice="opt">-a</arg>
> +            <arg choice="opt">-A</arg>
>              <arg choice="opt">-g <replaceable>groups</replaceable></arg>
>              <arg choice="opt">-t <replaceable>timeout</replaceable></arg>
>          </cmdsynopsis>
> @@ -169,6 +170,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>                      </para>
>                  </listitem>
>              </varlistentry>
> +
> +            <varlistentry>
> +                <term>
> +                    <option>-A,--ignore-auto</option>
> +                </term>
> +                <listitem>
> +                    <para>
> +                        Ignore the lxc.start.auto flag. Combined with
> +                        -a, will select all containers on the system.
> +                    </para>
> +                </listitem>
> +            </varlistentry>
>          </variablelist>
>      </refsect1>
>  
> diff --git a/src/lxc/arguments.h b/src/lxc/arguments.h
> index 767bfcf..e5f0670 100644
> --- a/src/lxc/arguments.h
> +++ b/src/lxc/arguments.h
> @@ -90,6 +90,7 @@ struct lxc_arguments {
>  
>  	/* auto-start */
>  	int all;
> +	int ignore_auto;
>  	int list;
>  	char *groups;
>  
> diff --git a/src/lxc/lxc_autostart.c b/src/lxc/lxc_autostart.c
> index cfb24d0..ec9d9ba 100644
> --- a/src/lxc/lxc_autostart.c
> +++ b/src/lxc/lxc_autostart.c
> @@ -37,6 +37,7 @@ static int my_parser(struct lxc_arguments* args, int c, char* arg)
>  	case 'r': args->reboot = 1; break;
>  	case 's': args->shutdown = 1; break;
>  	case 'a': args->all = 1; break;
> +	case 'A': args->ignore_auto = 1; break;
>  	case 'g': args->groups = arg; break;
>  	case 't': args->timeout = atoi(arg); break;
>  	}
> @@ -49,6 +50,7 @@ static const struct option my_longopts[] = {
>  	{"reboot", no_argument, 0, 'r'},
>  	{"shutdown", no_argument, 0, 's'},
>  	{"all", no_argument, 0, 'a'},
> +	{"ignore-auto", no_argument, 0, 'A'},
>  	{"groups", required_argument, 0, 'g'},
>  	{"timeout", required_argument, 0, 't'},
>  	{"help", no_argument, 0, 'h'},
> @@ -68,6 +70,7 @@ Options:\n\
>    -s, --shutdown    shutdown the containers instead of starting them\n\
>  \n\
>    -a, --all         list all auto-started containers (ignore groups)\n\
> +  -A, --ignore-auto ignore lxc.start.auto and select all matching containers\n\
>    -g, --groups      list of groups (comma separated) to select\n\
>    -t, --timeout=T   wait T seconds before hard-stopping\n",
>  	.options  = my_longopts,
> @@ -246,7 +249,8 @@ int main(int argc, char *argv[])
>  			continue;
>  		}
>  
> -		if (get_config_integer(c, "lxc.start.auto") != 1) {
> +		if (!my_args.ignore_auto &&
> +		    get_config_integer(c, "lxc.start.auto") != 1) {
>  			lxc_container_put(c);
>  			continue;
>  		}
> -- 
> 1.9.0
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel


More information about the lxc-devel mailing list