]> git.proxmox.com Git - mirror_lxc.git/commitdiff
lxc-ls: return all containers by default, new filter - list only defined containers.
authorGrzegorz Grzywacz <grzegorz.grzywacz@nazwa.pl>
Thu, 15 Dec 2016 09:24:31 +0000 (10:24 +0100)
committerGrzegorz Grzywacz <grzgrzgrz3@gmail.com>
Sat, 27 May 2017 17:43:41 +0000 (19:43 +0200)
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 <grzgrzgrz3@gmail.com>
doc/lxc-ls.sgml.in
src/lxc/arguments.h
src/lxc/tools/lxc_ls.c

index 2b28237796bf817e7a5f1b3e1b61dcc351d919db..7f55f4f9e20e768adcae6baa9ea41dff2b373cb5 100644 (file)
@@ -55,6 +55,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
       <arg choice="opt">--frozen</arg>
       <arg choice="opt">--running</arg>
       <arg choice="opt">--stopped</arg>
+      <arg choice="opt">--defined</arg>
       <arg choice="opt">-f</arg>
       <arg choice="opt">-F <replaceable>format</replaceable></arg>
       <arg choice="opt">-g <replaceable>groups</replaceable></arg>
@@ -129,6 +130,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
         </listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term>
+          <option>--defined</option>
+        </term>
+        <listitem>
+          <para>
+            List only defined containers.
+          </para>
+        </listitem>
+      </varlistentry>
+
       <varlistentry>
         <term>
           <option>-f,--fancy</option>
index 8ace559fbadd24decaf4e8dcad2c2bf5d562ae74..d51db45590b606dd2b2e98f4f0e249db3087e632 100644 (file)
@@ -130,6 +130,7 @@ struct lxc_arguments {
        bool ls_line;
        bool ls_running;
        bool ls_stopped;
+       bool ls_defined;
 
        /* lxc-copy */
        bool tmpfs;
index 63053b110eb5ad5687af6314537c5cae9cea0eac..33ba470ad802fcc05ce2a0007ffafb8cc7ff55c0 100644 (file)
@@ -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