1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
  
     | 
    
      package Ocsinventory::Agent::Backend::Virtualization::Docker;
use strict;
sub check { 
    my $params = shift;
    my $common = $params->{common};
    return unless $common->can_run("docker");
}
my @image;
sub run {
    my $params = shift;
    my $common = $params->{common};
 
    foreach my $cont (`docker ps 2>/dev/null`) {
        next if ($cont =~ /^CONTAINER ID/);
        my $container_id=$1 if ($cont =~ /^(\w+)/i);
        push @image, $container_id;
    }
    foreach my $c (@image) {
        my $tab=`docker inspect $c`;
        my $memory=$1 if ($tab =~ /\s+"Memory":\s(\d+),/);
        my $name=$1 if ($tab =~ /\s+"Hostname":\s"(\w+)",/);
        my $status=$1 if ($tab =~ /\s+"Status":\s"(\w+)",/);
        my $vcpu=$1 if ($tab =~ /\s+"CpuShares":\s(\d+),/); 
        my $vmid=$1 if ($tab =~ /\s+"Id":\s"(\w+)",/);
        my $ipaddr=$1 if ($tab =~ /\s+"IPAddress":\s"(.*)"/);
        my $macaddr=$1 if ($tab =~ /\s+"MacAddress":\s"(.*)"/);
        my $gateway=$1 if ($tab =~ /\s+"Gateway":\s"(.*)"/);
        $common->addVirtualMachine({
            CPUSHARES => $vcpu,
            GATEWAY => $gateway,
            IPADDR => $ipaddr,
            MACADDR => $macaddr,
            MEMORY => $memory,
            NAME => $name,
            STATUS => $status,
            SUBSYSTEM => "Docker Container",
            VMID => $vmid,
            VTYPE => "Docker",
        });
    }
}
1;
 
     |