Skip to content

Commit

Permalink
lua: add cmd_get_config_item to API
Browse files Browse the repository at this point in the history
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
  • Loading branch information
Dwight Engen authored and stgraber committed Nov 5, 2013
1 parent 6502006 commit 8585f20
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/lua-lxc/core.c
Expand Up @@ -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))
Expand Down Expand Up @@ -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));
Expand All @@ -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},
Expand Down
8 changes: 8 additions & 0 deletions src/lua-lxc/lxc.lua
Expand Up @@ -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
7 changes: 7 additions & 0 deletions src/lua-lxc/test/apitest.lua
Expand Up @@ -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...")

Expand Down Expand Up @@ -325,6 +331,7 @@ test_container_start()
test_container_started()

test_container_cgroup()
test_container_cmd()

test_container_freeze()
test_container_frozen()
Expand Down

0 comments on commit 8585f20

Please sign in to comment.