Convert errors to OC status
This commit is contained in:
8
Gopkg.lock
generated
8
Gopkg.lock
generated
@@ -179,15 +179,16 @@
|
|||||||
revision = "a41693b7b7afb422c7ecb1028458ab27da047bbb"
|
revision = "a41693b7b7afb422c7ecb1028458ab27da047bbb"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
digest = "1:7393d591b1707b6bd40171878d13aada2f7fa921cd0a500406d65fd3966ca2f4"
|
digest = "1:62e5b997b5ada9b5f71e759c3474f2a0de8de1b21473bab9e4f98c5aa69c05eb"
|
||||||
name = "github.com/cpuguy83/strongerrors"
|
name = "github.com/cpuguy83/strongerrors"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"status",
|
"status",
|
||||||
|
"status/ocstatus",
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "d3f3ceac8165d8532efb6aa406399545de78d967"
|
revision = "05f877ca1e627f0a1e01902ba78c63f1ef7db5a3"
|
||||||
version = "v0.2.0"
|
version = "v0.2.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39"
|
digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39"
|
||||||
@@ -1451,6 +1452,7 @@
|
|||||||
"github.com/cenkalti/backoff",
|
"github.com/cenkalti/backoff",
|
||||||
"github.com/cpuguy83/strongerrors",
|
"github.com/cpuguy83/strongerrors",
|
||||||
"github.com/cpuguy83/strongerrors/status",
|
"github.com/cpuguy83/strongerrors/status",
|
||||||
|
"github.com/cpuguy83/strongerrors/status/ocstatus",
|
||||||
"github.com/dimchansky/utfbom",
|
"github.com/dimchansky/utfbom",
|
||||||
"github.com/docker/docker/api/types/strslice",
|
"github.com/docker/docker/api/types/strslice",
|
||||||
"github.com/docker/go-connections/nat",
|
"github.com/docker/go-connections/nat",
|
||||||
|
|||||||
@@ -79,6 +79,9 @@
|
|||||||
name = "k8s.io/client-go"
|
name = "k8s.io/client-go"
|
||||||
version = "7.0.0"
|
version = "7.0.0"
|
||||||
|
|
||||||
|
[[constraint]]
|
||||||
|
name = "github.com/cpuguy83/strongerrors"
|
||||||
|
version = "0.2.1"
|
||||||
|
|
||||||
# These are required for HyperHQ
|
# These are required for HyperHQ
|
||||||
[[override]]
|
[[override]]
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/cpuguy83/strongerrors/status/ocstatus"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/virtual-kubelet/virtual-kubelet/providers/azure/client/aci"
|
"github.com/virtual-kubelet/virtual-kubelet/providers/azure/client/aci"
|
||||||
"go.opencensus.io/trace"
|
"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},
|
Types: []aci.MetricType{aci.MetricTypeCPUUsage, aci.MetricTypeMemoryUsage},
|
||||||
})
|
})
|
||||||
if err != nil {
|
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)
|
return errors.Wrapf(err, "error fetching cpu/mem stats for container group %s", cgName)
|
||||||
}
|
}
|
||||||
span.Annotate(nil, "Got system stats")
|
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},
|
Types: []aci.MetricType{aci.MetricTyperNetworkBytesRecievedPerSecond, aci.MetricTyperNetworkBytesTransmittedPerSecond},
|
||||||
})
|
})
|
||||||
if err != nil {
|
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)
|
return errors.Wrapf(err, "error fetching network stats for container group %s", cgName)
|
||||||
}
|
}
|
||||||
span.Annotate(nil, "Got network stats")
|
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