summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnatol Pomozov <anatol.pomozov@gmail.com>2022-09-17 12:52:54 -0700
committerAnatol Pomozov <anatol.pomozov@gmail.com>2022-09-17 12:57:15 -0700
commit93fe0cab2eb61bc165adff07fe1af8ad05af172e (patch)
treedd37be4ec4d5b371c65c29b9826c7b228045d3a1
parent31f071ba7f4960b24d17250b7e4027736a417b87 (diff)
smart.go: switch to simpler ReadGenericAttributes() api
...to get the device temperature. This API abstracts differences between different device interfaces (SATA vs NVMe vs ...)
-rw-r--r--devices/temp_nix.go32
-rw-r--r--go.mod5
-rw-r--r--go.sum9
3 files changed, 16 insertions, 30 deletions
diff --git a/devices/temp_nix.go b/devices/temp_nix.go
index 1f0d583..79fc53b 100644
--- a/devices/temp_nix.go
+++ b/devices/temp_nix.go
@@ -11,9 +11,6 @@ import (
"github.com/shirou/gopsutil/host"
)
-// offset for converting temperature from Kelvins to Celsius (273.15)
-const kelvinOffset = 273
-
var smDevices map[string]smart.Device
func init() {
@@ -70,31 +67,12 @@ func getTemps(temps map[string]int) map[string]error {
}
for name, dev := range smDevices {
- switch sm := dev.(type) {
- case *smart.SataDevice:
- data, err := sm.ReadSMARTData()
- if err != nil {
- log.Printf("error getting smart data for %s: %s", name, err)
- continue
- }
- if attr, ok := data.Attrs[194]; ok {
- val, _, _, _, err := attr.ParseAsTemperature()
- if err != nil {
- log.Printf("error parsing temperature smart data for %s: %s", name, err)
- continue
- }
- temps[name] = val
- }
- case *smart.NVMeDevice:
- data, err := sm.ReadSMART()
- if err != nil {
- log.Printf("error getting smart data for %s: %s", name, err)
- continue
- }
- // nvme reports the temperature in Kelvins
- temps[name] = int(data.Temperature) - kelvinOffset
- default:
+ attr, err := dev.ReadGenericAttributes()
+ if err != nil {
+ log.Printf("error getting smart data for %s: %s", name, err)
+ continue
}
+ temps[name] = int(attr.Temperature)
}
return nil
}
diff --git a/go.mod b/go.mod
index dceebbd..940efe4 100644
--- a/go.mod
+++ b/go.mod
@@ -4,7 +4,7 @@ require (
github.com/BurntSushi/toml v1.1.0 // indirect
github.com/VictoriaMetrics/metrics v1.18.1
github.com/VividCortex/ewma v1.2.0
- github.com/anatol/smart.go v0.0.0-20220615232124-64dea241c3bb
+ github.com/anatol/smart.go v0.0.0-20220917195147-c0b00d90f8cc
github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21
github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect
github.com/distatus/battery v0.10.0
@@ -18,9 +18,8 @@ require (
github.com/onsi/gomega v1.10.4 // indirect
github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0
github.com/shirou/gopsutil v3.20.12+incompatible
- github.com/stretchr/testify v1.7.2
+ github.com/stretchr/testify v1.8.0
github.com/xxxserxxx/lingo/v2 v2.0.1
- golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
)
diff --git a/go.sum b/go.sum
index 2281743..a1b33d0 100644
--- a/go.sum
+++ b/go.sum
@@ -20,6 +20,10 @@ github.com/anatol/smart.go v0.0.0-20220608000525-80bf85256c1c h1:+8vjVFVRMVHj7oW
github.com/anatol/smart.go v0.0.0-20220608000525-80bf85256c1c/go.mod h1:F486dIGdTbYMmAj8dtlVbjQasL8WS7lhnijBk4wJmKQ=
github.com/anatol/smart.go v0.0.0-20220615232124-64dea241c3bb h1:cKi4b86dLoZulJet0/ubN9oFea1eBHZj7bNK8icQamM=
github.com/anatol/smart.go v0.0.0-20220615232124-64dea241c3bb/go.mod h1:F486dIGdTbYMmAj8dtlVbjQasL8WS7lhnijBk4wJmKQ=
+github.com/anatol/smart.go v0.0.0-20220822162331-dfd542946993 h1:bUUNet+OAyiDUN78ffh3zydHpCMFg+7eAe72zwAoqPU=
+github.com/anatol/smart.go v0.0.0-20220822162331-dfd542946993/go.mod h1:F486dIGdTbYMmAj8dtlVbjQasL8WS7lhnijBk4wJmKQ=
+github.com/anatol/smart.go v0.0.0-20220917195147-c0b00d90f8cc h1:UH+K+oojIu7jWqJrmPXCb33A/ZIfCLBIorj3KQGJxgs=
+github.com/anatol/smart.go v0.0.0-20220917195147-c0b00d90f8cc/go.mod h1:H/rz4ePNwdNiEdxv+NRWuqONKHe2N5n7rCQftsmStNE=
github.com/anatol/vmtest v0.0.0-20211215032353-afd7b1dd38ef/go.mod h1:JiDFhD1zjgMx9ONsHhhucGwMvCLrJMl/yu/l5qP4XFw=
github.com/anatol/vmtest v0.0.0-20220413190228-7a42f1f6d7b8/go.mod h1:oPm5wWoqTSkeoPe1Q3sPryTK8o24Jcbwh8dKOiiIobk=
github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:Yg2hDs4b13Evkpj42FU2idX2cVXVFqQSheXYKM86Qsk=
@@ -112,6 +116,7 @@ github.com/shirou/gopsutil v3.20.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMT
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -119,6 +124,7 @@ github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMT
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/tmc/scp v0.0.0-20170824174625-f7b48647feef/go.mod h1:WLFStEdnJXpjK8kd4qKLwQKX/1vrDzp5BcDyiZJBHJM=
github.com/valyala/fastrand v1.0.0 h1:LUKT9aKer2dVQNUi3waewTbKV+7H17kvWFNKs2ObdkI=
github.com/valyala/fastrand v1.0.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ=
@@ -136,6 +142,7 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
@@ -168,6 +175,8 @@ golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d h1:Zu/JngovGLVi6t2J3nmAf3AoTDwuzw85YZ3b9o4yU7s=
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 h1:ohgcoMbSofXygzo6AD2I1kz3BFmW1QArPYTtwEM3UXc=
+golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=