Quoting Stéphane Graber (stgra...@ubuntu.com):
> This adds a new -i flag to lxc-info to print the container's IP
> addresses using get_ips().
> 
> Example:
> $ lxc-info -n lxc-dev -s -p -i
> state:  RUNNING
> pid:    21331
> ip:     10.0.3.165
> ip:     2607:f2c0:f00f:2751:e9ca:842f:efa9:97d1
> ip:     2607:f2c0:f00f:2751:216:3eff:fe3a:f1c1
> 
> Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>

Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com>

> ---
>  doc/lxc-info.sgml.in | 12 ++++++++++++
>  src/lxc/lxc_info.c   | 24 ++++++++++++++++++++----
>  2 files changed, 32 insertions(+), 4 deletions(-)
> 
> diff --git a/doc/lxc-info.sgml.in b/doc/lxc-info.sgml.in
> index c6fc624..819d5ca 100644
> --- a/doc/lxc-info.sgml.in
> +++ b/doc/lxc-info.sgml.in
> @@ -51,6 +51,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
> MA 02110-1301 USA
>        <arg choice="opt">-c <replaceable>KEY</replaceable></arg>
>        <arg choice="opt">-s</arg>
>        <arg choice="opt">-p</arg>
> +      <arg choice="opt">-i</arg>
>        <arg choice="opt">-t <replaceable>state</replaceable></arg>
>      </cmdsynopsis>
>    </refsynopsisdiv>
> @@ -114,6 +115,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, 
> Boston, MA 02110-1301 USA
>  
>        <varlistentry>
>          <term>
> +          <option><optional>-i</optional></option>
> +        </term>
> +        <listitem>
> +          <para>
> +            Just print the container's IP addresses.
> +          </para>
> +        </listitem>
> +      </varlistentry>
> +
> +      <varlistentry>
> +        <term>
>            <option><optional>-t 
> <replaceable>state</replaceable></optional></option>
>          </term>
>          <listitem>
> diff --git a/src/lxc/lxc_info.c b/src/lxc/lxc_info.c
> index ab3aacf..23cf789 100644
> --- a/src/lxc/lxc_info.c
> +++ b/src/lxc/lxc_info.c
> @@ -20,6 +20,7 @@
>   * License along with this library; if not, write to the Free Software
>   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 
> USA
>   */
> +
>  #include <stdio.h>
>  #include <stdbool.h>
>  #include <stdlib.h>
> @@ -34,6 +35,7 @@
>  #include "commands.h"
>  #include "arguments.h"
>  
> +static bool ips;
>  static bool state;
>  static bool pid;
>  static char *test_state = NULL;
> @@ -48,6 +50,7 @@ static int my_parser(struct lxc_arguments* args, int c, 
> char* arg)
>               key[keys] = arg;
>               keys++;
>               break;
> +     case 'i': ips = true; break;
>       case 's': state = true; break;
>       case 'p': pid = true; break;
>       case 't': test_state = arg; break;
> @@ -57,6 +60,7 @@ static int my_parser(struct lxc_arguments* args, int c, 
> char* arg)
>  
>  static const struct option my_longopts[] = {
>       {"config", required_argument, 0, 'c'},
> +     {"ips", no_argument, 0, 'i'},
>       {"state", no_argument, 0, 's'},
>       {"pid", no_argument, 0, 'p'},
>       {"state-is", required_argument, 0, 't'},
> @@ -73,6 +77,7 @@ lxc-info display some information about a container with 
> the identifier NAME\n\
>  Options :\n\
>    -n, --name=NAME       NAME for name of the container\n\
>    -c, --config=KEY      show configuration variable KEY from running 
> container\n\
> +  -i, --ips             shows the IP addresses\n\
>    -p, --pid             shows the process id of the init container\n\
>    -s, --state           shows the state of the container\n\
>    -t, --state-is=STATE  test if current state is STATE\n\
> @@ -99,14 +104,14 @@ int main(int argc, char *argv[])
>       if (!c)
>               return -1;
>  
> -     if (!state && !pid && keys <= 0)
> -             state = pid = true;
> +     if (!state && !pid && !ips && keys <= 0)
> +             state = pid = ips = true;
>  
>       if (state || test_state) {
>               if (test_state)
>                       return strcmp(c->state(c), test_state) != 0;
>  
> -             printf("state:%10s\n", c->state(c));
> +             printf("state: \t%s\n", c->state(c));
>       }
>  
>       if (pid) {
> @@ -114,7 +119,18 @@ int main(int argc, char *argv[])
>  
>               initpid = c->init_pid(c);
>               if (initpid >= 0)
> -                     printf("pid:%10d\n", initpid);
> +                     printf("pid: \t%d\n", initpid);
> +     }
> +
> +     if (ips) {
> +             char **addresses = c->get_ips(c, NULL, NULL, 0);
> +             char *address;
> +             i = 0;
> +             while (addresses[i]) {
> +                     address = addresses[i];
> +                     printf("ip: \t%s\n", address);
> +                     i++;
> +             }
>       }
>  
>       for(i = 0; i < keys; i++) {
> -- 
> 1.8.3.2
> 
> 
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to