[libvirt] [PATCH 2/2] lxc: allow user to specify command working directory

Cedric Bosdonnat cbosdonnat at suse.com
Tue Jun 6 07:54:02 UTC 2017


On Mon, 2017-06-05 at 15:27 +0100, Daniel P. Berrange wrote:
> On Thu, Jun 01, 2017 at 02:26:17PM +0200, Cédric Bosdonnat wrote:
> > Some containers may want the application to run in a special directory.
> > Add <initdir> element in the domain configuration to handle this case
> > and use it in the lxc driver.
> > ---
> >  docs/formatdomain.html.in            |  5 +++++
> >  docs/schemas/domaincommon.rng        |  5 +++++
> >  src/conf/domain_conf.c               |  5 +++++
> >  src/conf/domain_conf.h               |  1 +
> >  src/lxc/lxc_container.c              |  4 +++-
> >  tests/lxcxml2xmldata/lxc-initdir.xml | 30 ++++++++++++++++++++++++++++++
> >  tests/lxcxml2xmltest.c               |  1 +
> >  7 files changed, 50 insertions(+), 1 deletion(-)
> >  create mode 100644 tests/lxcxml2xmldata/lxc-initdir.xml
> 
> Any need for the native-to-xml conversion here too ?

Will be needed once we'll have docker json support in native-o-xml.
lxc config file doesn't have it AFAICT.

> > diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> > index 03153b972..105f0b7a6 100644
> > --- a/src/conf/domain_conf.h
> > +++ b/src/conf/domain_conf.h
> > @@ -1841,6 +1841,7 @@ struct _virDomainOSDef {
> >      char *init;
> >      char **initargv;
> >      virDomainOSEnvPtr *initenv;
> > +    char *initdir;
> >      char *kernel;
> >      char *initrd;
> >      char *cmdline;
> > diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> > index ffafc39d7..c122a588e 100644
> > --- a/src/lxc/lxc_container.c
> > +++ b/src/lxc/lxc_container.c
> > @@ -237,7 +237,7 @@ static virCommandPtr lxcContainerBuildInitCmd(virDomainDefPtr vmDef,
> >      virCommandAddEnvString(cmd, "PATH=/bin:/sbin");
> >      virCommandAddEnvString(cmd, "TERM=linux");
> >      virCommandAddEnvString(cmd, "container=lxc-libvirt");
> > -    virCommandAddEnvString(cmd, "HOME=/");
> > +/*    virCommandAddEnvString(cmd, "HOME=/"); */

Oops, looks like I forgot some cleanup

> >      virCommandAddEnvPair(cmd, "container_uuid", uuidstr);
> >      if (nttyPaths > 1)
> >          virCommandAddEnvPair(cmd, "container_ttys", virBufferCurrentContent(&buf));
> 
> This doesn't work obviously.

Hum... weird. I'll recheck my source tree here and resubmit properly

--
Cedric




More information about the libvir-list mailing list