master
go 60 lines 1.56 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package adaptecraid
4
5 import (
6 "time"
7
8 "github.com/netdata/netdata/go/plugins/logger"
9 "github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/ndexec"
10 )
11
12 type arcconfCli interface {
13 logicalDevicesInfo() ([]byte, error)
14 physicalDevicesInfo() ([]byte, error)
15 }
16
17 // ndsudoArcconfCliExec executes arcconf via ndsudo (Linux/BSD)
18 type ndsudoArcconfCliExec struct {
19 *logger.Logger
20 timeout time.Duration
21 }
22
23 func newNdsudoArcconfCliExec(timeout time.Duration, log *logger.Logger) *ndsudoArcconfCliExec {
24 return &ndsudoArcconfCliExec{
25 Logger: log,
26 timeout: timeout,
27 }
28 }
29
30 func (e *ndsudoArcconfCliExec) logicalDevicesInfo() ([]byte, error) {
31 return ndexec.RunNDSudo(e.Logger, e.timeout, "arcconf-ld-info")
32 }
33
34 func (e *ndsudoArcconfCliExec) physicalDevicesInfo() ([]byte, error) {
35 return ndexec.RunNDSudo(e.Logger, e.timeout, "arcconf-pd-info")
36 }
37
38 // directArcconfCliExec executes arcconf directly (Windows)
39 type directArcconfCliExec struct {
40 *logger.Logger
41
42 arcconfPath string
43 timeout time.Duration
44 }
45
46 func newDirectArcconfCliExec(arcconfPath string, timeout time.Duration, log *logger.Logger) *directArcconfCliExec {
47 return &directArcconfCliExec{
48 Logger: log,
49 arcconfPath: arcconfPath,
50 timeout: timeout,
51 }
52 }
53
54 func (e *directArcconfCliExec) logicalDevicesInfo() ([]byte, error) {
55 return ndexec.RunDirect(e.Logger, e.timeout, e.arcconfPath, "GETCONFIG", "1", "LD")
56 }
57
58 func (e *directArcconfCliExec) physicalDevicesInfo() ([]byte, error) {
59 return ndexec.RunDirect(e.Logger, e.timeout, e.arcconfPath, "GETCONFIG", "1", "PD")
60 }