File: FusionIO.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 (59 lines) | stat: -rw-r--r-- 1,797 bytes parent folder | download | duplicates (4)
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
50
51
52
53
54
55
56
57
58
59
package Ocsinventory::Agent::Backend::OS::Linux::Storages::FusionIO;

use Ocsinventory::Agent::Backend::OS::Linux::Storages;
use strict;

sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };

sub check {
    my $params = shift;
    my $common = $params->{common};

	my $ret;
	# Do we have fio-status?
	if ($common->can_run("fio-status")) {
		foreach (`fio-status 2> /dev/null`) {
			if (/^fct(\d*).*/) {
				$ret=1;
				last;
			}
		}
	}
	return $ret;
}

sub run {
	
	my $params = shift;
	my $common = $params->{common};
	my $logger = $params->{logger};

	my ($pd, $serialnumber, $model, $capacity, $firmware, $description, $media, $manufacturer);

	foreach (`fio-status 2> /dev/null`) {
        if (/^fct(\d*).*/) {

            my $slot = $1;
            my $cmd = "fio-status /dev/fct$slot --field";
            $model = trim(`$cmd iom.board_name`);
            $description = trim(`$cmd adapter.product_name`);
            $media = trim('disk');
            $capacity = trim(`$cmd iom.size_bytes`);
            $serialnumber = 'OEM:'.trim(`$cmd adapter.oem_serial_number`).' FIO:'.trim(`$cmd adapter.fio_serial_number`).' IOM:'.trim(`$cmd iom.serial_number`);
            $firmware = trim(`$cmd iom.fw_current_version`.' rev '.`$cmd iom.fw_current_revision`);
            $logger->debug("Fusion-io: N/A, $manufacturer, $model, $description, $media, $capacity, $serialnumber, $firmware");
            
            $common->addStorages({
                NAME => $model,
                MANUFACTURER => 'Fusion-io',
                MODEL => $model,
                DESCRIPTION => $description,
                TYPE => $media,
                DISKSIZE => $capacity,
                SERIALNUMBER => $serialnumber,
                FIRMWARE => $firmware
            }); 
        }
    }
}
1;