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

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

Copyt trusty code

File size: 2.0 KB
Line 
1package Ocsinventory::Agent::Backend::Virtualization::SolarisZones;
2
3use strict;
4
5sub check { 
6  return unless can_run('zoneadm'); 
7  return unless check_solaris_valid_release();
8}
9sub check_solaris_valid_release{
10  #check if Solaris 10 release is higher than 08/07
11  my @rlines;
12  my $release_file;
13  my $release;
14  my $year;
15 
16  $release_file = "/etc/release";
17  if (!open(SOLVERSION, $release_file)) {
18    return;
19  }
20  @rlines = <SOLVERSION>;
21  @rlines = grep(/Solaris/,@rlines);
22  $release = @rlines[0];
23  $release =~ m/(\d)\/(\d+)/;
24  $release = $1;
25  $year = $2;
26  $release =~ s/^0*//g;
27  $year =~ s/^0*//g;
28  if ($year <= 7 and $release < 8 ){
29  return 0;
30  }
31  1 
32}
33
34sub run {
35  my @zones;
36  my @lines;
37  my $zone;
38  my $zoneid;
39  my $zonename;
40  my $zonestatus;
41  my $zonefile;
42  my $pathroot;
43  my $uuid;
44  my $memory;
45  my $memcap;
46  my $vcpu;
47  my $params = shift;
48  my $common = $params->{common};
49  my $logger = $params->{logger};
50
51  @zones = `/usr/sbin/zoneadm list -p`;
52  @zones = grep (!/global/,@zones);
53
54  foreach $zone (@zones) {     
55        ($zoneid,$zonename,$zonestatus,$pathroot,$uuid)=split(/:/,$zone);
56        #
57        # Memory considerations depends on rcapd or project definitions
58        # Little hack, I go directly in /etc/zones reading mcap physcap for each zone.
59        $zonefile = "/etc/zones/$zonename.xml";
60        if (!open(ZONE, $zonefile)) {
61            $logger->debug("Failed to open $zonefile");
62            next;
63        }
64        @lines = <ZONE>;
65        @lines = grep(/mcap/,@lines);
66        $memcap = @lines[0];
67        $memcap=~ s/[^\d]+//g;
68        $memory=$memcap/1024/1024;
69        if (!$memcap){
70          $memory="";
71        }
72               
73        $vcpu = `/usr/sbin/psrinfo -p`; 
74        chomp $vcpu;
75        if (!$vcpu){
76          $vcpu="";
77        }
78
79        my $machine = {
80
81            MEMORY => $memory,
82            NAME => $zonename,
83            UUID => $uuid,
84            STATUS => $zonestatus,
85            SUBSYSTEM => "Solaris Zones",
86            VMTYPE => "Solaris Zones",
87            VMID => $zoneid,
88            VCPU => $vcpu,
89
90        };
91
92        $common->addVirtualMachine($machine);
93
94    }
95}
96
971;
Note: See TracBrowser for help on using the repository browser.