rpcd-mod-lxc: info: return NOT_FOUND if container doesn't exist
authorRafał Miłecki <rafal@milecki.pl>
Thu, 30 Nov 2017 10:04:53 +0000 (11:04 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Wed, 6 Dec 2017 08:58:17 +0000 (09:58 +0100)
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

index 6db1b311752cc39f27da592f4bd21e85078df735..a98fcfc54482aa64a44cd30a8aedcd37e11b8ef8 100644 (file)
@@ -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);