MCPcopy
hub / github.com/prometheus/prometheus / labelValues

Method labelValues

web/api/v1/api.go:852–948  ·  view source on GitHub ↗
(r *http.Request)

Source from the content-addressed store, hash-verified

850}
851
852func (api *API) labelValues(r *http.Request) (result apiFuncResult) {
853 ctx := r.Context()
854 name := route.Param(ctx, "name")
855
856 if strings.HasPrefix(name, "U__") {
857 name = model.UnescapeName(name, model.ValueEncodingEscaping)
858 }
859
860 if !model.UTF8Validation.IsValidLabelName(name) {
861 return apiFuncResult{nil, &apiError{errorBadData, fmt.Errorf("invalid label name: %q", name)}, nil, nil}
862 }
863
864 limit, err := parseLimitParam(r.FormValue("limit"))
865 if err != nil {
866 return invalidParamError(err, "limit")
867 }
868
869 start, err := parseTimeParam(r, "start", MinTime)
870 if err != nil {
871 return invalidParamError(err, "start")
872 }
873 end, err := parseTimeParam(r, "end", MaxTime)
874 if err != nil {
875 return invalidParamError(err, "end")
876 }
877
878 matcherSets, err := api.parseMatchersParam(r.Form["match[]"])
879 if err != nil {
880 return apiFuncResult{nil, &apiError{errorBadData, err}, nil, nil}
881 }
882
883 hints := &storage.LabelHints{
884 Limit: toHintLimit(limit),
885 }
886
887 q, err := api.Queryable.Querier(timestamp.FromTime(start), timestamp.FromTime(end))
888 if err != nil {
889 return apiFuncResult{nil, &apiError{errorExec, err}, nil, nil}
890 }
891 // From now on, we must only return with a finalizer in the result (to
892 // be called by the caller) or call q.Close ourselves (which is required
893 // in the case of a panic).
894 defer func() {
895 if result.finalizer == nil {
896 q.Close()
897 }
898 }()
899 closer := func() {
900 q.Close()
901 }
902
903 var (
904 vals []string
905 warnings annotations.Annotations
906 )
907 if len(matcherSets) > 1 {
908 var callWarnings annotations.Annotations
909 labelValuesSet := make(map[string]struct{})

Callers

nothing calls this directly

Calls 13

parseMatchersParamMethod · 0.95
FromTimeFunction · 0.92
parseLimitParamFunction · 0.85
invalidParamErrorFunction · 0.85
parseTimeParamFunction · 0.85
toHintLimitFunction · 0.85
QuerierMethod · 0.65
CloseMethod · 0.65
LabelValuesMethod · 0.65
MergeMethod · 0.65
AddMethod · 0.65
ContextMethod · 0.45

Tested by

no test coverage detected