File: Docker.pm

package info (click to toggle)
ocsinventory-agent 2%3A2.10.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,424 kB
  • sloc: perl: 26,492; xml: 773; objc: 528; sh: 386; ansic: 333; makefile: 12
file content (49 lines) | stat: -rw-r--r-- 1,404 bytes parent folder | download | duplicates (3)
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;