Merge pull request #110093 from azylinski/automated-cherry-pick-of-#110009-upstream-release-1.21

Automated cherry pick of #110009: Fix requests scope classification

Kubernetes-commit: a347c1921b5e20428c920291b561b7ba98220a6f
This commit is contained in:
Kubernetes Publisher 2022-05-20 03:39:12 -07:00
commit abbd48dff0
2 changed files with 61 additions and 3 deletions

View File

@ -458,12 +458,12 @@ func InstrumentHandlerFunc(verb, group, version, resource, subresource, scope, c
// CleanScope returns the scope of the request.
func CleanScope(requestInfo *request.RequestInfo) string {
if requestInfo.Name != "" || requestInfo.Verb == "create" {
return "resource"
}
if requestInfo.Namespace != "" {
return "namespace"
}
if requestInfo.Name != "" {
return "resource"
}
if requestInfo.IsResourceRequest {
return "cluster"
}

View File

@ -20,6 +20,8 @@ import (
"net/http"
"net/url"
"testing"
"k8s.io/apiserver/pkg/endpoints/request"
)
func TestCleanVerb(t *testing.T) {
@ -132,3 +134,59 @@ func TestCleanVerb(t *testing.T) {
})
}
}
func TestCleanScope(t *testing.T) {
testCases := []struct {
name string
requestInfo *request.RequestInfo
expectedScope string
}{
{
name: "empty scope",
requestInfo: &request.RequestInfo{},
expectedScope: "",
},
{
name: "resource scope",
requestInfo: &request.RequestInfo{
Name: "my-resource",
Namespace: "my-namespace",
IsResourceRequest: false,
},
expectedScope: "resource",
},
{
name: "POST resource scope",
requestInfo: &request.RequestInfo{
Verb: "create",
Namespace: "my-namespace",
IsResourceRequest: false,
},
expectedScope: "resource",
},
{
name: "namespace scope",
requestInfo: &request.RequestInfo{
Namespace: "my-namespace",
IsResourceRequest: false,
},
expectedScope: "namespace",
},
{
name: "cluster scope",
requestInfo: &request.RequestInfo{
Namespace: "",
IsResourceRequest: true,
},
expectedScope: "cluster",
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
if CleanScope(test.requestInfo) != test.expectedScope {
t.Errorf("failed to clean scope: %v", test.requestInfo)
}
})
}
}