[lxc-devel] [PATCH] lua: add cmd_get_config_item to API

Stéphane Graber stgraber at ubuntu.com
Mon Nov 4 23:04:12 UTC 2013


On Mon, Nov 04, 2013 at 05:35:07PM -0500, Dwight Engen wrote:
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>

I first got pretty confused between get_config_item and
cmd_get_config_item but once I got my brain to parse this all properly,
it looks fine :)

Acked-by: Stéphane Graber <stgraber at ubuntu.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
> 
> 
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models. Explore
> techniques for threading, error checking, porting, and tuning. Get the most 
> from the latest Intel processors and coprocessors. See abstracts and register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20131104/dcf9acba/attachment.pgp>


More information about the lxc-devel mailing list