master
go 43 lines 1.22 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package hpssa
4
5 import (
6 "fmt"
7 "os"
8 "path/filepath"
9 "runtime"
10
11 "github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/ndexec"
12 )
13
14 func (c *Collector) initSsacliBinary() (ssacliBinary, error) {
15 if runtime.GOOS == "windows" {
16 return c.initDirectSsacliExec()
17 }
18 return c.initNdsudoSsacliExec()
19 }
20
21 func (c *Collector) initNdsudoSsacliExec() (ssacliBinary, error) {
22 ssacliExec := newNdsudoSsacliExec(c.Timeout.Duration(), c.Logger)
23 return ssacliExec, nil
24 }
25
26 func (c *Collector) initDirectSsacliExec() (ssacliBinary, error) {
27 path, err := ndexec.FindBinary(
28 []string{"ssacli", "SSACLI", "hpssacli"},
29 []string{
30 filepath.Join(os.Getenv("ProgramFiles"), "Smart Storage Administrator", "ssacli", "bin", "ssacli.exe"),
31 filepath.Join(os.Getenv("ProgramFiles"), "HP", "hpssacli", "bin", "hpssacli.exe"),
32 filepath.Join(os.Getenv("ProgramFiles"), "Compaq", "Hpacucli", "Bin", "hpacucli.exe"),
33 filepath.Join(os.Getenv("ProgramFiles(x86)"), "Smart Storage Administrator", "ssacli", "bin", "ssacli.exe"),
34 },
35 )
36 if err != nil {
37 return nil, fmt.Errorf("ssacli: %w", err)
38 }
39
40 c.Debugf("found ssacli at: %s", path)
41
42 return newDirectSsacliExec(path, c.Timeout.Duration(), c.Logger), nil
43 }