Merge pull request #90086 from rvillablanca/fix/handle-error-parseform

Handling error returned by request.Request.ParseForm()
This commit is contained in:
Kubernetes Prow Robot 2020-05-09 22:07:50 -07:00 committed by GitHub
commit 423c17d859
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View File

@ -1579,6 +1579,20 @@ func TestDebuggingDisabledHandlers(t *testing.T) {
}
func TestFailedParseParamsSummaryHandler(t *testing.T) {
fw := newServerTest()
defer fw.testHTTPServer.Close()
resp, err := http.Post(fw.testHTTPServer.URL+"/stats/summary", "invalid/content/type", nil)
assert.NoError(t, err)
defer resp.Body.Close()
v, err := ioutil.ReadAll(resp.Body)
assert.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, resp.StatusCode)
assert.Contains(t, string(v), "parse form failed")
}
func TestTrimURLPath(t *testing.T) {
tests := []struct {
path, expected string

View File

@ -29,6 +29,7 @@ go_library(
"//staging/src/k8s.io/component-base/metrics:go_default_library",
"//vendor/github.com/emicklei/go-restful:go_default_library",
"//vendor/github.com/google/cadvisor/info/v1:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
],
)

View File

@ -26,6 +26,7 @@ import (
restful "github.com/emicklei/go-restful"
cadvisorapi "github.com/google/cadvisor/info/v1"
"github.com/pkg/errors"
"k8s.io/klog"
"k8s.io/api/core/v1"
@ -215,13 +216,16 @@ func (h *handler) handleStats(request *restful.Request, response *restful.Respon
// If "only_cpu_and_memory" GET param is true then only cpu and memory is returned in response.
func (h *handler) handleSummary(request *restful.Request, response *restful.Response) {
onlyCPUAndMemory := false
request.Request.ParseForm()
err := request.Request.ParseForm()
if err != nil {
handleError(response, "/stats/summary", errors.Wrapf(err, "parse form failed"))
return
}
if onlyCluAndMemoryParam, found := request.Request.Form["only_cpu_and_memory"]; found &&
len(onlyCluAndMemoryParam) == 1 && onlyCluAndMemoryParam[0] == "true" {
onlyCPUAndMemory = true
}
var summary *statsapi.Summary
var err error
if onlyCPUAndMemory {
summary, err = h.summaryProvider.GetCPUAndMemoryStats()
} else {