use /dev/shm/mac-ip-vlan from enesej to find instance ip
[gnt-info] / gnt-instance-mac-ip.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use autodie;
5
6 my $mac2ip_vlan;
7 my ($in,$out);
8 open(my $in, '<', '/dev/shm/mac-ip-vlan');
9 while(<$in>) {
10         print $out $_ if $out;
11         chomp;
12         my ( $mac, $ip, $vlan ) = split(/\s/,$_);
13         $mac2ip_vlan->{$mac} = [ $ip, $vlan ];
14 }
15
16 open(my $gnt, '-|', qq{gnt-instance list --no-header --separator=' ' -o name,nic.macs,nic.bridges});
17 while(<$gnt>) {
18         chomp;
19         my ( $name,$macs,$bridges ) = split(/\s/,$_);
20         my @macs = split(/,/,$macs);
21         my @br  = split(/,/,$bridges);
22         for my $i ( 0 .. $#macs ) {
23                 my $mac = $macs[$i];
24                 print "$name $mac $br[$i] ";
25                 if ( exists $mac2ip_vlan->{$mac} ) {
26                         print join(' ', @{ $mac2ip_vlan->{$mac} });
27                 } else {
28                         print "? ?";
29                 }
30                 print "\n";
31         }
32 }