[OpenWrt-Devel,packages] rpcd-mod-lxc: info: return NOT_FOUND if container doesn't exist

Message ID 20171130100453.1411-1-zajec5@gmail.com
State Accepted
Delegated to: John Crispin
Headers show
Series
  • [OpenWrt-Devel,packages] rpcd-mod-lxc: info: return NOT_FOUND if container doesn't exist
Related show

Commit Message

Rafał Miłecki Nov. 30, 2017, 10:04 a.m.
From: Rafał Miłecki <rafal@milecki.pl>

It allow distinction between not existing and stopped container. So far
querying for not existing container was resulting in:
> ubus call lxc info '{ "name": "foo" }'
{
        "name": "foo",
        "state": "STOPPED",
        "ips": [

        ]
}

Now it's an error and it matches lxc-info command line:

> ubus call lxc info '{ "name": "foo" }'
Command failed: Not found

> lxc-info --name foo
foo doesn't exist

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 utils/rpcd-mod-lxc/files/lxc.c | 5 +++++
 1 file changed, 5 insertions(+)

Patch

diff --git a/utils/rpcd-mod-lxc/files/lxc.c b/utils/rpcd-mod-lxc/files/lxc.c
index 6db1b311..a98fcfc5 100644
--- a/utils/rpcd-mod-lxc/files/lxc.c
+++ b/utils/rpcd-mod-lxc/files/lxc.c
@@ -332,6 +332,11 @@  rpc_lxc_info(struct ubus_context *ctx, struct ubus_object *obj,
 	l = rpc_lxc_init(tb);
 	if (!l)
 		return UBUS_STATUS_INVALID_ARGUMENT;
+
+	if (!l->container->is_running(l->container) &&
+	    !l->container->is_defined(l->container))
+		return UBUS_STATUS_NOT_FOUND;
+
 	blob_buf_init(&buf, 0);
 
 	blobmsg_add_string(&buf, "name", l->container->name);