vendor: bump prometheus/procfs v0.0.8
full diff: cb4147076a...v0.0.8
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
			
			
This commit is contained in:
		
							
								
								
									
										55
									
								
								vendor/github.com/prometheus/procfs/internal/fs/fs.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								vendor/github.com/prometheus/procfs/internal/fs/fs.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
// Copyright 2019 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
package fs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// DefaultProcMountPoint is the common mount point of the proc filesystem.
 | 
			
		||||
	DefaultProcMountPoint = "/proc"
 | 
			
		||||
 | 
			
		||||
	// DefaultSysMountPoint is the common mount point of the sys filesystem.
 | 
			
		||||
	DefaultSysMountPoint = "/sys"
 | 
			
		||||
 | 
			
		||||
	// DefaultConfigfsMountPoint is the common mount point of the configfs
 | 
			
		||||
	DefaultConfigfsMountPoint = "/sys/kernel/config"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// FS represents a pseudo-filesystem, normally /proc or /sys, which provides an
 | 
			
		||||
// interface to kernel data structures.
 | 
			
		||||
type FS string
 | 
			
		||||
 | 
			
		||||
// NewFS returns a new FS mounted under the given mountPoint. It will error
 | 
			
		||||
// if the mount point can't be read.
 | 
			
		||||
func NewFS(mountPoint string) (FS, error) {
 | 
			
		||||
	info, err := os.Stat(mountPoint)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", fmt.Errorf("could not read %s: %s", mountPoint, err)
 | 
			
		||||
	}
 | 
			
		||||
	if !info.IsDir() {
 | 
			
		||||
		return "", fmt.Errorf("mount point %s is not a directory", mountPoint)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return FS(mountPoint), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Path appends the given path elements to the filesystem path, adding separators
 | 
			
		||||
// as necessary.
 | 
			
		||||
func (fs FS) Path(p ...string) string {
 | 
			
		||||
	return filepath.Join(append([]string{string(fs)}, p...)...)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								vendor/github.com/prometheus/procfs/internal/util/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								vendor/github.com/prometheus/procfs/internal/util/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -13,7 +13,11 @@
 | 
			
		||||
 | 
			
		||||
package util
 | 
			
		||||
 | 
			
		||||
import "strconv"
 | 
			
		||||
import (
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ParseUint32s parses a slice of strings into a slice of uint32s.
 | 
			
		||||
func ParseUint32s(ss []string) ([]uint32, error) {
 | 
			
		||||
@@ -44,3 +48,41 @@ func ParseUint64s(ss []string) ([]uint64, error) {
 | 
			
		||||
 | 
			
		||||
	return us, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ParsePInt64s parses a slice of strings into a slice of int64 pointers.
 | 
			
		||||
func ParsePInt64s(ss []string) ([]*int64, error) {
 | 
			
		||||
	us := make([]*int64, 0, len(ss))
 | 
			
		||||
	for _, s := range ss {
 | 
			
		||||
		u, err := strconv.ParseInt(s, 10, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		us = append(us, &u)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return us, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadUintFromFile reads a file and attempts to parse a uint64 from it.
 | 
			
		||||
func ReadUintFromFile(path string) (uint64, error) {
 | 
			
		||||
	data, err := ioutil.ReadFile(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ParseBool parses a string into a boolean pointer.
 | 
			
		||||
func ParseBool(b string) *bool {
 | 
			
		||||
	var truth bool
 | 
			
		||||
	switch b {
 | 
			
		||||
	case "enabled":
 | 
			
		||||
		truth = true
 | 
			
		||||
	case "disabled":
 | 
			
		||||
		truth = false
 | 
			
		||||
	default:
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	return &truth
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								vendor/github.com/prometheus/procfs/internal/util/readfile.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/prometheus/procfs/internal/util/readfile.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
// Copyright 2019 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
package util
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ReadFileNoStat uses ioutil.ReadAll to read contents of entire file.
 | 
			
		||||
// This is similar to ioutil.ReadFile but without the call to os.Stat, because
 | 
			
		||||
// many files in /proc and /sys report incorrect file sizes (either 0 or 4096).
 | 
			
		||||
// Reads a max file size of 512kB.  For files larger than this, a scanner
 | 
			
		||||
// should be used.
 | 
			
		||||
func ReadFileNoStat(filename string) ([]byte, error) {
 | 
			
		||||
	const maxBufferSize = 1024 * 512
 | 
			
		||||
 | 
			
		||||
	f, err := os.Open(filename)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	defer f.Close()
 | 
			
		||||
 | 
			
		||||
	reader := io.LimitReader(f, maxBufferSize)
 | 
			
		||||
	return ioutil.ReadAll(reader)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
// Copyright 2018 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux,!appengine
 | 
			
		||||
 | 
			
		||||
package util
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"os"
 | 
			
		||||
	"syscall"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SysReadFile is a simplified ioutil.ReadFile that invokes syscall.Read directly.
 | 
			
		||||
// https://github.com/prometheus/node_exporter/pull/728/files
 | 
			
		||||
//
 | 
			
		||||
// Note that this function will not read files larger than 128 bytes.
 | 
			
		||||
func SysReadFile(file string) (string, error) {
 | 
			
		||||
	f, err := os.Open(file)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	defer f.Close()
 | 
			
		||||
 | 
			
		||||
	// On some machines, hwmon drivers are broken and return EAGAIN.  This causes
 | 
			
		||||
	// Go's ioutil.ReadFile implementation to poll forever.
 | 
			
		||||
	//
 | 
			
		||||
	// Since we either want to read data or bail immediately, do the simplest
 | 
			
		||||
	// possible read using syscall directly.
 | 
			
		||||
	const sysFileBufferSize = 128
 | 
			
		||||
	b := make([]byte, sysFileBufferSize)
 | 
			
		||||
	n, err := syscall.Read(int(f.Fd()), b)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return string(bytes.TrimSpace(b[:n])), nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
// Copyright 2019 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux,appengine !linux
 | 
			
		||||
 | 
			
		||||
package util
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SysReadFile is here implemented as a noop for builds that do not support
 | 
			
		||||
// the read syscall. For example Windows, or Linux on Google App Engine.
 | 
			
		||||
func SysReadFile(file string) (string, error) {
 | 
			
		||||
	return "", fmt.Errorf("not supported on this platform")
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										91
									
								
								vendor/github.com/prometheus/procfs/internal/util/valueparser.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								vendor/github.com/prometheus/procfs/internal/util/valueparser.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
			
		||||
// Copyright 2019 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
package util
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// TODO(mdlayher): util packages are an anti-pattern and this should be moved
 | 
			
		||||
// somewhere else that is more focused in the future.
 | 
			
		||||
 | 
			
		||||
// A ValueParser enables parsing a single string into a variety of data types
 | 
			
		||||
// in a concise and safe way. The Err method must be invoked after invoking
 | 
			
		||||
// any other methods to ensure a value was successfully parsed.
 | 
			
		||||
type ValueParser struct {
 | 
			
		||||
	v   string
 | 
			
		||||
	err error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewValueParser creates a ValueParser using the input string.
 | 
			
		||||
func NewValueParser(v string) *ValueParser {
 | 
			
		||||
	return &ValueParser{v: v}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int interprets the underlying value as an int and returns that value.
 | 
			
		||||
func (vp *ValueParser) Int() int { return int(vp.int64()) }
 | 
			
		||||
 | 
			
		||||
// PInt64 interprets the underlying value as an int64 and returns a pointer to
 | 
			
		||||
// that value.
 | 
			
		||||
func (vp *ValueParser) PInt64() *int64 {
 | 
			
		||||
	if vp.err != nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	v := vp.int64()
 | 
			
		||||
	return &v
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// int64 interprets the underlying value as an int64 and returns that value.
 | 
			
		||||
// TODO: export if/when necessary.
 | 
			
		||||
func (vp *ValueParser) int64() int64 {
 | 
			
		||||
	if vp.err != nil {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// A base value of zero makes ParseInt infer the correct base using the
 | 
			
		||||
	// string's prefix, if any.
 | 
			
		||||
	const base = 0
 | 
			
		||||
	v, err := strconv.ParseInt(vp.v, base, 64)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		vp.err = err
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PUInt64 interprets the underlying value as an uint64 and returns a pointer to
 | 
			
		||||
// that value.
 | 
			
		||||
func (vp *ValueParser) PUInt64() *uint64 {
 | 
			
		||||
	if vp.err != nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// A base value of zero makes ParseInt infer the correct base using the
 | 
			
		||||
	// string's prefix, if any.
 | 
			
		||||
	const base = 0
 | 
			
		||||
	v, err := strconv.ParseUint(vp.v, base, 64)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		vp.err = err
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &v
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Err returns the last error, if any, encountered by the ValueParser.
 | 
			
		||||
func (vp *ValueParser) Err() error {
 | 
			
		||||
	return vp.err
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user