[lxc-devel] [PATCH] Remove MAKEDEV call, add autodev hooks, add environment variables for hook scripts.

Serge Hallyn serge.hallyn at canonical.com
Thu Jan 10 22:52:15 UTC 2013


Quoting Michael H. Warfield (mhw at WittsEnd.com):

looks good, one comment (a "you were right" :)

...

> +	/* Start of environment variable setup for hooks */
> +	if (setenv("LXC_NAME", name, 1)) {
> +		SYSERROR("failed to set environment variable for container name");
> +	}
> +	if (setenv("LXC_CONFIG_FILE", conf->rcfile, 1)) {
> +		SYSERROR("failed to set environment variable for config path");
> +	}
> +	if (setenv("LXC_ROOTFS_MOUNT", conf->rootfs.mount, 1)) {
> +		SYSERROR("failed to set environment variable for rootfs mount");
> +	}
> +	if (setenv("LXC_ROOTFS_PATH", conf->rootfs.path, 1)) {
> +		SYSERROR("failed to set environment variable for rootfs mount");
> +	}
> +	if (conf->console.path && setenv("LXC_CONSOLE", conf->console.path, 1)) {
> +		SYSERROR("failed to set environment variable for console path");
> +	}
> +	if (conf->console.log_path && setenv("LXC_CONSOLE_LOGPATH", conf->console.log_path, 1)) {
> +		SYSERROR("failed to set environment variable for console log");
> +	}
> +	/* Not quite sure right now what these next two actually do but
> +	 * leaving them in, just not documenting them, for the moment just
> +	 * in case they are a work in progress somewhere else. */
> +	if (conf->logfile && setenv("LXC_LOGPATH", conf->logfile, 1)) {
> +		SYSERROR("failed to set environment variable for console log");
> +	}

Sorry - definately the scripts don't need to know LXC_LOGPATH.  That's
only to keep track (in memory) of the logfile that was stored in the
rcfile in case it was override with -o in lxc_start.  So actually you're
right, I think we should get rid of that variable, just use it (or not)
when we see it.  I was thinking we might want to store it in some cases
for the api - but then if we're using lxc-start we're not using the api,
and we only override at lxc-start.  So no sense storing this.

> +	{
> +		char loglevel[16];
> +		snprintf( loglevel, 14, "%d", conf->loglevel );
> +		if (setenv("LXC_LOGLEVEL", loglevel, 1)) {
> +			SYSERROR("failed to set environment variable for log level mount");
> +		}
> +	}
> +	/* End of environment variable setup for hooks */
> +
>  	if (run_lxc_hooks(name, "pre-start", conf)) {
>  		ERROR("failed to run pre-start hooks for container '%s'.", name);
>  		goto out_aborting;
> @@ -575,6 +609,21 @@ static int do_start(void *data)
>  		goto out_warn_father;
>  	}
>  
> +	/* The clearenv() and putenv() calls have been moved here
> +	 * to allow us to use enviroment variables passed to the various
> +	 * hooks, such as the start hook above.  Not all of the
> +	 * variables like CONFIG_PATH or ROOTFS are valid in this
> +	 * context but others are. */
> +	if (clearenv()) {
> +		SYSERROR("failed to clear environment");
> +		/* don't error out though */
> +	}
> +
> +	if (putenv("container=lxc")) {
> +		SYSERROR("failed to set environment variable");
> +		return -1;
> +	}
> +
>  	close(handler->sigfd);
>  
>  	/* after this call, we are in error because this
> 






More information about the lxc-devel mailing list