Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
81
plugins/inputs/intel_baseband/utils.go
Normal file
81
plugins/inputs/intel_baseband/utils.go
Normal file
|
@ -0,0 +1,81 @@
|
|||
//go:build linux && amd64
|
||||
|
||||
package intel_baseband
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type fileType int
|
||||
|
||||
const (
|
||||
log fileType = iota
|
||||
socket
|
||||
)
|
||||
|
||||
func validatePath(pathToRead string, ft fileType) (string, error) {
|
||||
if pathToRead == "" {
|
||||
return "", errors.New("required path not specified")
|
||||
}
|
||||
cleanPath := path.Clean(pathToRead)
|
||||
if (ft == log && path.Ext(cleanPath) != logFileExtension) || (ft == socket && path.Ext(cleanPath) != socketExtension) {
|
||||
return "", fmt.Errorf("wrong file extension: %q", cleanPath)
|
||||
}
|
||||
if !path.IsAbs(cleanPath) {
|
||||
return "", fmt.Errorf("path is not absolute %q", cleanPath)
|
||||
}
|
||||
return cleanPath, nil
|
||||
}
|
||||
|
||||
func checkFile(pathToFile string, fileType fileType) error {
|
||||
pathInfo, err := os.Lstat(pathToFile)
|
||||
if err != nil {
|
||||
if errors.Is(err, fs.ErrNotExist) {
|
||||
return fmt.Errorf("provided path does not exist: %q", pathToFile)
|
||||
}
|
||||
if errors.Is(err, fs.ErrPermission) {
|
||||
return fmt.Errorf("user doesn't have enough privileges to file %q", pathToFile)
|
||||
}
|
||||
|
||||
return fmt.Errorf("couldn't get system information of file %q: %w", pathToFile, err)
|
||||
}
|
||||
|
||||
mode := pathInfo.Mode()
|
||||
switch fileType {
|
||||
case socket:
|
||||
if mode&os.ModeSocket != os.ModeSocket {
|
||||
return fmt.Errorf("provided path does not point to a socket file: %q", pathToFile)
|
||||
}
|
||||
case log:
|
||||
if !(mode.IsRegular()) {
|
||||
return fmt.Errorf("provided path does not point to a log file: %q", pathToFile)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Replace metric name to snake case
|
||||
// Example: Code Blocks -> code_blocks
|
||||
func metricNameToTagName(metricName string) string {
|
||||
cleanedStr := strings.Replace(strings.Replace(strings.Replace(metricName, "(", "", -1), ")", "", -1), " ", "_", -1)
|
||||
return strings.ToLower(cleanedStr)
|
||||
}
|
||||
|
||||
func logMetricDataToValue(data string) (int, error) {
|
||||
value, err := strconv.Atoi(data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if value < 0 {
|
||||
return 0, errors.New("metric can't be negative")
|
||||
}
|
||||
|
||||
return value, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue