Quoting Stéphane Graber (stgra...@ubuntu.com): > This extends the list of arguments of start() allowing the user to > request the container be started in the foreground and have control on > whether fds will be closed or not (daemonize=True implies that too). > > One problem at the moment however is that while we have functions to set > close_fds and daemonize in the API, we don't have functions to unset > those flags, so those new parameters will only work on the initial call > to start() any further call will use the values of the previous one. > > I think it'd make sense to change lxcapi slightly to have daemonize and > close_fds offer a similar interface, both returning booleans and both > accepting a value as a parameter so API users can set the value they > want.
What would be the point in checking the value as opposed to simply setting the one you want? If unsetting is all we need, we could just add a boolean argument to want_damonize and want_close_all_fds. If there is a good reason to be able to check the values, then we can either add a get_daemonize, or make the second argument to want_daemonize an int, where -1 means unset, 1 means set, and 0 means just give me the return value. Or maybe we want to just add new api fns so as not to change the existing api? I'm feeling indecisive. > Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com> > --- > src/python-lxc/lxc.c | 33 +++++++++++++++++++++++++-------- > 1 file changed, 25 insertions(+), 8 deletions(-) > > diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c > index f850a3d..5a20ff4 100644 > --- a/src/python-lxc/lxc.c > +++ b/src/python-lxc/lxc.c > @@ -1221,13 +1221,21 @@ Container_snapshot_restore(Container *self, PyObject > *args, PyObject *kwds) > static PyObject * > Container_start(Container *self, PyObject *args, PyObject *kwds) > { > + PyObject *useinit = NULL; > + PyObject *daemonize = NULL; > + PyObject *close_fds = NULL; > + > + PyObject *vargs = NULL; > char** init_args = {NULL}; > - PyObject *useinit = NULL, *retval = NULL, *vargs = NULL; > + > + PyObject *retval = NULL; > int init_useinit = 0, i = 0; > - static char *kwlist[] = {"useinit", "cmd", NULL}; > + static char *kwlist[] = {"useinit", "daemonize", "close_fds", > + "cmd", NULL}; > > - if (! PyArg_ParseTupleAndKeywords(args, kwds, "|OO", kwlist, > - &useinit, &vargs)) > + if (! PyArg_ParseTupleAndKeywords(args, kwds, "|OOOO", kwlist, > + &useinit, &daemonize, &close_fds, > + &vargs)) > return NULL; > > if (useinit && useinit == Py_True) { > @@ -1241,7 +1249,13 @@ Container_start(Container *self, PyObject *args, > PyObject *kwds) > } > } > > - self->container->want_daemonize(self->container); > + if (close_fds && close_fds == Py_True) { > + self->container->want_close_all_fds(self->container); > + } > + > + if (!daemonize || daemonize == Py_True) { > + self->container->want_daemonize(self->container); > + } > > if (self->container->start(self->container, init_useinit, init_args)) > retval = Py_True; > @@ -1519,10 +1533,13 @@ static PyMethodDef Container_methods[] = { > }, > {"start", (PyCFunction)Container_start, > METH_VARARGS|METH_KEYWORDS, > - "start(useinit = False, cmd = (,)) -> boolean\n" > + "start(useinit = False, daemonize=True, close_fds=False, " > + "cmd = (,)) -> boolean\n" > "\n" > - "Start the container, optionally using lxc-init and " > - "an alternate init command, then returns its return code." > + "Start the container, return True on success.\n" > + "When set useinit will make LXC use lxc-init to start the container.\n" > + "The container can be started in the foreground with daemonize=False.\n" > + "All fds may also be closed by passing close_fds=True." > }, > {"stop", (PyCFunction)Container_stop, > METH_NOARGS, > -- > 1.8.4.4 > > > ------------------------------------------------------------------------------ > Rapidly troubleshoot problems before they affect your business. Most IT > organizations don't have a clear picture of how application performance > affects their revenue. With AppDynamics, you get 100% visibility into your > Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! > http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk > _______________________________________________ > Lxc-devel mailing list > Lxc-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/lxc-devel ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel