use /dev/shm/mac-ip-vlan from enesej to find instance ip
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 23 Jun 2018 14:00:38 +0000 (16:00 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 23 Jun 2018 14:00:38 +0000 (16:00 +0200)
gnt-instance-mac-ip.pl [new file with mode: 0755]

diff --git a/gnt-instance-mac-ip.pl b/gnt-instance-mac-ip.pl
new file mode 100755 (executable)
index 0000000..0bb76b7
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use autodie;
+
+my $mac2ip_vlan;
+my ($in,$out);
+open(my $in, '<', '/dev/shm/mac-ip-vlan');
+while(<$in>) {
+       print $out $_ if $out;
+       chomp;
+       my ( $mac, $ip, $vlan ) = split(/\s/,$_);
+       $mac2ip_vlan->{$mac} = [ $ip, $vlan ];
+}
+
+open(my $gnt, '-|', qq{gnt-instance list --no-header --separator=' ' -o name,nic.macs,nic.bridges});
+while(<$gnt>) {
+       chomp;
+       my ( $name,$macs,$bridges ) = split(/\s/,$_);
+       my @macs = split(/,/,$macs);
+       my @br  = split(/,/,$bridges);
+       for my $i ( 0 .. $#macs ) {
+               my $mac = $macs[$i];
+               print "$name $mac $br[$i] ";
+               if ( exists $mac2ip_vlan->{$mac} ) {
+                       print join(' ', @{ $mac2ip_vlan->{$mac} });
+               } else {
+                       print "? ?";
+               }
+               print "\n";
+       }
+}