Skip to content

Commit

Permalink
Merge pull request #1256 from scop/feat/solaris-disk-serialnumber
Browse files Browse the repository at this point in the history
[disk][solaris] implement SerialNumberWithContext
  • Loading branch information
shirou committed Feb 25, 2022
2 parents 9f4dfe7 + 38e1deb commit 2fa880a
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion disk/disk_solaris.go
Expand Up @@ -5,10 +5,12 @@ package disk

import (
"bufio"
"bytes"
"context"
"fmt"
"math"
"os"
"os/exec"
"strings"

"github.com/shirou/gopsutil/v3/internal/common"
Expand Down Expand Up @@ -114,7 +116,35 @@ func UsageWithContext(ctx context.Context, path string) (*UsageStat, error) {
}

func SerialNumberWithContext(ctx context.Context, name string) (string, error) {
return "", common.ErrNotImplementedError
cfgadm, err := exec.LookPath("cfgadm")
if err != nil {
return "", fmt.Errorf("find cfgadm: %w", err)
}
out, err := invoke.CommandWithContext(ctx, cfgadm, "-ls", "select=type(disk),cols=ap_id:info,cols2=,noheadings")
if err != nil {
return "", fmt.Errorf("exec cfgadm: %w", err)
}

suf := "::" + strings.TrimPrefix(name, "/dev/")
s := bufio.NewScanner(bytes.NewReader(out))
for s.Scan() {
flds := strings.Fields(s.Text())
if strings.HasSuffix(flds[0], suf) {
flen := len(flds)
if flen >= 3 {
for i, f := range flds {
if i > 0 && i < flen-1 && f == "SN:" {
return flds[i+1], nil
}
}
}
return "", nil
}
}
if err := s.Err(); err != nil {
return "", err
}
return "", nil
}

func LabelWithContext(ctx context.Context, name string) (string, error) {
Expand Down

0 comments on commit 2fa880a

Please sign in to comment.