Add api-version to apiserver tracing
Kubernetes-commit: 646053d73dbda9cae5df5fd105a720661ff051dc
This commit is contained in:
parent
c51632c143
commit
79f4968b20
|
@ -95,6 +95,24 @@ func (lazy *lazyAPIGroup) String() string {
|
|||
return "unknown"
|
||||
}
|
||||
|
||||
// lazyAPIVersion implements String() string and it will
|
||||
// lazily get Group from request info.
|
||||
type lazyAPIVersion struct {
|
||||
req *http.Request
|
||||
}
|
||||
|
||||
func (lazy *lazyAPIVersion) String() string {
|
||||
if lazy.req != nil {
|
||||
ctx := lazy.req.Context()
|
||||
requestInfo, ok := apirequest.RequestInfoFrom(ctx)
|
||||
if ok {
|
||||
return requestInfo.APIVersion
|
||||
}
|
||||
}
|
||||
|
||||
return "unknown"
|
||||
}
|
||||
|
||||
// lazyAuditID implements Stringer interface to lazily retrieve
|
||||
// the audit ID associated with the request.
|
||||
type lazyAuditID struct {
|
||||
|
|
|
@ -97,6 +97,18 @@ func TestLazyApiGroup(t *testing.T) {
|
|||
assert.Equal(t, "apps", fmt.Sprintf("%v", scopeWithReq))
|
||||
}
|
||||
|
||||
func TestLazyApiVersion(t *testing.T) {
|
||||
assert.Equal(t, "unknown", fmt.Sprintf("%v", &lazyAPIVersion{}))
|
||||
|
||||
scopeWithEmptyReq := &lazyAPIVersion{&http.Request{}}
|
||||
assert.Equal(t, "unknown", fmt.Sprintf("%v", scopeWithEmptyReq))
|
||||
|
||||
req := &http.Request{}
|
||||
ctx := request.WithRequestInfo(context.TODO(), &request.RequestInfo{APIVersion: "v1"})
|
||||
scopeWithReq := &lazyAPIVersion{req: req.WithContext(ctx)}
|
||||
assert.Equal(t, "v1", fmt.Sprintf("%v", scopeWithReq))
|
||||
}
|
||||
|
||||
func TestLazyResource(t *testing.T) {
|
||||
assert.Equal(t, "unknown", fmt.Sprintf("%v", &lazyResource{}))
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ func traceFields(req *http.Request) []attribute.KeyValue {
|
|||
attribute.Stringer("audit-id", &lazyAuditID{req: req}),
|
||||
attribute.Stringer("client", &lazyClientIP{req: req}),
|
||||
attribute.Stringer("api-group", &lazyAPIGroup{req: req}),
|
||||
attribute.Stringer("api-version", &lazyAPIVersion{req: req}),
|
||||
attribute.String("protocol", req.Proto),
|
||||
attribute.Stringer("resource", &lazyResource{req: req}),
|
||||
attribute.Stringer("scope", &lazyScope{req: req}),
|
||||
|
|
Loading…
Reference in New Issue