From: Dwight Engen Date: Mon, 4 Nov 2013 22:35:07 +0000 (-0500) Subject: lua: add cmd_get_config_item to API X-Git-Tag: lxc-1.0.0.alpha3~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8585f20444203f9fb9970d1b176c38e0efd62ea8;p=thirdparty%2Flxc.git lua: add cmd_get_config_item to API Signed-off-by: Dwight Engen Acked-by: Stéphane Graber --- diff --git a/src/lua-lxc/core.c b/src/lua-lxc/core.c index ea19cc355..9492c07fb 100644 --- a/src/lua-lxc/core.c +++ b/src/lua-lxc/core.c @@ -30,6 +30,7 @@ #include #include #include +#include #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 265e991ad..44e4bf11e 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 f957ca4a1..f299b6ac1 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()