[lxc-devel] [PATCH] lua: add cmd_get_config_item to API
Dwight Engen
dwight.engen at oracle.com
Mon Nov 4 22:35:07 UTC 2013
Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
---
src/lua-lxc/core.c | 25 +++++++++++++++++++++++++
src/lua-lxc/lxc.lua | 8 ++++++++
src/lua-lxc/test/apitest.lua | 7 +++++++
3 files changed, 40 insertions(+)
diff --git a/src/lua-lxc/core.c b/src/lua-lxc/core.c
index ea19cc3..9492c07 100644
--- a/src/lua-lxc/core.c
+++ b/src/lua-lxc/core.c
@@ -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},
diff --git a/src/lua-lxc/lxc.lua b/src/lua-lxc/lxc.lua
index 265e991..44e4bf1 100755
--- a/src/lua-lxc/lxc.lua
+++ b/src/lua-lxc/lxc.lua
@@ -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
diff --git a/src/lua-lxc/test/apitest.lua b/src/lua-lxc/test/apitest.lua
index f957ca4..f299b6a 100755
--- a/src/lua-lxc/test/apitest.lua
+++ b/src/lua-lxc/test/apitest.lua
@@ -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()
--
1.8.3.1
More information about the lxc-devel
mailing list