source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Backend/OS/Solaris/Slots.pm @ 468

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

Copyt trusty code

File size: 2.7 KB
Line 
1package Ocsinventory::Agent::Backend::OS::Solaris::Slots;
2
3use strict;
4sub check { can_run ("prtdiag") }
5
6sub run {
7  my $params = shift;
8  my $common = $params->{common};
9
10  my $description;
11  my $designation;
12  my $name;
13  my $status; 
14  my @pci;
15  my $flag;
16  my $flag_pci;
17  my $model;
18  my $sun_class;
19
20  $model=`uname -i`;
21  # debug print model
22  #print "Model: '$model'";
23  # cut the CR from string model
24  $model = substr($model, 0, length($model)-1);
25  # we map (hopfully) our server model to a known class
26  if ($model eq "SUNW,SPARC-Enterprise") { $sun_class = 1; }
27  if ($model eq "SUNW,SPARC-Enterprise-T5120") { $sun_class = 2 ; }
28  else { $sun_class = 0; }
29  #Debug
30  #print "sun_class : $sun_class\n";
31
32
33    foreach (`prtdiag `) {
34    #print $_."\n";
35 
36   if ( $sun_class == 0 )
37   {
38    last if(/^\=+/ && $flag_pci);
39    next if(/^\s+/ && $flag_pci);
40    if($flag && $flag_pci && /^(\S+)\s+/){
41      $name = $1;
42    }
43    if($flag && $flag_pci && /(\S+)\s*$/){
44      $designation = $1;
45    }
46    if($flag && $flag_pci && /^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/){
47      $description = $1;
48    }
49    if($flag && $flag_pci && /^\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/){
50      $status = $1;
51    }
52    if($flag && $flag_pci){
53      $common->addSlot({
54          DESCRIPTION =>  $description,
55          DESIGNATION =>  $designation,
56          NAME            =>  $name,
57          STATUS          =>  $status,
58          });
59    }
60    if(/^=+\s+IO Cards/){$flag_pci = 1;}
61    if($flag_pci && /^-+/){$flag = 1;}
62
63   }
64   
65   if ( $sun_class == 1 )
66   {
67        last if(/^\=+/ && $flag_pci && $flag);
68       
69        if($flag && $flag_pci && /^\s+(\d+)/){
70           $name = "LSB " . $1; 
71        }
72        if($flag && $flag_pci && /^\s+\S+\s+(\S+)/){
73                $description = $1;
74        }
75        if($flag && $flag_pci && /^\s+\S+\s+\S+\s+(\S+)/){
76                $designation = $1;
77        }
78        $status = " ";
79       
80        #Debug
81        #if ($flag && $flag_pci){print "$name" . "||||" . "$designation" . "||" . "$description\n";}
82        #print $_."\n";
83
84        if($flag && $flag_pci){
85        $common->addSlot({
86          DESCRIPTION =>  $description,
87          DESIGNATION =>  $designation,
88          NAME            =>  $name,
89          STATUS          =>  $status,
90          });
91        }
92        if(/^=+\S+\s+IO Cards/){$flag_pci = 1;  }
93        if($flag_pci && /^-+/){$flag = 1;}
94   }
95   if ( $sun_class == 2 )
96   {
97        if (/pci/)
98        {
99        @pci = split(/ +/);
100        $name=$pci[4]." ".$pci[5];
101        $description=$pci[0]." (".$pci[1].")";
102        $designation=$pci[3];
103        $status="";
104        $common->addSlot({
105          DESCRIPTION =>  $description,
106          DESIGNATION =>  $designation,
107          NAME            =>  $name,
108          STATUS          =>  $status,
109          });
110       
111        }
112       
113   }
114  }
115}
1161;
Note: See TracBrowser for help on using the repository browser.