source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Backend/Virtualization/Xen/XM.pm @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 1.9 KB
Line 
1package Ocsinventory::Agent::Backend::Virtualization::Xen::XM;
2
3use strict;
4
5sub check { can_run('xm') }
6
7sub run {
8    my $params = shift;
9    my $common = $params->{common};
10
11# output: xm list
12#
13#    Name                         ID Mem(MiB) VCPUs State  Time(s)
14#    Domain-0                      0       98     1 r-----  5068.6
15#    Fedora3                     164      128     1 r-----     7.6
16#    Fedora4                     165      128     1 ------     0.6
17#    Mandrake2006                166      128     1 -b----     3.6
18#    Mandrake10.2                167      128     1 ------     2.5
19#    Suse9.2                     168      100     1 ------     1.8
20
21    # xm status
22    my %status_list = (
23            'r' => 'running',
24            'b' => 'blocked',
25            'p' => 'paused',
26            's' => 'shutdown',
27            'c' => 'crashed',
28            'd' => 'dying',
29    );
30
31    my $vmtype    = 'xen';
32    my $subsystem = 'xm';
33
34    my @xm_list = `xm list`;
35
36    # remove first line
37    shift @xm_list;
38
39    foreach my $vm (@xm_list) {
40            chomp $vm;
41            my ($name, $vmid, $memory, $vcpu, $status, $time) = split(' ',$vm);
42
43            $status =~ s/-//g;
44            $status = ( $status ? $status_list{$status} : 'off');
45
46            my @vm_info =  `xm list -l $name`;
47            my $uuid;
48            foreach my $value (@vm_info) {
49                    chomp $value;
50                    if ($value =~ /uuid/) {
51                          $value =~ s/\(|\)//g;
52                          $value =~ s/\s+.*uuid\s+(.*)/\1/;
53                          $uuid = $value;
54                          last;
55                    }
56            }
57
58            my $machine = {
59                MEMORY    => $memory,
60                NAME      => $name,
61                UUID      => $uuid,
62                STATUS    => $status,
63                SUBSYSTEM => $subsystem,
64                VMTYPE    => $vmtype,
65                VCPU      => $vcpu,
66                VMID      => $vmid,
67            };
68
69            $common->addVirtualMachine($machine);
70        }
71}
72
731;
Note: See TracBrowser for help on using the repository browser.