Convert errors to OC status
This commit is contained in:
8
Gopkg.lock
generated
8
Gopkg.lock
generated
@@ -179,15 +179,16 @@
|
||||
revision = "a41693b7b7afb422c7ecb1028458ab27da047bbb"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:7393d591b1707b6bd40171878d13aada2f7fa921cd0a500406d65fd3966ca2f4"
|
||||
digest = "1:62e5b997b5ada9b5f71e759c3474f2a0de8de1b21473bab9e4f98c5aa69c05eb"
|
||||
name = "github.com/cpuguy83/strongerrors"
|
||||
packages = [
|
||||
".",
|
||||
"status",
|
||||
"status/ocstatus",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "d3f3ceac8165d8532efb6aa406399545de78d967"
|
||||
version = "v0.2.0"
|
||||
revision = "05f877ca1e627f0a1e01902ba78c63f1ef7db5a3"
|
||||
version = "v0.2.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39"
|
||||
@@ -1451,6 +1452,7 @@
|
||||
"github.com/cenkalti/backoff",
|
||||
"github.com/cpuguy83/strongerrors",
|
||||
"github.com/cpuguy83/strongerrors/status",
|
||||
"github.com/cpuguy83/strongerrors/status/ocstatus",
|
||||
"github.com/dimchansky/utfbom",
|
||||
"github.com/docker/docker/api/types/strslice",
|
||||
"github.com/docker/go-connections/nat",
|
||||
|
||||
@@ -79,6 +79,9 @@
|
||||
name = "k8s.io/client-go"
|
||||
version = "7.0.0"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/cpuguy83/strongerrors"
|
||||
version = "0.2.1"
|
||||
|
||||
# These are required for HyperHQ
|
||||
[[override]]
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/cpuguy83/strongerrors/status/ocstatus"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/virtual-kubelet/virtual-kubelet/providers/azure/client/aci"
|
||||
"go.opencensus.io/trace"
|
||||
@@ -88,7 +89,7 @@ func (p *ACIProvider) GetStatsSummary(ctx context.Context) (summary *stats.Summa
|
||||
Types: []aci.MetricType{aci.MetricTypeCPUUsage, aci.MetricTypeMemoryUsage},
|
||||
})
|
||||
if err != nil {
|
||||
span.SetStatus(trace.Status{Code: trace.StatusCodeUnknown, Message: err.Error()})
|
||||
span.SetStatus(ocstatus.FromError(err))
|
||||
return errors.Wrapf(err, "error fetching cpu/mem stats for container group %s", cgName)
|
||||
}
|
||||
span.Annotate(nil, "Got system stats")
|
||||
@@ -100,7 +101,7 @@ func (p *ACIProvider) GetStatsSummary(ctx context.Context) (summary *stats.Summa
|
||||
Types: []aci.MetricType{aci.MetricTyperNetworkBytesRecievedPerSecond, aci.MetricTyperNetworkBytesTransmittedPerSecond},
|
||||
})
|
||||
if err != nil {
|
||||
span.SetStatus(trace.Status{Code: trace.StatusCodeUnknown, Message: err.Error()})
|
||||
span.SetStatus(ocstatus.FromError(err))
|
||||
return errors.Wrapf(err, "error fetching network stats for container group %s", cgName)
|
||||
}
|
||||
span.Annotate(nil, "Got network stats")
|
||||
|
||||
49
vendor/github.com/cpuguy83/strongerrors/status/ocstatus/status.go
generated
vendored
Normal file
49
vendor/github.com/cpuguy83/strongerrors/status/ocstatus/status.go
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
// Package ocstatus provides error status conversions to opencencus status trace.StatusCode
|
||||
package ocstatus
|
||||
|
||||
import (
|
||||
"github.com/cpuguy83/strongerrors"
|
||||
"go.opencensus.io/trace"
|
||||
)
|
||||
|
||||
// FromError makes an opencencus trace.Status from the passed in error.
|
||||
func FromError(err error) trace.Status {
|
||||
if err == nil {
|
||||
return trace.Status{Code: trace.StatusCodeOK}
|
||||
}
|
||||
|
||||
switch {
|
||||
case strongerrors.IsNotFound(err):
|
||||
return status(trace.StatusCodeNotFound, err)
|
||||
case strongerrors.IsConflict(err), strongerrors.IsNotModified(err):
|
||||
return status(trace.StatusCodeFailedPrecondition, err)
|
||||
case strongerrors.IsInvalidArgument(err):
|
||||
return status(trace.StatusCodeInvalidArgument, err)
|
||||
case strongerrors.IsAlreadyExists(err):
|
||||
return status(trace.StatusCodeAlreadyExists, err)
|
||||
case strongerrors.IsCancelled(err):
|
||||
return status(trace.StatusCodeCancelled, err)
|
||||
case strongerrors.IsDeadline(err):
|
||||
return status(trace.StatusCodeDeadlineExceeded, err)
|
||||
case strongerrors.IsUnauthorized(err):
|
||||
return status(trace.StatusCodePermissionDenied, err)
|
||||
case strongerrors.IsUnauthenticated(err):
|
||||
return status(trace.StatusCodeUnauthenticated, err)
|
||||
case strongerrors.IsForbidden(err), strongerrors.IsNotImplemented(err):
|
||||
return status(trace.StatusCodeUnimplemented, err)
|
||||
case strongerrors.IsExhausted(err):
|
||||
return status(trace.StatusCodeResourceExhausted, err)
|
||||
case strongerrors.IsDataLoss(err):
|
||||
return status(trace.StatusCodeDataLoss, err)
|
||||
case strongerrors.IsSystem(err):
|
||||
return status(trace.StatusCodeInternal, err)
|
||||
case strongerrors.IsUnavailable(err):
|
||||
return status(trace.StatusCodeUnavailable, err)
|
||||
default:
|
||||
return status(trace.StatusCodeUnknown, err)
|
||||
}
|
||||
}
|
||||
|
||||
func status(code int32, err error) trace.Status {
|
||||
return trace.Status{Code: code, Message: err.Error()}
|
||||
}
|
||||
Reference in New Issue
Block a user