Carefully compute request path for metrics

Preserve the previx before "api/v1".
This commit is contained in:
Mike Spreitzer 2023-01-22 21:46:06 -05:00
parent 724497cda4
commit 1d199db03e

View File

@ -23,6 +23,7 @@ import (
"fmt" "fmt"
"io" "io"
"net/http" "net/http"
"strings"
"sync" "sync"
"sync/atomic" "sync/atomic"
"time" "time"
@ -274,9 +275,17 @@ func createPriorityLevel(ctx context.Context, f *framework.Framework, priorityLe
} }
func getPriorityLevelNominalConcurrency(ctx context.Context, c clientset.Interface, priorityLevelName string) (int32, error) { func getPriorityLevelNominalConcurrency(ctx context.Context, c clientset.Interface, priorityLevelName string) (int32, error) {
resp, err := c.CoreV1().RESTClient().Get().RequestURI("/metrics").DoRaw(ctx) req := c.CoreV1().RESTClient().Get()
reqURL := req.URL()
// That URL will end with "/api/v1", because we asked for CoreV1 above.
// Replace that part with "/metrics" and leave everything before that unchanged
// because that is what routes to the server.
reqPathOrig := reqURL.EscapedPath()
reqPathMetrics := strings.TrimSuffix(reqPathOrig, "api/v1") + "metrics"
req = req.RequestURI(reqPathMetrics)
resp, err := req.DoRaw(ctx)
if err != nil { if err != nil {
return 0, err return 0, fmt.Errorf("error requesting metrics; request=%#+v, request.URL()=%s: %w", req, req.URL(), err)
} }
sampleDecoder := expfmt.SampleDecoder{ sampleDecoder := expfmt.SampleDecoder{
Dec: expfmt.NewDecoder(bytes.NewBuffer(resp), expfmt.FmtText), Dec: expfmt.NewDecoder(bytes.NewBuffer(resp), expfmt.FmtText),