Hi, do you have any objections to this patch?  It adds a '-Q' option
to lxc-monitor to have lxc-monitor quit when the monitored container
stops.

This is used by lxc-start-ephemeral to track a container's death.

Index: ephemeral/src/lxc/lxc_monitor.c
===================================================================
--- ephemeral.orig/src/lxc/lxc_monitor.c        2011-08-03 23:00:42.925819531 
-0500
+++ ephemeral/src/lxc/lxc_monitor.c     2011-08-03 23:43:43.396909384 -0500
@@ -36,9 +36,18 @@
 lxc_log_define(lxc_monitor_ui, lxc_monitor);
 
 static const struct option my_longopts[] = {
+       {"quit-on-stop", no_argument, 0, 'Q'},
        LXC_COMMON_OPTIONS
 };
 
+static int my_parser(struct lxc_arguments* args, int c, char* arg)
+{
+       switch (c) {
+       case 'Q': args->quit_on_stop = 1; break;
+       }
+       return 0;
+}
+
 static struct lxc_arguments my_args = {
        .progname = "lxc-monitor",
        .help     = "\
@@ -47,11 +56,13 @@
 lxc-monitor monitors the state of the NAME container\n\
 \n\
 Options :\n\
-  -n, --name=NAME   NAME for name of the container\n\
-                    NAME may be a regular expression",
+  -Q, --quit-on-stop quit when the container stops\n\
+  -n, --name=NAME    NAME for name of the container\n\
+                     NAME may be a regular expression",
        .options  = my_longopts,
-       .parser   = NULL,
+       .parser   = my_parser,
        .checker  = NULL,
+       .quit_on_stop = 0,
 };
 
 int main(int argc, char *argv[])
@@ -95,6 +106,8 @@
                case lxc_msg_state:
                        printf("'%s' changed state to [%s]\n", 
                               msg.name, lxc_state2str(msg.value));
+                       if (msg.value == STOPPED && my_args.quit_on_stop)
+                               goto quit;
                        break;
                default:
                        /* ignore garbage */
@@ -102,6 +115,7 @@
                }
        }
 
+quit:
        regfree(&preg);
 
        return 0;
Index: ephemeral/src/lxc/arguments.h
===================================================================
--- ephemeral.orig/src/lxc/arguments.h  2011-08-03 23:32:20.905831229 -0500
+++ ephemeral/src/lxc/arguments.h       2011-08-03 23:32:37.625831332 -0500
@@ -58,6 +58,9 @@
        /* for lxc-wait */
        char *states;
 
+       /* for lxc-shutdown*/
+       int quit_on_stop;
+
        /* remaining arguments */
        char *const *argv;
        int argc;

------------------------------------------------------------------------------
BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
Lxc-users mailing list
Lxc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-users

Reply via email to