]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lua: add cmd_get_config_item to API
authorDwight Engen <dwight.engen@oracle.com>
Mon, 4 Nov 2013 22:35:07 +0000 (17:35 -0500)
committerStéphane Graber <stgraber@ubuntu.com>
Tue, 5 Nov 2013 17:31:48 +0000 (12:31 -0500)
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lua-lxc/core.c
src/lua-lxc/lxc.lua
src/lua-lxc/test/apitest.lua

index ea19cc3550768025317166f129e305af3ffa0025..9492c07fb9b66df701578c03c036d6faadc379e8 100644 (file)
@@ -30,6 +30,7 @@
 #include <unistd.h>
 #include <libgen.h>
 #include <lxc/lxccontainer.h>
+#include <lxc/commands.h>
 
 #if LUA_VERSION_NUM < 502
 #define luaL_newlib(L,l) (lua_newtable(L), luaL_register(L,NULL,l))
@@ -417,6 +418,29 @@ static int lxc_default_config_path_get(lua_State *L) {
     return 1;
 }
 
+static int cmd_get_config_item(lua_State *L)
+{
+    int arg_cnt = lua_gettop(L);
+    const char *name = luaL_checkstring(L, 1);
+    const char *key = luaL_checkstring(L, 2);
+    const char *lxcpath = NULL;
+    char *value;
+
+    if (arg_cnt > 2)
+       lxcpath = luaL_checkstring(L, 3);
+
+    value = lxc_cmd_get_config_item(name, key, lxcpath);
+    if (!value)
+       goto not_found;
+
+    lua_pushstring(L, value);
+    return 1;
+
+not_found:
+    lua_pushnil(L);
+    return 1;
+}
+
 /* utility functions */
 static int lxc_util_usleep(lua_State *L) {
     usleep((useconds_t)luaL_checkunsigned(L, 1));
@@ -432,6 +456,7 @@ static int lxc_util_dirname(lua_State *L) {
 static luaL_Reg lxc_lib_methods[] = {
     {"version_get",            lxc_version_get},
     {"default_config_path_get",        lxc_default_config_path_get},
+    {"cmd_get_config_item",    cmd_get_config_item},
     {"container_new",          container_new},
     {"usleep",                 lxc_util_usleep},
     {"dirname",                        lxc_util_dirname},
index 265e991ad10ffe5e5b18338f66ba82d974f38bc9..44e4bf11ed3330e67956dc9c9b2a51f33d2e90a0 100755 (executable)
@@ -385,6 +385,14 @@ function M.default_config_path_get()
     return core.default_config_path_get()
 end
 
+function M.cmd_get_config_item(name, item, lxcpath)
+    if (lxcpath) then
+       return core.cmd_get_config_item(name, item, lxcpath)
+    else
+       return core.cmd_get_config_item(name, item)
+    end
+end
+
 lxc_path = core.default_config_path_get()
 
 return M
index f957ca4a11325bc45cb48ca508b9cbcd543b650d..f299b6ac1512c0793bc11fdbaeb2b5307a03259d 100755 (executable)
@@ -217,6 +217,12 @@ function test_container_cgroup()
     assert(container:set_cgroup_item("memory.limit_in_bytes", "-1"))
 end
 
+function test_container_cmd()
+    log(0, "Test get config from running container...")
+    veth_pair = lxc.cmd_get_config_item(optarg["n"], "lxc.network.0.veth.pair")
+    log(0, "  veth.pair:%s", veth_pair)
+end
+
 function test_config_items()
     log(0, "Test set/clear configuration items...")
 
@@ -325,6 +331,7 @@ test_container_start()
 test_container_started()
 
 test_container_cgroup()
+test_container_cmd()
 
 test_container_freeze()
 test_container_frozen()