[lxc-devel] [PATCH 2/2] lxc-info: Allow printing IP addresses

Serge Hallyn serge.hallyn at ubuntu.com
Fri Sep 27 05:55:36 UTC 2013


Quoting Stéphane Graber (stgraber at 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 <stgraber at ubuntu.com>

Acked-by: Serge E. Hallyn <serge.hallyn at 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel




More information about the lxc-devel mailing list