From c2e1b07ab72f4fc9b759b86634f12fa2f91bd4d1 Mon Sep 17 00:00:00 2001 From: Grzegorz Grzywacz Date: Thu, 15 Dec 2016 10:24:31 +0100 Subject: [PATCH] lxc-ls: return all containers by default, new filter - list only defined containers. 1.x.x lxc-ls list all containers, new lxc-ls (2.x.x) implementation is ignoring not defined containers. related with issue: #984 Signed-off-by: Grzegorz Grzywacz --- doc/lxc-ls.sgml.in | 12 ++++++++++++ src/lxc/arguments.h | 1 + src/lxc/tools/lxc_ls.c | 9 ++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/lxc-ls.sgml.in b/doc/lxc-ls.sgml.in index 2b2823779..7f55f4f9e 100644 --- a/doc/lxc-ls.sgml.in +++ b/doc/lxc-ls.sgml.in @@ -55,6 +55,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA --frozen --running --stopped + --defined -f -F format -g groups @@ -129,6 +130,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + + + + + + List only defined containers. + + + + diff --git a/src/lxc/arguments.h b/src/lxc/arguments.h index 8ace559fb..d51db4559 100644 --- a/src/lxc/arguments.h +++ b/src/lxc/arguments.h @@ -130,6 +130,7 @@ struct lxc_arguments { bool ls_line; bool ls_running; bool ls_stopped; + bool ls_defined; /* lxc-copy */ bool tmpfs; diff --git a/src/lxc/tools/lxc_ls.c b/src/lxc/tools/lxc_ls.c index 63053b110..33ba470ad 100644 --- a/src/lxc/tools/lxc_ls.c +++ b/src/lxc/tools/lxc_ls.c @@ -53,6 +53,7 @@ lxc_log_define(lxc_ls, lxc); #define LS_RUNNING 4 #define LS_NESTING 5 #define LS_FILTER 6 +#define LS_DEFINED 7 #ifndef SOCK_CLOEXEC # define SOCK_CLOEXEC 02000000 @@ -167,6 +168,7 @@ static const struct option my_longopts[] = { {"running", no_argument, 0, LS_RUNNING}, {"frozen", no_argument, 0, LS_FROZEN}, {"stopped", no_argument, 0, LS_STOPPED}, + {"defined", no_argument, 0, LS_DEFINED}, {"nesting", optional_argument, 0, LS_NESTING}, {"groups", required_argument, 0, 'g'}, {"filter", required_argument, 0, LS_FILTER}, @@ -192,6 +194,7 @@ Options :\n\ --running list only running containers\n\ --frozen list only frozen containers\n\ --stopped list only stopped containers\n\ + --defined list only defined containers\n\ --nesting=NUM list nested containers up to NUM (default is 5) levels of nesting\n\ --filter=REGEX filter container names by regular expression\n\ -g --groups comma separated list of groups a container must have to be displayed\n", @@ -395,8 +398,9 @@ static int ls_get(struct ls **m, size_t *size, const struct lxc_arguments *args, else if (!c) continue; - if (!c->is_defined(c)) + if (args->ls_defined && !c->is_defined(c)){ goto put_and_next; + } /* This does not allocate memory so no worries about freeing it * when we goto next or out. */ @@ -928,6 +932,9 @@ static int my_parser(struct lxc_arguments *args, int c, char *arg) case LS_STOPPED: args->ls_stopped = true; break; + case LS_DEFINED: + args->ls_defined = true; + break; case LS_NESTING: /* In case strtoul() receives a string that represents a * negative number it will return ULONG_MAX - the number that