[lxc-devel] [PATCH] Export LXC_TARGET env variable in stop hook

Stéphane Graber stgraber at ubuntu.com
Thu Dec 3 06:05:12 UTC 2015


Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 doc/lxc.container.conf.sgml.in | 14 +++++++++++++-
 src/lxc/start.c                |  9 +++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/doc/lxc.container.conf.sgml.in b/doc/lxc.container.conf.sgml.in
index 90ffefa..7a8c6e0 100644
--- a/doc/lxc.container.conf.sgml.in
+++ b/doc/lxc.container.conf.sgml.in
@@ -1566,7 +1566,19 @@ mknod errno 0
           </listitem>
         </varlistentry>
       </variablelist>
-
+      <variablelist>
+        <varlistentry>
+          <term>
+            <option>LXC_TARGET</option>
+          </term>
+          <listitem>
+            <para>
+              Only for the stop hook. Is set to "stop" for a container
+              shutdown or "reboot" for a container reboot.
+            </para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
     </refsect2>
     <refsect2>
     <title>Logging</title>
diff --git a/src/lxc/start.c b/src/lxc/start.c
index fa64b6d..2606dd1 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -522,8 +522,17 @@ void lxc_fini(const char *name, struct lxc_handler *handler)
 		}
 	}
 	namespaces[namespace_count] = NULL;
+
+	if (handler->conf->reboot && setenv("LXC_TARGET", "reboot", 1)) {
+		SYSERROR("failed to set environment variable for stop target");
+	}
+	if (!handler->conf->reboot && setenv("LXC_TARGET", "stop", 1)) {
+		SYSERROR("failed to set environment variable for stop target");
+	}
+
 	if (run_lxc_hooks(name, "stop", handler->conf, handler->lxcpath, namespaces))
 		ERROR("failed to run stop hooks for container '%s'.", name);
+
 	while (namespace_count--)
 		free(namespaces[namespace_count]);
 	for (i = 0; i < LXC_NS_MAX; i++) {
-- 
1.9.1



More information about the lxc-devel mailing list