From 44596305e576d7bcffaa65954611af9afe5f44c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Wed, 17 Aug 2022 23:17:25 +0200 Subject: [PATCH 1/2] Add support for RemoveEmptyTags in API client --- api/prepared_query.go | 6 +++++ api/prepared_query_test.go | 52 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/api/prepared_query.go b/api/prepared_query.go index 753aeb0ea4a3..f47a583735e3 100644 --- a/api/prepared_query.go +++ b/api/prepared_query.go @@ -96,6 +96,12 @@ type QueryTemplate struct { // Regexp allows specifying a regex pattern to match against the name // of the query being executed. Regexp string + + // RemoveEmptyTags if set to true, will cause the Tags list inside + // the Service structure to be stripped of any empty strings. This is useful + // when interpolating into tags in a way where the tag is optional, and + // where searching for an empty tag would yield no results from the query. + RemoveEmptyTags bool } // PreparedQueryDefinition defines a complete prepared query. diff --git a/api/prepared_query_test.go b/api/prepared_query_test.go index 0e358d77746b..f684b26d3f05 100644 --- a/api/prepared_query_test.go +++ b/api/prepared_query_test.go @@ -180,3 +180,55 @@ func TestAPI_PreparedQuery(t *testing.T) { t.Fatalf("bad: %v", defs) } } + +func TestAPI_PreparedQueryRemoveEmptyTags(t *testing.T) { + t.Parallel() + c, s := makeClient(t) + defer s.Stop() + + def := &PreparedQueryDefinition{ + Name: "test", + Service: ServiceQuery{ + Service: "redis", + }, + Template: QueryTemplate{ + RemoveEmptyTags: false, + }, + } + + query := c.PreparedQuery() + var err error + def.ID, _, err = query.Create(def, nil) + if err != nil { + t.Fatalf("err: %s", err) + } + + queries, _, err := query.Get(def.ID, nil) + if err != nil { + t.Fatalf("err: %s", err) + } + if len(queries) != 1 { + t.Fatalf("wrong length: %#v", queries) + } + if queries[0].Template.RemoveEmptyTags { + t.Fatalf("wrong value: %v", queries[0].Template.RemoveEmptyTags) + } + + def.Template.RemoveEmptyTags = true + _, err = query.Update(def, nil) + if err != nil { + t.Fatalf("err: %s", err) + } + + queries, _, err = query.Get(def.ID, nil) + if err != nil { + t.Fatalf("err: %s", err) + } + if len(queries) != 1 { + t.Fatalf("wrong length: %#v", queries) + } + if !queries[0].Template.RemoveEmptyTags { + t.Fatalf("wrong value: %v", queries[0].Template.RemoveEmptyTags) + } + +} From be35f72ebdde6b03846da55ea3c2186cf278b3c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Wed, 17 Aug 2022 23:20:57 +0200 Subject: [PATCH 2/2] Add changelog --- .changelog/14244.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/14244.txt diff --git a/.changelog/14244.txt b/.changelog/14244.txt new file mode 100644 index 000000000000..3edc4e7f56b2 --- /dev/null +++ b/.changelog/14244.txt @@ -0,0 +1,3 @@ +```release-note:improvement +client: add support for RemoveEmptyTags in Prepared Queries templates. +```