mirror of
https://github.com/prometheus/prometheus.git
synced 2026-04-22 06:01:49 +02:00
Merge pull request #18418 from saikocat/promtool-query-instant-header
promtool: add --header flag to query instant command
This commit is contained in:
commit
e58f16abc6
@ -180,6 +180,7 @@ func main() {
|
||||
queryInstantCmd.Arg("server", "Prometheus server to query.").Required().URLVar(&serverURL)
|
||||
queryInstantExpr := queryInstantCmd.Arg("expr", "PromQL query expression.").Required().String()
|
||||
queryInstantTime := queryInstantCmd.Flag("time", "Query evaluation time (RFC3339 or Unix timestamp).").String()
|
||||
queryInstantHeaders := queryInstantCmd.Flag("header", "Extra headers to send to server.").StringMap()
|
||||
|
||||
queryRangeCmd := queryCmd.Command("range", "Run range query.")
|
||||
queryRangeCmd.Arg("server", "Prometheus server to query.").Required().URLVar(&serverURL)
|
||||
@ -393,7 +394,7 @@ func main() {
|
||||
os.Exit(PushMetrics(remoteWriteURL, httpRoundTripper, *pushMetricsHeaders, *pushMetricsTimeout, *pushMetricsProtoMsg, *pushMetricsLabels, *metricFiles...))
|
||||
|
||||
case queryInstantCmd.FullCommand():
|
||||
os.Exit(QueryInstant(serverURL, httpRoundTripper, *queryInstantExpr, *queryInstantTime, p))
|
||||
os.Exit(QueryInstant(serverURL, httpRoundTripper, *queryInstantHeaders, *queryInstantExpr, *queryInstantTime, p))
|
||||
|
||||
case queryRangeCmd.FullCommand():
|
||||
os.Exit(QueryRange(serverURL, httpRoundTripper, *queryRangeHeaders, *queryRangeExpr, *queryRangeBegin, *queryRangeEnd, *queryRangeStep, p))
|
||||
|
||||
@ -95,7 +95,7 @@ func TestQueryInstant(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
p := &promqlPrinter{}
|
||||
exitCode := QueryInstant(urlObject, http.DefaultTransport, "up", "300", p)
|
||||
exitCode := QueryInstant(urlObject, http.DefaultTransport, map[string]string{}, "up", "300", p)
|
||||
require.Equal(t, "/api/v1/query", getRequest().URL.Path)
|
||||
form := getRequest().Form
|
||||
require.Equal(t, "up", form.Get("query"))
|
||||
@ -103,6 +103,22 @@ func TestQueryInstant(t *testing.T) {
|
||||
require.Equal(t, 0, exitCode)
|
||||
}
|
||||
|
||||
func TestQueryInstantHeaders(t *testing.T) {
|
||||
t.Parallel()
|
||||
s, getRequest := mockServer(200, `{"status": "success", "data": {"resultType": "vector", "result": []}}`)
|
||||
defer s.Close()
|
||||
|
||||
urlObject, err := url.Parse(s.URL)
|
||||
require.NoError(t, err)
|
||||
|
||||
p := &promqlPrinter{}
|
||||
headers := map[string]string{"X-Scope-OrgID": "prom", "X-Custom": "value"}
|
||||
exitCode := QueryInstant(urlObject, http.DefaultTransport, headers, "up", "300", p)
|
||||
require.Equal(t, 0, exitCode)
|
||||
require.Equal(t, "prom", getRequest().Header.Get("X-Scope-OrgID"))
|
||||
require.Equal(t, "value", getRequest().Header.Get("X-Custom"))
|
||||
}
|
||||
|
||||
func mockServer(code int, body string) (*httptest.Server, func() *http.Request) {
|
||||
var req *http.Request
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@ -61,8 +61,8 @@ func newAPI(url *url.URL, roundTripper http.RoundTripper, headers map[string]str
|
||||
}
|
||||
|
||||
// QueryInstant performs an instant query against a Prometheus server.
|
||||
func QueryInstant(url *url.URL, roundTripper http.RoundTripper, query, evalTime string, p printer) int {
|
||||
api, err := newAPI(url, roundTripper, nil)
|
||||
func QueryInstant(url *url.URL, roundTripper http.RoundTripper, headers map[string]string, query, evalTime string, p printer) int {
|
||||
api, err := newAPI(url, roundTripper, headers)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "error creating API client:", err)
|
||||
return failureExitCode
|
||||
|
||||
@ -240,6 +240,7 @@ Run instant query.
|
||||
| Flag | Description |
|
||||
| --- | --- |
|
||||
| <code class="text-nowrap">--time</code> | Query evaluation time (RFC3339 or Unix timestamp). |
|
||||
| <code class="text-nowrap">--header</code> | Extra headers to send to server. |
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user