Move to typical go project layout, fix golangci-lint warnings, update deps
This commit is contained in:
11
vendor/github.com/lufia/plan9stats/README.md
generated
vendored
11
vendor/github.com/lufia/plan9stats/README.md
generated
vendored
@@ -1,13 +1,2 @@
|
||||
# plan9stats
|
||||
A module for retrieving statistics of Plan 9
|
||||
|
||||
[![GoDev][godev-image]][godev-url]
|
||||
[![Actions Status][actions-image]][actions-url]
|
||||
[![Coverage Status][coveralls-image]][coveralls-url]
|
||||
|
||||
[godev-image]: https://pkg.go.dev/badge/github.com/lufia/plan9stats
|
||||
[godev-url]: https://pkg.go.dev/github.com/lufia/plan9stats
|
||||
[actions-image]: https://github.com/lufia/plan9stats/workflows/Test/badge.svg?branch=main
|
||||
[actions-url]: https://github.com/lufia/plan9stats/actions?workflow=Test
|
||||
[coveralls-image]: https://coveralls.io/repos/github/lufia/plan9stats/badge.svg
|
||||
[coveralls-url]: https://coveralls.io/github/lufia/plan9stats
|
||||
|
||||
5
vendor/github.com/lufia/plan9stats/cpu.go
generated
vendored
5
vendor/github.com/lufia/plan9stats/cpu.go
generated
vendored
@@ -178,12 +178,9 @@ func ReadCPUStats(ctx context.Context, opts ...Option) (*CPUStats, error) {
|
||||
var up uint32parser
|
||||
pids := make([]uint32, len(names))
|
||||
for i, s := range names {
|
||||
if s == "trace" {
|
||||
continue
|
||||
}
|
||||
pids[i] = up.Parse(s)
|
||||
}
|
||||
if err := up.err; err != nil {
|
||||
if up.err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sort.Slice(pids, func(i, j int) bool {
|
||||
|
||||
116
vendor/github.com/lufia/plan9stats/disk.go
generated
vendored
116
vendor/github.com/lufia/plan9stats/disk.go
generated
vendored
@@ -1,116 +0,0 @@
|
||||
package stats
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"context"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Storage represents /dev/sdXX/ctl.
|
||||
type Storage struct {
|
||||
Name string
|
||||
Model string
|
||||
Capacity int64
|
||||
Partitions []*Partition
|
||||
}
|
||||
|
||||
// Partition represents a part of /dev/sdXX/ctl.
|
||||
type Partition struct {
|
||||
Name string
|
||||
Start uint64
|
||||
End uint64
|
||||
}
|
||||
|
||||
func ReadStorages(ctx context.Context, opts ...Option) ([]*Storage, error) {
|
||||
cfg := newConfig(opts...)
|
||||
sdctl := filepath.Join(cfg.rootdir, "/dev/sdctl")
|
||||
f, err := os.Open(sdctl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
var a []*Storage
|
||||
scanner := bufio.NewScanner(f)
|
||||
for scanner.Scan() {
|
||||
fields := bytes.Split(scanner.Bytes(), delim)
|
||||
if len(fields) == 0 {
|
||||
continue
|
||||
}
|
||||
exp := string(fields[0]) + "*"
|
||||
if !strings.HasPrefix(exp, "sd") {
|
||||
continue
|
||||
}
|
||||
dir := filepath.Join(cfg.rootdir, "/dev", exp)
|
||||
m, err := filepath.Glob(dir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, dir := range m {
|
||||
s, err := readStorage(dir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
a = append(a, s)
|
||||
}
|
||||
}
|
||||
if err := scanner.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
func readStorage(dir string) (*Storage, error) {
|
||||
ctl := filepath.Join(dir, "ctl")
|
||||
f, err := os.Open(ctl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
var s Storage
|
||||
s.Name = filepath.Base(dir)
|
||||
scanner := bufio.NewScanner(f)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Bytes()
|
||||
switch {
|
||||
case bytes.HasPrefix(line, []byte("inquiry ")):
|
||||
s.Model = string(bytes.TrimSpace(line[7:]))
|
||||
case bytes.HasPrefix(line, []byte("geometry ")):
|
||||
fields := bytes.Split(line, delim)
|
||||
if len(fields) < 3 {
|
||||
continue
|
||||
}
|
||||
var p intParser
|
||||
sec := p.ParseInt64(string(fields[1]), 10)
|
||||
size := p.ParseInt64(string(fields[2]), 10)
|
||||
if err := p.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s.Capacity = sec * size
|
||||
case bytes.HasPrefix(line, []byte("part ")):
|
||||
fields := bytes.Split(line, delim)
|
||||
if len(fields) < 4 {
|
||||
continue
|
||||
}
|
||||
var p intParser
|
||||
start := p.ParseUint64(string(fields[2]), 10)
|
||||
end := p.ParseUint64(string(fields[3]), 10)
|
||||
if err := p.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s.Partitions = append(s.Partitions, &Partition{
|
||||
Name: string(fields[1]),
|
||||
Start: start,
|
||||
End: end,
|
||||
})
|
||||
}
|
||||
}
|
||||
if err := scanner.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &s, nil
|
||||
}
|
||||
82
vendor/github.com/lufia/plan9stats/host.go
generated
vendored
82
vendor/github.com/lufia/plan9stats/host.go
generated
vendored
@@ -109,6 +109,12 @@ func parseGauge(s string, r *Gauge) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
type Storage struct {
|
||||
Name string
|
||||
Model string
|
||||
Capacity int64
|
||||
}
|
||||
|
||||
type Interface struct {
|
||||
Name string
|
||||
Addr string
|
||||
@@ -171,7 +177,7 @@ func ReadHost(ctx context.Context, opts ...Option) (*Host, error) {
|
||||
}
|
||||
h.Sysname = name
|
||||
|
||||
a, err := ReadStorages(ctx, opts...)
|
||||
a, err := readStorages(cfg.rootdir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -197,6 +203,80 @@ func readSysname(rootdir string) (string, error) {
|
||||
return string(bytes.TrimSpace(b)), nil
|
||||
}
|
||||
|
||||
func readStorages(rootdir string) ([]*Storage, error) {
|
||||
sdctl := filepath.Join(rootdir, "/dev/sdctl")
|
||||
f, err := os.Open(sdctl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
var a []*Storage
|
||||
scanner := bufio.NewScanner(f)
|
||||
for scanner.Scan() {
|
||||
fields := bytes.Split(scanner.Bytes(), delim)
|
||||
if len(fields) == 0 {
|
||||
continue
|
||||
}
|
||||
exp := string(fields[0]) + "*"
|
||||
if !strings.HasPrefix(exp, "sd") {
|
||||
continue
|
||||
}
|
||||
dir := filepath.Join(rootdir, "/dev", exp)
|
||||
m, err := filepath.Glob(dir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, dir := range m {
|
||||
s, err := readStorage(dir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
a = append(a, s)
|
||||
}
|
||||
}
|
||||
if err := scanner.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
func readStorage(dir string) (*Storage, error) {
|
||||
ctl := filepath.Join(dir, "ctl")
|
||||
f, err := os.Open(ctl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
var s Storage
|
||||
s.Name = filepath.Base(dir)
|
||||
scanner := bufio.NewScanner(f)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Bytes()
|
||||
switch {
|
||||
case bytes.HasPrefix(line, []byte("inquiry")):
|
||||
s.Model = string(bytes.TrimSpace(line[7:]))
|
||||
case bytes.HasPrefix(line, []byte("geometry")):
|
||||
fields := bytes.Split(line, delim)
|
||||
if len(fields) < 3 {
|
||||
continue
|
||||
}
|
||||
var p intParser
|
||||
sec := p.ParseInt64(string(fields[1]), 10)
|
||||
size := p.ParseInt64(string(fields[2]), 10)
|
||||
if err := p.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s.Capacity = sec * size
|
||||
}
|
||||
}
|
||||
if err := scanner.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &s, nil
|
||||
}
|
||||
|
||||
type IPStats struct {
|
||||
ID int // number of interface in ipifc dir
|
||||
Device string // associated physical device
|
||||
|
||||
9
vendor/github.com/lufia/plan9stats/int.go
generated
vendored
9
vendor/github.com/lufia/plan9stats/int.go
generated
vendored
@@ -26,15 +26,6 @@ func (p *intParser) ParseInt64(s string, base int) int64 {
|
||||
return n
|
||||
}
|
||||
|
||||
func (p *intParser) ParseUint64(s string, base int) uint64 {
|
||||
if p.err != nil {
|
||||
return 0
|
||||
}
|
||||
var n uint64
|
||||
n, p.err = strconv.ParseUint(s, base, 64)
|
||||
return n
|
||||
}
|
||||
|
||||
func (p *intParser) Err() error {
|
||||
return p.err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user