chore: Fix linter findings for errorlint (part2) (#12702)
Co-authored-by: Pawel Zak <Pawel Zak>
This commit is contained in:
parent
97f8a596e2
commit
4201f24020
|
|
@ -115,7 +115,7 @@ func (q *Quantile) Init() error {
|
||||||
return fmt.Errorf("unknown algorithm type %q", q.AlgorithmType)
|
return fmt.Errorf("unknown algorithm type %q", q.AlgorithmType)
|
||||||
}
|
}
|
||||||
if _, err := q.newAlgorithm(q.Compression); err != nil {
|
if _, err := q.newAlgorithm(q.Compression); err != nil {
|
||||||
return fmt.Errorf("cannot create %q algorithm: %v", q.AlgorithmType, err)
|
return fmt.Errorf("cannot create %q algorithm: %w", q.AlgorithmType, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(q.Quantiles) == 0 {
|
if len(q.Quantiles) == 0 {
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ func (r *Reader) Read(p []byte) (int, error) {
|
||||||
if r.src0 != r.src1 || r.err != nil {
|
if r.src0 != r.src1 || r.err != nil {
|
||||||
var err error
|
var err error
|
||||||
r.dst0 = 0
|
r.dst0 = 0
|
||||||
r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF)
|
r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], errors.Is(r.err, io.EOF))
|
||||||
r.src0 += n
|
r.src0 += n
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
|
|
@ -145,16 +145,16 @@ func (r *Reader) Read(p []byte) (int, error) {
|
||||||
// cannot read more bytes into src.
|
// cannot read more bytes into src.
|
||||||
r.transformComplete = r.err != nil
|
r.transformComplete = r.err != nil
|
||||||
continue
|
continue
|
||||||
case err == ErrShortDst && (r.dst1 != 0 || n != 0):
|
case errors.Is(err, ErrShortDst) && (r.dst1 != 0 || n != 0):
|
||||||
// Make room in dst by copying out, and try again.
|
// Make room in dst by copying out, and try again.
|
||||||
continue
|
continue
|
||||||
case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil:
|
case errors.Is(err, ErrShortSrc) && r.src1-r.src0 != len(r.src) && r.err == nil:
|
||||||
// Read more bytes into src via the code below, and try again.
|
// Read more bytes into src via the code below, and try again.
|
||||||
default:
|
default:
|
||||||
r.transformComplete = true
|
r.transformComplete = true
|
||||||
// The reader error (r.err) takes precedence over the
|
// The reader error (r.err) takes precedence over the
|
||||||
// transformer error (err) unless r.err is nil or io.EOF.
|
// transformer error (err) unless r.err is nil or io.EOF.
|
||||||
if r.err == nil || r.err == io.EOF {
|
if r.err == nil || errors.Is(r.err, io.EOF) {
|
||||||
r.err = err
|
r.err = err
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ func (c *Client) read(requests []ReadRequest) ([]ReadResponse, error) {
|
||||||
|
|
||||||
var jResponses []jolokiaResponse
|
var jResponses []jolokiaResponse
|
||||||
if err = json.Unmarshal(responseBody, &jResponses); err != nil {
|
if err = json.Unmarshal(responseBody, &jResponses); err != nil {
|
||||||
return nil, fmt.Errorf("decoding JSON response: %s: %s", err, responseBody)
|
return nil, fmt.Errorf("decoding JSON response: %w: %s", err, responseBody)
|
||||||
}
|
}
|
||||||
|
|
||||||
return makeReadResponses(jResponses), nil
|
return makeReadResponses(jResponses), nil
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
"github.com/gopcua/opcua"
|
"github.com/gopcua/opcua"
|
||||||
"github.com/gopcua/opcua/ua"
|
"github.com/gopcua/opcua/ua"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
)
|
)
|
||||||
|
|
@ -184,7 +185,7 @@ func (o *OpcUAClient) Connect() error {
|
||||||
defer cancel()
|
defer cancel()
|
||||||
if err := o.Client.Connect(ctx); err != nil {
|
if err := o.Client.Connect(ctx); err != nil {
|
||||||
o.State = Disconnected
|
o.State = Disconnected
|
||||||
return fmt.Errorf("error in Client Connection: %s", err)
|
return fmt.Errorf("error in Client Connection: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
o.State = Connected
|
o.State = Connected
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ func generateCert(host string, rsaBits int, certFile, keyFile string, dur time.D
|
||||||
|
|
||||||
priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
|
priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to generate private key: %s", err)
|
return "", "", fmt.Errorf("failed to generate private key: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
notBefore := time.Now()
|
notBefore := time.Now()
|
||||||
|
|
@ -56,7 +56,7 @@ func generateCert(host string, rsaBits int, certFile, keyFile string, dur time.D
|
||||||
serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
|
serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
|
||||||
serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
|
serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to generate serial number: %s", err)
|
return "", "", fmt.Errorf("failed to generate serial number: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
template := x509.Certificate{
|
template := x509.Certificate{
|
||||||
|
|
@ -87,33 +87,33 @@ func generateCert(host string, rsaBits int, certFile, keyFile string, dur time.D
|
||||||
|
|
||||||
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
|
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to create certificate: %s", err)
|
return "", "", fmt.Errorf("failed to create certificate: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
certOut, err := os.Create(certFile)
|
certOut, err := os.Create(certFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to open %s for writing: %s", certFile, err)
|
return "", "", fmt.Errorf("failed to open %s for writing: %w", certFile, err)
|
||||||
}
|
}
|
||||||
if err := pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil {
|
if err := pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil {
|
||||||
return "", "", fmt.Errorf("failed to write data to %s: %s", certFile, err)
|
return "", "", fmt.Errorf("failed to write data to %s: %w", certFile, err)
|
||||||
}
|
}
|
||||||
if err := certOut.Close(); err != nil {
|
if err := certOut.Close(); err != nil {
|
||||||
return "", "", fmt.Errorf("error closing %s: %s", certFile, err)
|
return "", "", fmt.Errorf("error closing %s: %w", certFile, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
keyOut, err := os.OpenFile(keyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
keyOut, err := os.OpenFile(keyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("failed to open %s for writing: %s", keyFile, err)
|
return "", "", fmt.Errorf("failed to open %s for writing: %w", keyFile, err)
|
||||||
}
|
}
|
||||||
keyBlock, err := pemBlockForKey(priv)
|
keyBlock, err := pemBlockForKey(priv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", fmt.Errorf("error generating block: %v", err)
|
return "", "", fmt.Errorf("error generating block: %w", err)
|
||||||
}
|
}
|
||||||
if err := pem.Encode(keyOut, keyBlock); err != nil {
|
if err := pem.Encode(keyOut, keyBlock); err != nil {
|
||||||
return "", "", fmt.Errorf("failed to write data to %s: %s", keyFile, err)
|
return "", "", fmt.Errorf("failed to write data to %s: %w", keyFile, err)
|
||||||
}
|
}
|
||||||
if err := keyOut.Close(); err != nil {
|
if err := keyOut.Close(); err != nil {
|
||||||
return "", "", fmt.Errorf("error closing %s: %s", keyFile, err)
|
return "", "", fmt.Errorf("error closing %s: %w", keyFile, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return certFile, keyFile, nil
|
return certFile, keyFile, nil
|
||||||
|
|
@ -137,7 +137,7 @@ func pemBlockForKey(priv interface{}) (*pem.Block, error) {
|
||||||
case *ecdsa.PrivateKey:
|
case *ecdsa.PrivateKey:
|
||||||
b, err := x509.MarshalECPrivateKey(k)
|
b, err := x509.MarshalECPrivateKey(k)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to marshal ECDSA private key: %v", err)
|
return nil, fmt.Errorf("unable to marshal ECDSA private key: %w", err)
|
||||||
}
|
}
|
||||||
return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}, nil
|
return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}, nil
|
||||||
default:
|
default:
|
||||||
|
|
@ -282,7 +282,7 @@ func (o *OpcUAClient) generateClientOpts(endpoints []*ua.EndpointDescription) ([
|
||||||
// Check that the selected endpoint is a valid combo
|
// Check that the selected endpoint is a valid combo
|
||||||
err = validateEndpointConfig(endpoints, secPolicy, secMode, authMode)
|
err = validateEndpointConfig(endpoints, secPolicy, secMode, authMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error validating input: %s", err)
|
return nil, fmt.Errorf("error validating input: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
opts = append(opts, opcua.SecurityFromEndpoint(serverEndpoint, authMode))
|
opts = append(opts, opcua.SecurityFromEndpoint(serverEndpoint, authMode))
|
||||||
|
|
@ -304,13 +304,13 @@ func (o *OpcUAClient) generateAuth(a string, cert []byte, un, pw string) (ua.Use
|
||||||
|
|
||||||
if un == "" {
|
if un == "" {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, nil, fmt.Errorf("error reading the username input: %s", err)
|
return 0, nil, fmt.Errorf("error reading the username input: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if pw == "" {
|
if pw == "" {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, nil, fmt.Errorf("error reading the password input: %s", err)
|
return 0, nil, fmt.Errorf("error reading the password input: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -110,12 +110,12 @@ func (s *Shim) writeProcessedMetrics() error {
|
||||||
}
|
}
|
||||||
b, err := serializer.Serialize(m)
|
b, err := serializer.Serialize(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to serialize metric: %s", err)
|
return fmt.Errorf("failed to serialize metric: %w", err)
|
||||||
}
|
}
|
||||||
// Write this to stdout
|
// Write this to stdout
|
||||||
_, err = fmt.Fprint(s.stdout, string(b))
|
_, err = fmt.Fprint(s.stdout, string(b))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to write metric: %s", err)
|
return fmt.Errorf("failed to write metric: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ func (s *Shim) AddInput(input telegraf.Input) error {
|
||||||
if p, ok := input.(telegraf.Initializer); ok {
|
if p, ok := input.(telegraf.Initializer); ok {
|
||||||
err := p.Init()
|
err := p.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to init input: %s", err)
|
return fmt.Errorf("failed to init input: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -38,7 +38,7 @@ func (s *Shim) RunInput(pollInterval time.Duration) error {
|
||||||
|
|
||||||
if serviceInput, ok := s.Input.(telegraf.ServiceInput); ok {
|
if serviceInput, ok := s.Input.(telegraf.ServiceInput); ok {
|
||||||
if err := serviceInput.Start(acc); err != nil {
|
if err := serviceInput.Start(acc); err != nil {
|
||||||
return fmt.Errorf("failed to start input: %s", err)
|
return fmt.Errorf("failed to start input: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.gatherPromptCh = make(chan empty, 1)
|
s.gatherPromptCh = make(chan empty, 1)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ func (s *Shim) AddOutput(output telegraf.Output) error {
|
||||||
if p, ok := output.(telegraf.Initializer); ok {
|
if p, ok := output.(telegraf.Initializer); ok {
|
||||||
err := p.Init()
|
err := p.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to init input: %s", err)
|
return fmt.Errorf("failed to init input: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package shim
|
package shim
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
@ -24,7 +25,7 @@ func (s *Shim) AddStreamingProcessor(processor telegraf.StreamingProcessor) erro
|
||||||
if p, ok := processor.(telegraf.Initializer); ok {
|
if p, ok := processor.(telegraf.Initializer); ok {
|
||||||
err := p.Init()
|
err := p.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to init input: %s", err)
|
return fmt.Errorf("failed to init input: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,10 +56,11 @@ func (s *Shim) RunProcessor() error {
|
||||||
for {
|
for {
|
||||||
m, err := parser.Next()
|
m, err := parser.Next()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == influx.EOF {
|
if errors.Is(err, influx.EOF) {
|
||||||
break // stream ended
|
break // stream ended
|
||||||
}
|
}
|
||||||
if parseErr, isParseError := err.(*influx.ParseError); isParseError {
|
var parseErr *influx.ParseError
|
||||||
|
if errors.As(err, &parseErr) {
|
||||||
fmt.Fprintf(s.stderr, "Failed to parse metric: %s\b", parseErr)
|
fmt.Fprintf(s.stderr, "Failed to parse metric: %s\b", parseErr)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ func builtinAttrNames(methods map[string]builtinMethod) []string {
|
||||||
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·clear
|
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·clear
|
||||||
func dictClear(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictClear(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
type HasClear interface {
|
type HasClear interface {
|
||||||
|
|
@ -114,14 +114,14 @@ func dictClear(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple
|
||||||
func dictPop(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictPop(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
var k, d starlark.Value
|
var k, d starlark.Value
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &k, &d); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &k, &d); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
type HasDelete interface {
|
type HasDelete interface {
|
||||||
Delete(k starlark.Value) (starlark.Value, bool, error)
|
Delete(k starlark.Value) (starlark.Value, bool, error)
|
||||||
}
|
}
|
||||||
if v, found, err := b.Receiver().(HasDelete).Delete(k); err != nil {
|
if v, found, err := b.Receiver().(HasDelete).Delete(k); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err) // dict is frozen or key is unhashable
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err) // dict is frozen or key is unhashable
|
||||||
} else if found {
|
} else if found {
|
||||||
return v, nil
|
return v, nil
|
||||||
} else if d != nil {
|
} else if d != nil {
|
||||||
|
|
@ -133,7 +133,7 @@ func dictPop(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple)
|
||||||
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·popitem
|
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·popitem
|
||||||
func dictPopitem(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictPopitem(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
type HasPopItem interface {
|
type HasPopItem interface {
|
||||||
|
|
@ -146,10 +146,10 @@ func dictPopitem(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tup
|
||||||
func dictGet(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictGet(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
var key, dflt starlark.Value
|
var key, dflt starlark.Value
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
if v, ok, err := b.Receiver().(starlark.Mapping).Get(key); err != nil {
|
if v, ok, err := b.Receiver().(starlark.Mapping).Get(key); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
} else if ok {
|
} else if ok {
|
||||||
return v, nil
|
return v, nil
|
||||||
} else if dflt != nil {
|
} else if dflt != nil {
|
||||||
|
|
@ -162,18 +162,18 @@ func dictGet(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple)
|
||||||
func dictSetdefault(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictSetdefault(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
var key, dflt starlark.Value = nil, starlark.None
|
var key, dflt starlark.Value = nil, starlark.None
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &key, &dflt); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
recv := b.Receiver().(starlark.HasSetKey)
|
recv := b.Receiver().(starlark.HasSetKey)
|
||||||
v, found, err := recv.Get(key)
|
v, found, err := recv.Get(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
v = dflt
|
v = dflt
|
||||||
if err := recv.SetKey(key, dflt); err != nil {
|
if err := recv.SetKey(key, dflt); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return v, nil
|
return v, nil
|
||||||
|
|
@ -259,7 +259,7 @@ func dictUpdate(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tupl
|
||||||
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·items
|
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·items
|
||||||
func dictItems(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictItems(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
items := b.Receiver().(starlark.IterableMapping).Items()
|
items := b.Receiver().(starlark.IterableMapping).Items()
|
||||||
res := make([]starlark.Value, 0, len(items))
|
res := make([]starlark.Value, 0, len(items))
|
||||||
|
|
@ -272,7 +272,7 @@ func dictItems(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple
|
||||||
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·keys
|
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·keys
|
||||||
func dictKeys(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictKeys(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
items := b.Receiver().(starlark.IterableMapping).Items()
|
items := b.Receiver().(starlark.IterableMapping).Items()
|
||||||
|
|
@ -286,7 +286,7 @@ func dictKeys(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple)
|
||||||
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·update
|
// https://github.com/google/starlark-go/blob/master/doc/spec.md#dict·update
|
||||||
func dictValues(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
func dictValues(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
items := b.Receiver().(starlark.IterableMapping).Items()
|
items := b.Receiver().(starlark.IterableMapping).Items()
|
||||||
res := make([]starlark.Value, 0, len(items))
|
res := make([]starlark.Value, 0, len(items))
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,10 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
|
||||||
"go.starlark.net/starlark"
|
"go.starlark.net/starlark"
|
||||||
"go.starlark.net/starlarkstruct"
|
"go.starlark.net/starlarkstruct"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Builds a module that defines all the supported logging functions which will log using the provided logger
|
// Builds a module that defines all the supported logging functions which will log using the provided logger
|
||||||
|
|
@ -29,7 +30,7 @@ func LogModule(logger telegraf.Logger) *starlarkstruct.Module {
|
||||||
func log(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple, logger telegraf.Logger) (starlark.Value, error) {
|
func log(b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple, logger telegraf.Logger) (starlark.Value, error) {
|
||||||
var msg starlark.String
|
var msg starlark.String
|
||||||
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &msg); err != nil {
|
if err := starlark.UnpackPositionalArgs(b.Name(), args, kwargs, 1, &msg); err != nil {
|
||||||
return starlark.None, fmt.Errorf("%s: %v", b.Name(), err)
|
return starlark.None, fmt.Errorf("%s: %w", b.Name(), err)
|
||||||
}
|
}
|
||||||
switch b.Name() {
|
switch b.Name() {
|
||||||
case "log.debug":
|
case "log.debug":
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,13 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
|
||||||
"go.starlark.net/lib/json"
|
"go.starlark.net/lib/json"
|
||||||
"go.starlark.net/lib/math"
|
"go.starlark.net/lib/math"
|
||||||
"go.starlark.net/lib/time"
|
"go.starlark.net/lib/time"
|
||||||
"go.starlark.net/resolve"
|
"go.starlark.net/resolve"
|
||||||
"go.starlark.net/starlark"
|
"go.starlark.net/starlark"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Common struct {
|
type Common struct {
|
||||||
|
|
@ -108,7 +109,7 @@ func (s *Common) addConstants(builtins *starlark.StringDict) error {
|
||||||
for key, val := range s.Constants {
|
for key, val := range s.Constants {
|
||||||
sVal, err := asStarlarkValue(val)
|
sVal, err := asStarlarkValue(val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("converting type %T failed: %v", val, err)
|
return fmt.Errorf("converting type %T failed: %w", val, err)
|
||||||
}
|
}
|
||||||
(*builtins)[key] = sVal
|
(*builtins)[key] = sVal
|
||||||
}
|
}
|
||||||
|
|
@ -138,7 +139,8 @@ func (s *Common) Call(name string) (starlark.Value, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Common) LogError(err error) {
|
func (s *Common) LogError(err error) {
|
||||||
if evalErr, ok := err.(*starlark.EvalError); ok {
|
var evalErr *starlark.EvalError
|
||||||
|
if errors.As(err, &evalErr) {
|
||||||
for _, line := range strings.Split(evalErr.Backtrace(), "\n") {
|
for _, line := range strings.Split(evalErr.Backtrace(), "\n") {
|
||||||
s.Log.Error(line)
|
s.Log.Error(line)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ func (c *ServerConfig) TLSConfig() (*tls.Config, error) {
|
||||||
cipherSuites, err := ParseCiphers(c.TLSCipherSuites)
|
cipherSuites, err := ParseCiphers(c.TLSCipherSuites)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
"could not parse server cipher suites %s: %v", strings.Join(c.TLSCipherSuites, ","), err)
|
"could not parse server cipher suites %s: %w", strings.Join(c.TLSCipherSuites, ","), err)
|
||||||
}
|
}
|
||||||
tlsConfig.CipherSuites = cipherSuites
|
tlsConfig.CipherSuites = cipherSuites
|
||||||
}
|
}
|
||||||
|
|
@ -158,7 +158,7 @@ func (c *ServerConfig) TLSConfig() (*tls.Config, error) {
|
||||||
version, err := ParseTLSVersion(c.TLSMaxVersion)
|
version, err := ParseTLSVersion(c.TLSMaxVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
"could not parse tls max version %q: %v", c.TLSMaxVersion, err)
|
"could not parse tls max version %q: %w", c.TLSMaxVersion, err)
|
||||||
}
|
}
|
||||||
tlsConfig.MaxVersion = version
|
tlsConfig.MaxVersion = version
|
||||||
}
|
}
|
||||||
|
|
@ -171,15 +171,13 @@ func (c *ServerConfig) TLSConfig() (*tls.Config, error) {
|
||||||
if c.TLSMinVersion != "" {
|
if c.TLSMinVersion != "" {
|
||||||
version, err := ParseTLSVersion(c.TLSMinVersion)
|
version, err := ParseTLSVersion(c.TLSMinVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf("could not parse tls min version %q: %w", c.TLSMinVersion, err)
|
||||||
"could not parse tls min version %q: %v", c.TLSMinVersion, err)
|
|
||||||
}
|
}
|
||||||
tlsConfig.MinVersion = version
|
tlsConfig.MinVersion = version
|
||||||
}
|
}
|
||||||
|
|
||||||
if tlsConfig.MinVersion != 0 && tlsConfig.MaxVersion != 0 && tlsConfig.MinVersion > tlsConfig.MaxVersion {
|
if tlsConfig.MinVersion != 0 && tlsConfig.MaxVersion != 0 && tlsConfig.MinVersion > tlsConfig.MaxVersion {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf("tls min version %q can't be greater than tls max version %q", tlsConfig.MinVersion, tlsConfig.MaxVersion)
|
||||||
"tls min version %q can't be greater than tls max version %q", tlsConfig.MinVersion, tlsConfig.MaxVersion)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Since clientAuth is tlsConfig.ClientAuth = tls.RequireAndVerifyClientCert
|
// Since clientAuth is tlsConfig.ClientAuth = tls.RequireAndVerifyClientCert
|
||||||
|
|
@ -196,12 +194,10 @@ func makeCertPool(certFiles []string) (*x509.CertPool, error) {
|
||||||
for _, certFile := range certFiles {
|
for _, certFile := range certFiles {
|
||||||
pem, err := os.ReadFile(certFile)
|
pem, err := os.ReadFile(certFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf("could not read certificate %q: %w", certFile, err)
|
||||||
"could not read certificate %q: %v", certFile, err)
|
|
||||||
}
|
}
|
||||||
if !pool.AppendCertsFromPEM(pem) {
|
if !pool.AppendCertsFromPEM(pem) {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf("could not parse any PEM certificates %q: %w", certFile, err)
|
||||||
"could not parse any PEM certificates %q: %v", certFile, err)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pool, nil
|
return pool, nil
|
||||||
|
|
@ -210,8 +206,7 @@ func makeCertPool(certFiles []string) (*x509.CertPool, error) {
|
||||||
func loadCertificate(config *tls.Config, certFile, keyFile string) error {
|
func loadCertificate(config *tls.Config, certFile, keyFile string) error {
|
||||||
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
|
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf("could not load keypair %s:%s: %w", certFile, keyFile, err)
|
||||||
"could not load keypair %s:%s: %v", certFile, keyFile, err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
config.Certificates = []tls.Certificate{cert}
|
config.Certificates = []tls.Certificate{cert}
|
||||||
|
|
@ -223,7 +218,7 @@ func (c *ServerConfig) verifyPeerCertificate(rawCerts [][]byte, _ [][]*x509.Cert
|
||||||
// Let's review the client certificate.
|
// Let's review the client certificate.
|
||||||
cert, err := x509.ParseCertificate(rawCerts[0])
|
cert, err := x509.ParseCertificate(rawCerts[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not validate peer certificate: %v", err)
|
return fmt.Errorf("could not validate peer certificate: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, name := range cert.DNSNames {
|
for _, name := range cert.DNSNames {
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ func (p *Parser) Init() error {
|
||||||
func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
||||||
valueLists, err := network.Parse(buf, p.popts)
|
valueLists, err := network.Parse(buf, p.popts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("collectd parser error: %s", err)
|
return nil, fmt.Errorf("collectd parser error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
metrics := []telegraf.Metric{}
|
metrics := []telegraf.Metric{}
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ func (p *Parser) Init() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := p.initializeMetadataSeparators(); err != nil {
|
if err := p.initializeMetadataSeparators(); err != nil {
|
||||||
return fmt.Errorf("initializing separators failed: %v", err)
|
return fmt.Errorf("initializing separators failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.TimeFunc == nil {
|
if p.TimeFunc == nil {
|
||||||
|
|
@ -393,17 +393,17 @@ outer:
|
||||||
case "int":
|
case "int":
|
||||||
val, err = strconv.ParseInt(value, 10, 64)
|
val, err = strconv.ParseInt(value, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("column type: parse int error %s", err)
|
return nil, fmt.Errorf("column type: parse int error %w", err)
|
||||||
}
|
}
|
||||||
case "float":
|
case "float":
|
||||||
val, err = strconv.ParseFloat(value, 64)
|
val, err = strconv.ParseFloat(value, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("column type: parse float error %s", err)
|
return nil, fmt.Errorf("column type: parse float error %w", err)
|
||||||
}
|
}
|
||||||
case "bool":
|
case "bool":
|
||||||
val, err = strconv.ParseBool(value)
|
val, err = strconv.ParseBool(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("column type: parse bool error %s", err)
|
return nil, fmt.Errorf("column type: parse bool error %w", err)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
val = value
|
val = value
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ func (p *Parser) parseTime(buf []byte) (time.Time, error) {
|
||||||
}
|
}
|
||||||
t, err := time.Parse(timeFormat, timeString)
|
t, err := time.Parse(timeFormat, timeString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return time.Time{}, fmt.Errorf("time %s cannot be parsed with format %s, %s", timeString, timeFormat, err)
|
return time.Time{}, fmt.Errorf("time %s cannot be parsed with format %s, %w", timeString, timeFormat, err)
|
||||||
}
|
}
|
||||||
return t.UTC(), nil
|
return t.UTC(), nil
|
||||||
}
|
}
|
||||||
|
|
@ -154,7 +154,7 @@ func (p *Parser) unmarshalMetrics(buf []byte) (map[string]interface{}, error) {
|
||||||
var jsonOut map[string]interface{}
|
var jsonOut map[string]interface{}
|
||||||
err := json.Unmarshal(registryBytes, &jsonOut)
|
err := json.Unmarshal(registryBytes, &jsonOut)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("unable to parse dropwizard metric registry from JSON document, %s", err)
|
err = fmt.Errorf("unable to parse dropwizard metric registry from JSON document, %w", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return jsonOut, nil
|
return jsonOut, nil
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ func (p *Parser) ParseLine(line string) (telegraf.Metric, error) {
|
||||||
// Parse value.
|
// Parse value.
|
||||||
v, err := strconv.ParseFloat(fields[1], 64)
|
v, err := strconv.ParseFloat(fields[1], 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf(`field "%s" value: %s`, fields[0], err)
|
return nil, fmt.Errorf(`field "%s" value: %w`, fields[0], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldValues := map[string]interface{}{}
|
fieldValues := map[string]interface{}{}
|
||||||
|
|
@ -125,7 +125,7 @@ func (p *Parser) ParseLine(line string) (telegraf.Metric, error) {
|
||||||
// Parse timestamp.
|
// Parse timestamp.
|
||||||
unixTime, err := strconv.ParseFloat(fields[2], 64)
|
unixTime, err := strconv.ParseFloat(fields[2], 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf(`field "%s" time: %s`, fields[0], err)
|
return nil, fmt.Errorf(`field "%s" time: %w`, fields[0], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// -1 is a special value that gets converted to current UTC time
|
// -1 is a special value that gets converted to current UTC time
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,9 @@ func (h *MetricHandler) AddInt(key []byte, value []byte) error {
|
||||||
fk := unescape(key)
|
fk := unescape(key)
|
||||||
fv, err := parseIntBytes(bytes.TrimSuffix(value, []byte("i")), 10, 64)
|
fv, err := parseIntBytes(bytes.TrimSuffix(value, []byte("i")), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if numerr, ok := err.(*strconv.NumError); ok {
|
var numErr *strconv.NumError
|
||||||
return numerr.Err
|
if errors.As(err, &numErr) {
|
||||||
|
return numErr.Err
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -75,8 +76,9 @@ func (h *MetricHandler) AddUint(key []byte, value []byte) error {
|
||||||
fk := unescape(key)
|
fk := unescape(key)
|
||||||
fv, err := parseUintBytes(bytes.TrimSuffix(value, []byte("u")), 10, 64)
|
fv, err := parseUintBytes(bytes.TrimSuffix(value, []byte("u")), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if numerr, ok := err.(*strconv.NumError); ok {
|
var numErr *strconv.NumError
|
||||||
return numerr.Err
|
if errors.As(err, &numErr) {
|
||||||
|
return numErr.Err
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -88,8 +90,9 @@ func (h *MetricHandler) AddFloat(key []byte, value []byte) error {
|
||||||
fk := unescape(key)
|
fk := unescape(key)
|
||||||
fv, err := parseFloatBytes(value, 64)
|
fv, err := parseFloatBytes(value, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if numerr, ok := err.(*strconv.NumError); ok {
|
var numErr *strconv.NumError
|
||||||
return numerr.Err
|
if errors.As(err, &numErr) {
|
||||||
|
return numErr.Err
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -117,8 +120,9 @@ func (h *MetricHandler) AddBool(key []byte, value []byte) error {
|
||||||
func (h *MetricHandler) SetTimestamp(tm []byte) error {
|
func (h *MetricHandler) SetTimestamp(tm []byte) error {
|
||||||
v, err := parseIntBytes(tm, 10, 64)
|
v, err := parseIntBytes(tm, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if numerr, ok := err.(*strconv.NumError); ok {
|
var numErr *strconv.NumError
|
||||||
return numerr.Err
|
if errors.As(err, &numErr) {
|
||||||
|
return numErr.Err
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/influxdata/line-protocol/v2/lineprotocol"
|
"github.com/influxdata/line-protocol/v2/lineprotocol"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/metric"
|
"github.com/influxdata/telegraf/metric"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers"
|
"github.com/influxdata/telegraf/plugins/parsers"
|
||||||
|
|
@ -88,13 +89,13 @@ func (e *ParseError) Error() string {
|
||||||
|
|
||||||
// convertToParseError attempts to convert a lineprotocol.DecodeError to a ParseError
|
// convertToParseError attempts to convert a lineprotocol.DecodeError to a ParseError
|
||||||
func convertToParseError(input []byte, rawErr error) error {
|
func convertToParseError(input []byte, rawErr error) error {
|
||||||
err, ok := rawErr.(*lineprotocol.DecodeError)
|
var decErr *lineprotocol.DecodeError
|
||||||
if !ok {
|
if !errors.As(rawErr, &decErr) {
|
||||||
return rawErr
|
return rawErr
|
||||||
}
|
}
|
||||||
|
|
||||||
return &ParseError{
|
return &ParseError{
|
||||||
DecodeError: err,
|
DecodeError: decErr,
|
||||||
buf: string(input),
|
buf: string(input),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -249,7 +250,7 @@ func (sp *StreamParser) SetTimePrecision(u time.Duration) error {
|
||||||
// function if it returns ParseError to get the next metric or error.
|
// function if it returns ParseError to get the next metric or error.
|
||||||
func (sp *StreamParser) Next() (telegraf.Metric, error) {
|
func (sp *StreamParser) Next() (telegraf.Metric, error) {
|
||||||
if !sp.decoder.Next() {
|
if !sp.decoder.Next() {
|
||||||
if err := sp.decoder.Err(); err != nil && err != sp.lastError {
|
if err := sp.decoder.Err(); err != nil && !errors.Is(err, sp.lastError) {
|
||||||
sp.lastError = err
|
sp.lastError = err
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -659,7 +659,7 @@ func TestStreamParser(t *testing.T) {
|
||||||
for {
|
for {
|
||||||
m, err := parser.Next()
|
m, err := parser.Next()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrEOF {
|
if errors.Is(err, ErrEOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
require.Equal(t, tt.err.Error(), err.Error())
|
require.Equal(t, tt.err.Error(), err.Error())
|
||||||
|
|
@ -849,7 +849,7 @@ func TestStreamParserErrorString(t *testing.T) {
|
||||||
var errs []error
|
var errs []error
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
_, err := parser.Next()
|
_, err := parser.Next()
|
||||||
if err == ErrEOF {
|
if errors.Is(err, ErrEOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1710,7 +1710,7 @@ func TestMachine(t *testing.T) {
|
||||||
|
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
err := fsm.Next()
|
err := fsm.Next()
|
||||||
if err != nil && err == influx.EOF {
|
if err != nil && errors.Is(err, influx.EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
handler.Result(err)
|
handler.Result(err)
|
||||||
|
|
@ -2138,7 +2138,7 @@ func TestHandlerErrorRecovery(t *testing.T) {
|
||||||
|
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
err := fsm.Next()
|
err := fsm.Next()
|
||||||
if err != nil && err == influx.EOF {
|
if err != nil && errors.Is(err, influx.EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
tt.handler.Result(err)
|
tt.handler.Result(err)
|
||||||
|
|
@ -2177,7 +2177,7 @@ func TestStreamMachine(t *testing.T) {
|
||||||
// isn't terminated.
|
// isn't terminated.
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
err := fsm.Next()
|
err := fsm.Next()
|
||||||
if err != nil && err == influx.EOF {
|
if err != nil && errors.Is(err, influx.EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
handler.Result(err)
|
handler.Result(err)
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ func (p *Parser) Parse(input []byte) ([]telegraf.Metric, error) {
|
||||||
|
|
||||||
for {
|
for {
|
||||||
err := p.machine.Next()
|
err := p.machine.Next()
|
||||||
if err == EOF {
|
if errors.Is(err, EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -203,11 +203,12 @@ func (sp *StreamParser) SetTimePrecision(u time.Duration) {
|
||||||
// function if it returns ParseError to get the next metric or error.
|
// function if it returns ParseError to get the next metric or error.
|
||||||
func (sp *StreamParser) Next() (telegraf.Metric, error) {
|
func (sp *StreamParser) Next() (telegraf.Metric, error) {
|
||||||
err := sp.machine.Next()
|
err := sp.machine.Next()
|
||||||
if err == EOF {
|
if errors.Is(err, EOF) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if e, ok := err.(*readErr); ok {
|
var e *readErr
|
||||||
|
if errors.As(err, &e) {
|
||||||
return nil, e.Err
|
return nil, e.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -629,7 +629,7 @@ func TestStreamParser(t *testing.T) {
|
||||||
for {
|
for {
|
||||||
m, err := parser.Next()
|
m, err := parser.Next()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == EOF {
|
if errors.Is(err, EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
require.Equal(t, tt.err, err)
|
require.Equal(t, tt.err, err)
|
||||||
|
|
@ -816,7 +816,7 @@ func TestStreamParserErrorString(t *testing.T) {
|
||||||
var errs []error
|
var errs []error
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
_, err := parser.Next()
|
_, err := parser.Next()
|
||||||
if err == EOF {
|
if errors.Is(err, EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -161,12 +161,12 @@ func (p *Parser) Init() error {
|
||||||
|
|
||||||
p.stringFilter, err = filter.Compile(p.StringFields)
|
p.stringFilter, err = filter.Compile(p.StringFields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("compiling string-fields filter failed: %v", err)
|
return fmt.Errorf("compiling string-fields filter failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
p.tagFilter, err = filter.Compile(p.TagKeys)
|
p.tagFilter, err = filter.Compile(p.TagKeys)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("compiling tag-key filter failed: %v", err)
|
return fmt.Errorf("compiling tag-key filter failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ func (p *Parser) Parse(input []byte) ([]telegraf.Metric, error) {
|
||||||
body, _ := utfbom.Skip(reader)
|
body, _ := utfbom.Skip(reader)
|
||||||
input, err := io.ReadAll(body)
|
input, err := io.ReadAll(body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to read body after BOM removal: %v", err)
|
return nil, fmt.Errorf("unable to read body after BOM removal: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only valid JSON is supported
|
// Only valid JSON is supported
|
||||||
|
|
@ -102,7 +102,7 @@ func (p *Parser) Parse(input []byte) ([]telegraf.Metric, error) {
|
||||||
|
|
||||||
if result.Type == gjson.Null {
|
if result.Type == gjson.Null {
|
||||||
p.Log.Debugf("Message: %s", input)
|
p.Log.Debugf("Message: %s", input)
|
||||||
return nil, fmt.Errorf("The timestamp path %s returned NULL", c.TimestampPath)
|
return nil, fmt.Errorf("the timestamp path %s returned NULL", c.TimestampPath)
|
||||||
}
|
}
|
||||||
if !result.IsArray() && !result.IsObject() {
|
if !result.IsArray() && !result.IsObject() {
|
||||||
if c.TimestampFormat == "" {
|
if c.TimestampFormat == "" {
|
||||||
|
|
@ -586,25 +586,25 @@ func (p *Parser) convertType(input gjson.Result, desiredType string, name string
|
||||||
case "uint":
|
case "uint":
|
||||||
r, err := strconv.ParseUint(inputType, 10, 64)
|
r, err := strconv.ParseUint(inputType, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Unable to convert field '%s' to type uint: %v", name, err)
|
return nil, fmt.Errorf("unable to convert field '%s' to type uint: %w", name, err)
|
||||||
}
|
}
|
||||||
return r, nil
|
return r, nil
|
||||||
case "int":
|
case "int":
|
||||||
r, err := strconv.ParseInt(inputType, 10, 64)
|
r, err := strconv.ParseInt(inputType, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Unable to convert field '%s' to type int: %v", name, err)
|
return nil, fmt.Errorf("unable to convert field '%s' to type int: %w", name, err)
|
||||||
}
|
}
|
||||||
return r, nil
|
return r, nil
|
||||||
case "float":
|
case "float":
|
||||||
r, err := strconv.ParseFloat(inputType, 64)
|
r, err := strconv.ParseFloat(inputType, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Unable to convert field '%s' to type float: %v", name, err)
|
return nil, fmt.Errorf("unable to convert field '%s' to type float: %w", name, err)
|
||||||
}
|
}
|
||||||
return r, nil
|
return r, nil
|
||||||
case "bool":
|
case "bool":
|
||||||
r, err := strconv.ParseBool(inputType)
|
r, err := strconv.ParseBool(inputType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Unable to convert field '%s' to type bool: %v", name, err)
|
return nil, fmt.Errorf("unable to convert field '%s' to type bool: %w", name, err)
|
||||||
}
|
}
|
||||||
return r, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
@ -639,7 +639,7 @@ func (p *Parser) convertType(input gjson.Result, desiredType string, name string
|
||||||
} else if inputType == 1 {
|
} else if inputType == 1 {
|
||||||
return true, nil
|
return true, nil
|
||||||
} else {
|
} else {
|
||||||
return nil, fmt.Errorf("Unable to convert field '%s' to type bool", name)
|
return nil, fmt.Errorf("unable to convert field '%s' to type bool", name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
the path wrong doesn't exist
|
the path wrong doesn't exist
|
||||||
the path wrong doesn't exist
|
the path wrong doesn't exist
|
||||||
the path wrong doesn't exist
|
the path wrong doesn't exist
|
||||||
The timestamp path wrong returned NULL
|
the timestamp path wrong returned NULL
|
||||||
the path wrong doesn't exist
|
the path wrong doesn't exist
|
||||||
the path wrong doesn't exist
|
the path wrong doesn't exist
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ func getExitCode(err error) (int, error) {
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
ee, ok := err.(*exec.ExitError)
|
var ee *exec.ExitError
|
||||||
if !ok {
|
if !errors.As(err, &ee) {
|
||||||
return unknownExitCode, err
|
return unknownExitCode, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package prometheus
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
|
|
@ -50,17 +51,17 @@ func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
||||||
for {
|
for {
|
||||||
mf := &dto.MetricFamily{}
|
mf := &dto.MetricFamily{}
|
||||||
if _, ierr := pbutil.ReadDelimited(reader, mf); ierr != nil {
|
if _, ierr := pbutil.ReadDelimited(reader, mf); ierr != nil {
|
||||||
if ierr == io.EOF {
|
if errors.Is(ierr, io.EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("reading metric family protocol buffer failed: %s", ierr)
|
return nil, fmt.Errorf("reading metric family protocol buffer failed: %w", ierr)
|
||||||
}
|
}
|
||||||
metricFamilies[mf.GetName()] = mf
|
metricFamilies[mf.GetName()] = mf
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
metricFamilies, err = parser.TextToMetricFamilies(reader)
|
metricFamilies, err = parser.TextToMetricFamilies(reader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("reading text format failed: %s", err)
|
return nil, fmt.Errorf("reading text format failed: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
||||||
var req prompb.WriteRequest
|
var req prompb.WriteRequest
|
||||||
|
|
||||||
if err := req.Unmarshal(buf); err != nil {
|
if err := req.Unmarshal(buf); err != nil {
|
||||||
return nil, fmt.Errorf("unable to unmarshal request body: %s", err)
|
return nil, fmt.Errorf("unable to unmarshal request body: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
@ -70,11 +70,11 @@ func (p *Parser) ParseLine(line string) (telegraf.Metric, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(metrics) < 1 {
|
if len(metrics) < 1 {
|
||||||
return nil, fmt.Errorf("No metrics in line")
|
return nil, fmt.Errorf("no metrics in line")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(metrics) > 1 {
|
if len(metrics) > 1 {
|
||||||
return nil, fmt.Errorf("More than one metric in line")
|
return nil, fmt.Errorf("more than one metric in line")
|
||||||
}
|
}
|
||||||
|
|
||||||
return metrics[0], nil
|
return metrics[0], nil
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ func (ep *TimestampParser) parse(p *PointParser, pt *Point) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
p.writeBuf.Reset()
|
p.writeBuf.Reset()
|
||||||
for tok != EOF && tok == Number {
|
for tok == Number {
|
||||||
if _, err := p.writeBuf.WriteString(lit); err != nil {
|
if _, err := p.writeBuf.WriteString(lit); err != nil {
|
||||||
return fmt.Errorf("unable to write: %w", err)
|
return fmt.Errorf("unable to write: %w", err)
|
||||||
}
|
}
|
||||||
|
|
@ -136,7 +136,7 @@ func (ep *LoopedParser) parse(p *PointParser, pt *Point) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = ep.wsParser.parse(p, pt)
|
err = ep.wsParser.parse(p, pt)
|
||||||
if err == ErrEOF {
|
if errors.Is(err, ErrEOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -170,7 +170,7 @@ func (ep *TagParser) parse(p *PointParser, pt *Point) error {
|
||||||
|
|
||||||
func (ep *WhiteSpaceParser) parse(p *PointParser, _ *Point) error {
|
func (ep *WhiteSpaceParser) parse(p *PointParser, _ *Point) error {
|
||||||
tok := Ws
|
tok := Ws
|
||||||
for tok != EOF && tok == Ws {
|
for tok == Ws {
|
||||||
tok, _ = p.scan()
|
tok, _ = p.scan()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,9 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/tinylib/msgp/msgp"
|
|
||||||
|
|
||||||
"github.com/antchfx/jsonquery"
|
"github.com/antchfx/jsonquery"
|
||||||
path "github.com/antchfx/xpath"
|
path "github.com/antchfx/xpath"
|
||||||
|
"github.com/tinylib/msgp/msgp"
|
||||||
)
|
)
|
||||||
|
|
||||||
type msgpackDocument jsonDocument
|
type msgpackDocument jsonDocument
|
||||||
|
|
@ -17,7 +16,7 @@ func (d *msgpackDocument) Parse(buf []byte) (dataNode, error) {
|
||||||
|
|
||||||
// Unmarshal the message-pack binary message to JSON and proceed with the jsonquery class
|
// Unmarshal the message-pack binary message to JSON and proceed with the jsonquery class
|
||||||
if _, err := msgp.UnmarshalAsJSON(&json, buf); err != nil {
|
if _, err := msgp.UnmarshalAsJSON(&json, buf); err != nil {
|
||||||
return nil, fmt.Errorf("unmarshalling to json failed: %v", err)
|
return nil, fmt.Errorf("unmarshalling to json failed: %w", err)
|
||||||
}
|
}
|
||||||
return jsonquery.Parse(&json)
|
return jsonquery.Parse(&json)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
if len(config.MetricQuery) > 0 {
|
if len(config.MetricQuery) > 0 {
|
||||||
v, err := p.executeQuery(doc, selected, config.MetricQuery)
|
v, err := p.executeQuery(doc, selected, config.MetricQuery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query metric name: %v", err)
|
return nil, fmt.Errorf("failed to query metric name: %w", err)
|
||||||
}
|
}
|
||||||
var ok bool
|
var ok bool
|
||||||
if metricname, ok = v.(string); !ok {
|
if metricname, ok = v.(string); !ok {
|
||||||
|
|
@ -229,7 +229,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
if len(config.Timestamp) > 0 {
|
if len(config.Timestamp) > 0 {
|
||||||
v, err := p.executeQuery(doc, selected, config.Timestamp)
|
v, err := p.executeQuery(doc, selected, config.Timestamp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query timestamp: %v", err)
|
return nil, fmt.Errorf("failed to query timestamp: %w", err)
|
||||||
}
|
}
|
||||||
if v != nil {
|
if v != nil {
|
||||||
timestamp, err = internal.ParseTimestamp(config.TimestampFmt, v, "")
|
timestamp, err = internal.ParseTimestamp(config.TimestampFmt, v, "")
|
||||||
|
|
@ -245,7 +245,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
// Execute the query and cast the returned values into strings
|
// Execute the query and cast the returned values into strings
|
||||||
v, err := p.executeQuery(doc, selected, query)
|
v, err := p.executeQuery(doc, selected, query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query tag '%s': %v", name, err)
|
return nil, fmt.Errorf("failed to query tag '%s': %w", name, err)
|
||||||
}
|
}
|
||||||
switch v := v.(type) {
|
switch v := v.(type) {
|
||||||
case string:
|
case string:
|
||||||
|
|
@ -282,7 +282,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
for _, selectedtag := range selectedTagNodes {
|
for _, selectedtag := range selectedTagNodes {
|
||||||
n, err := p.executeQuery(doc, selectedtag, tagnamequery)
|
n, err := p.executeQuery(doc, selectedtag, tagnamequery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query tag name with query '%s': %v", tagnamequery, err)
|
return nil, fmt.Errorf("failed to query tag name with query '%s': %w", tagnamequery, err)
|
||||||
}
|
}
|
||||||
name, ok := n.(string)
|
name, ok := n.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
@ -290,7 +290,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
}
|
}
|
||||||
v, err := p.executeQuery(doc, selectedtag, tagvaluequery)
|
v, err := p.executeQuery(doc, selectedtag, tagvaluequery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query tag value for '%s': %v", name, err)
|
return nil, fmt.Errorf("failed to query tag value for '%s': %w", name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.TagNameExpand {
|
if config.TagNameExpand {
|
||||||
|
|
@ -333,13 +333,13 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
// Execute the query and cast the returned values into integers
|
// Execute the query and cast the returned values into integers
|
||||||
v, err := p.executeQuery(doc, selected, query)
|
v, err := p.executeQuery(doc, selected, query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query field (int) '%s': %v", name, err)
|
return nil, fmt.Errorf("failed to query field (int) '%s': %w", name, err)
|
||||||
}
|
}
|
||||||
switch v := v.(type) {
|
switch v := v.(type) {
|
||||||
case string:
|
case string:
|
||||||
fields[name], err = strconv.ParseInt(v, 10, 54)
|
fields[name], err = strconv.ParseInt(v, 10, 54)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to parse field (int) '%s': %v", name, err)
|
return nil, fmt.Errorf("failed to parse field (int) '%s': %w", name, err)
|
||||||
}
|
}
|
||||||
case bool:
|
case bool:
|
||||||
fields[name] = int64(0)
|
fields[name] = int64(0)
|
||||||
|
|
@ -359,7 +359,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
// Execute the query and store the result in fields
|
// Execute the query and store the result in fields
|
||||||
v, err := p.executeQuery(doc, selected, query)
|
v, err := p.executeQuery(doc, selected, query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query field '%s': %v", name, err)
|
return nil, fmt.Errorf("failed to query field '%s': %w", name, err)
|
||||||
}
|
}
|
||||||
fields[name] = v
|
fields[name] = v
|
||||||
}
|
}
|
||||||
|
|
@ -385,7 +385,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
for _, selectedfield := range selectedFieldNodes {
|
for _, selectedfield := range selectedFieldNodes {
|
||||||
n, err := p.executeQuery(doc, selectedfield, fieldnamequery)
|
n, err := p.executeQuery(doc, selectedfield, fieldnamequery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query field name with query '%s': %v", fieldnamequery, err)
|
return nil, fmt.Errorf("failed to query field name with query '%s': %w", fieldnamequery, err)
|
||||||
}
|
}
|
||||||
name, ok := n.(string)
|
name, ok := n.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
@ -393,7 +393,7 @@ func (p *Parser) parseQuery(starttime time.Time, doc, selected dataNode, config
|
||||||
}
|
}
|
||||||
v, err := p.executeQuery(doc, selectedfield, fieldvaluequery)
|
v, err := p.executeQuery(doc, selectedfield, fieldvaluequery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to query field value for '%s': %v", name, err)
|
return nil, fmt.Errorf("failed to query field value for '%s': %w", name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.FieldNameExpand {
|
if config.FieldNameExpand {
|
||||||
|
|
@ -439,7 +439,7 @@ func (p *Parser) executeQuery(doc, selected dataNode, query string) (r interface
|
||||||
// Compile the query
|
// Compile the query
|
||||||
expr, err := path.Compile(query)
|
expr, err := path.Compile(query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to compile query '%s': %v", query, err)
|
return nil, fmt.Errorf("failed to compile query '%s': %w", query, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Evaluate the compiled expression and handle returned node-iterators
|
// Evaluate the compiled expression and handle returned node-iterators
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ func (d *protobufDocument) Init() error {
|
||||||
}
|
}
|
||||||
fds, err := parser.ParseFiles(d.MessageDefinition)
|
fds, err := parser.ParseFiles(d.MessageDefinition)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("parsing protocol-buffer definition in %q failed: %v", d.MessageDefinition, err)
|
return fmt.Errorf("parsing protocol-buffer definition in %q failed: %w", d.MessageDefinition, err)
|
||||||
}
|
}
|
||||||
if len(fds) < 1 {
|
if len(fds) < 1 {
|
||||||
return fmt.Errorf("file %q does not contain file descriptors", d.MessageDefinition)
|
return fmt.Errorf("file %q does not contain file descriptors", d.MessageDefinition)
|
||||||
|
|
@ -52,7 +52,7 @@ func (d *protobufDocument) Init() error {
|
||||||
// Register all definitions in the file in the global registry
|
// Register all definitions in the file in the global registry
|
||||||
registry, err := protodesc.NewFiles(desc.ToFileDescriptorSet(fds...))
|
registry, err := protodesc.NewFiles(desc.ToFileDescriptorSet(fds...))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("constructing registry failed: %v", err)
|
return fmt.Errorf("constructing registry failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lookup given type in the loaded file descriptors
|
// Lookup given type in the loaded file descriptors
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ func (mapper *EnumMapper) Init() error {
|
||||||
if mapping.Tag != "" {
|
if mapping.Tag != "" {
|
||||||
tagFilter, err := filter.NewIncludeExcludeFilter([]string{mapping.Tag}, nil)
|
tagFilter, err := filter.NewIncludeExcludeFilter([]string{mapping.Tag}, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to create new tag filter: %s", err)
|
return fmt.Errorf("failed to create new tag filter: %w", err)
|
||||||
}
|
}
|
||||||
mapper.TagFilters[mapping.Tag] = tagFilter
|
mapper.TagFilters[mapping.Tag] = tagFilter
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -139,11 +139,12 @@ func (e *Execd) cmdReadOutStream(out io.Reader) {
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Stop parsing when we've reached the end.
|
// Stop parsing when we've reached the end.
|
||||||
if err == influx.EOF {
|
if errors.Is(err, influx.EOF) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if parseErr, isParseError := err.(*influx.ParseError); isParseError {
|
var parseErr *influx.ParseError
|
||||||
|
if errors.As(err, &parseErr) {
|
||||||
// Continue past parse errors.
|
// Continue past parse errors.
|
||||||
e.acc.AddError(parseErr)
|
e.acc.AddError(parseErr)
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package execd
|
package execd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -156,10 +157,11 @@ func runCountMultiplierProgram() {
|
||||||
for {
|
for {
|
||||||
m, err := parser.Next()
|
m, err := parser.Next()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == influx.EOF {
|
if errors.Is(err, influx.EOF) {
|
||||||
return // stream ended
|
return // stream ended
|
||||||
}
|
}
|
||||||
if parseErr, isParseError := err.(*influx.ParseError); isParseError {
|
var parseErr *influx.ParseError
|
||||||
|
if errors.As(err, &parseErr) {
|
||||||
fmt.Fprintf(os.Stderr, "parse ERR %v\n", parseErr)
|
fmt.Fprintf(os.Stderr, "parse ERR %v\n", parseErr)
|
||||||
//nolint:revive // os.Exit called intentionally
|
//nolint:revive // os.Exit called intentionally
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
|
||||||
|
|
@ -144,11 +144,11 @@ func (d *IfName) Start(acc telegraf.Accumulator) error {
|
||||||
|
|
||||||
d.ifTable, err = d.makeTable("1.3.6.1.2.1.2.2.1.2")
|
d.ifTable, err = d.makeTable("1.3.6.1.2.1.2.2.1.2")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("preparing ifTable: %v", err)
|
return fmt.Errorf("preparing ifTable: %w", err)
|
||||||
}
|
}
|
||||||
d.ifXTable, err = d.makeTable("1.3.6.1.2.1.31.1.1.1.1")
|
d.ifXTable, err = d.makeTable("1.3.6.1.2.1.31.1.1.1.1")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("preparing ifXTable: %v", err)
|
return fmt.Errorf("preparing ifXTable: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn := func(m telegraf.Metric) []telegraf.Metric {
|
fn := func(m telegraf.Metric) []telegraf.Metric {
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ func (*Noise) SampleConfig() string {
|
||||||
func (p *Noise) Init() error {
|
func (p *Noise) Init() error {
|
||||||
fieldFilter, err := filter.NewIncludeExcludeFilter(p.IncludeFields, p.ExcludeFields)
|
fieldFilter, err := filter.NewIncludeExcludeFilter(p.IncludeFields, p.ExcludeFields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("creating fieldFilter failed: %v", err)
|
return fmt.Errorf("creating fieldFilter failed: %w", err)
|
||||||
}
|
}
|
||||||
p.fieldFilter = fieldFilter
|
p.fieldFilter = fieldFilter
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ func (r *Regex) Init() error {
|
||||||
c.ResultKey = "keep"
|
c.ResultKey = "keep"
|
||||||
}
|
}
|
||||||
if err := choice.Check(c.ResultKey, resultOptions); err != nil {
|
if err := choice.Check(c.ResultKey, resultOptions); err != nil {
|
||||||
return fmt.Errorf("invalid metrics result_key: %v", err)
|
return fmt.Errorf("invalid metrics result_key: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, compiled := r.regexCache[c.Pattern]; !compiled {
|
if _, compiled := r.regexCache[c.Pattern]; !compiled {
|
||||||
|
|
@ -78,7 +78,7 @@ func (r *Regex) Init() error {
|
||||||
c.ResultKey = "keep"
|
c.ResultKey = "keep"
|
||||||
}
|
}
|
||||||
if err := choice.Check(c.ResultKey, resultOptions); err != nil {
|
if err := choice.Check(c.ResultKey, resultOptions); err != nil {
|
||||||
return fmt.Errorf("invalid metrics result_key: %v", err)
|
return fmt.Errorf("invalid metrics result_key: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, compiled := r.regexCache[c.Pattern]; !compiled {
|
if _, compiled := r.regexCache[c.Pattern]; !compiled {
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ func (t *TopK) generateGroupByKey(m telegraf.Metric) (string, error) {
|
||||||
var err error
|
var err error
|
||||||
t.tagsGlobs, err = filter.Compile(t.GroupBy)
|
t.tagsGlobs, err = filter.Compile(t.GroupBy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("could not compile pattern: %v %v", t.GroupBy, err)
|
return "", fmt.Errorf("could not compile pattern: %v %w", t.GroupBy, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/99designs/keyring"
|
"github.com/99designs/keyring"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/plugins/secretstores"
|
"github.com/influxdata/telegraf/plugins/secretstores"
|
||||||
|
|
@ -41,7 +42,7 @@ func (j *Jose) Init() error {
|
||||||
|
|
||||||
passwd, err := j.Password.Get()
|
passwd, err := j.Password.Get()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getting password failed: %v", err)
|
return fmt.Errorf("getting password failed: %w", err)
|
||||||
}
|
}
|
||||||
defer config.ReleaseSecret(passwd)
|
defer config.ReleaseSecret(passwd)
|
||||||
|
|
||||||
|
|
@ -59,7 +60,7 @@ func (j *Jose) Init() error {
|
||||||
}
|
}
|
||||||
kr, err := keyring.Open(cfg)
|
kr, err := keyring.Open(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("opening keyring failed: %v", err)
|
return fmt.Errorf("opening keyring failed: %w", err)
|
||||||
}
|
}
|
||||||
j.ring = kr
|
j.ring = kr
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/99designs/keyring"
|
"github.com/99designs/keyring"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/plugins/secretstores"
|
"github.com/influxdata/telegraf/plugins/secretstores"
|
||||||
|
|
@ -43,11 +44,11 @@ func (o *OS) Init() error {
|
||||||
// Setup the actual keyring
|
// Setup the actual keyring
|
||||||
cfg, err := o.createKeyringConfig()
|
cfg, err := o.createKeyringConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getting keyring config failed: %v", err)
|
return fmt.Errorf("getting keyring config failed: %w", err)
|
||||||
}
|
}
|
||||||
kr, err := keyring.Open(cfg)
|
kr, err := keyring.Open(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("opening keyring failed: %v", err)
|
return fmt.Errorf("opening keyring failed: %w", err)
|
||||||
}
|
}
|
||||||
o.ring = kr
|
o.ring = kr
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package influx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
|
|
@ -113,7 +114,8 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
|
||||||
for _, m := range metrics {
|
for _, m := range metrics {
|
||||||
err := s.Write(&s.buf, m)
|
err := s.Write(&s.buf, m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := err.(*MetricError); ok {
|
var mErr *MetricError
|
||||||
|
if errors.As(err, &mErr) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package influx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
|
|
@ -53,7 +54,8 @@ func (r *reader) Read(p []byte) (int, error) {
|
||||||
r.offset++
|
r.offset++
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.buf.Reset()
|
r.buf.Reset()
|
||||||
if _, ok := err.(*MetricError); ok {
|
var mErr *MetricError
|
||||||
|
if errors.As(err, &mErr) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// Since we are serializing multiple metrics, don't fail the
|
// Since we are serializing multiple metrics, don't fail the
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"math"
|
"math"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
jsonata "github.com/blues/jsonata-go"
|
"github.com/blues/jsonata-go"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/filter"
|
"github.com/influxdata/telegraf/filter"
|
||||||
|
|
@ -62,7 +62,7 @@ func (s *Serializer) Serialize(metric telegraf.Metric) ([]byte, error) {
|
||||||
var err error
|
var err error
|
||||||
if obj, err = s.transform(obj); err != nil {
|
if obj, err = s.transform(obj); err != nil {
|
||||||
if errors.Is(err, jsonata.ErrUndefined) {
|
if errors.Is(err, jsonata.ErrUndefined) {
|
||||||
return nil, fmt.Errorf("%v (maybe configured for batch mode?)", err)
|
return nil, fmt.Errorf("%w (maybe configured for batch mode?)", err)
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -93,7 +93,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
|
||||||
var err error
|
var err error
|
||||||
if obj, err = s.transform(obj); err != nil {
|
if obj, err = s.transform(obj); err != nil {
|
||||||
if errors.Is(err, jsonata.ErrUndefined) {
|
if errors.Is(err, jsonata.ErrUndefined) {
|
||||||
return nil, fmt.Errorf("%v (maybe configured for non-batch mode?)", err)
|
return nil, fmt.Errorf("%w (maybe configured for non-batch mode?)", err)
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
|
||||||
pb := &prompb.WriteRequest{Timeseries: promTS}
|
pb := &prompb.WriteRequest{Timeseries: promTS}
|
||||||
data, err := pb.Marshal()
|
data, err := pb.Marshal()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to marshal protobuf: %v", err)
|
return nil, fmt.Errorf("unable to marshal protobuf: %w", err)
|
||||||
}
|
}
|
||||||
encoded := snappy.Encode(nil, data)
|
encoded := snappy.Encode(nil, data)
|
||||||
buf.Write(encoded) //nolint:revive // from buffer.go: "err is always nil"
|
buf.Write(encoded) //nolint:revive // from buffer.go: "err is always nil"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue