master
go 45 lines 1.14 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package storcli
4
5 import "fmt"
6
7 const (
8 driverNameMegaraid = "megaraid_sas"
9 driverNameSas = "mpt3sas"
10 )
11
12 func (c *Collector) collect() (map[string]int64, error) {
13 cntrlResp, err := c.queryControllersInfo()
14 if err != nil {
15 return nil, err
16 }
17
18 mx := make(map[string]int64)
19
20 driver := cntrlResp.Controllers[0].ResponseData.Version.DriverName
21
22 switch driver {
23 case driverNameMegaraid:
24 if err := c.collectMegaraidControllersInfo(mx, cntrlResp); err != nil {
25 return nil, fmt.Errorf("failed to collect megaraid controller info: %s", err)
26 }
27 if len(cntrlResp.Controllers[0].ResponseData.PDList) > 0 {
28 drivesResp, err := c.queryDrivesInfo()
29 if err != nil {
30 return nil, fmt.Errorf("failed to collect megaraid drive info: %s", err)
31 }
32 if err := c.collectMegaRaidDrives(mx, drivesResp); err != nil {
33 return nil, err
34 }
35 }
36 case driverNameSas:
37 if err := c.collectMpt3sasControllersInfo(mx, cntrlResp); err != nil {
38 return nil, fmt.Errorf("failed to collect mpt3sas controller info: %s", err)
39 }
40 default:
41 return nil, fmt.Errorf("unknown driver: %s", driver)
42 }
43
44 return mx, nil
45 }