You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2023/07/03 03:39:24 UTC
[skywalking-banyandb] 01/01: List all properties in a group
This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a commit to branch property
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
commit 2f115a84eab6a6185a1ed57117caf8fcc2007604
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Sun Jul 2 07:21:00 2023 +0000
List all properties in a group
Signed-off-by: Gao Hongtao <ha...@gmail.com>
---
CHANGES.md | 6 +++++
api/proto/banyandb/common/v1/common.proto | 2 +-
api/proto/banyandb/property/v1/rpc.proto | 3 +++
bydbctl/internal/cmd/property.go | 6 ++++-
bydbctl/internal/cmd/property_test.go | 40 ++++++++++++++++++++++++++++++-
bydbctl/internal/cmd/root.go | 8 +++++++
test/integration/other/property_test.go | 9 ++++++-
7 files changed, 70 insertions(+), 4 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 429c2781..4a24c8aa 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -6,6 +6,12 @@ Release Notes.
### Features
+- List all properties in a group.
+
+## 0.4.0
+
+### Features
+
- Add TSDB concept document.
- [UI] Add YAML editor for inputting query criteria.
- Refactor TopN to support `NULL` group while keeping seriesID from the source measure.
diff --git a/api/proto/banyandb/common/v1/common.proto b/api/proto/banyandb/common/v1/common.proto
index fb8572f3..16fe8e67 100644
--- a/api/proto/banyandb/common/v1/common.proto
+++ b/api/proto/banyandb/common/v1/common.proto
@@ -36,7 +36,7 @@ message Metadata {
// group contains a set of options, like retention policy, max
string group = 1;
// name of the entity
- string name = 2 [(validate.rules).string.min_len = 1];
+ string name = 2;
uint32 id = 3;
// readonly. create_revision is the revision of last creation on this key.
int64 create_revision = 4;
diff --git a/api/proto/banyandb/property/v1/rpc.proto b/api/proto/banyandb/property/v1/rpc.proto
index 10a09c78..8151c8bc 100644
--- a/api/proto/banyandb/property/v1/rpc.proto
+++ b/api/proto/banyandb/property/v1/rpc.proto
@@ -102,6 +102,9 @@ service PropertyService {
rpc List(ListRequest) returns (ListResponse) {
option (google.api.http) = {
get: "/v1/property/lists/{container.group}/{container.name}/{ids}/{tags}"
+ additional_bindings {
+ get: "/v1/property/lists/{container.group}"
+ }
};
}
}
diff --git a/bydbctl/internal/cmd/property.go b/bydbctl/internal/cmd/property.go
index 47fa68fd..27c8420d 100644
--- a/bydbctl/internal/cmd/property.go
+++ b/bydbctl/internal/cmd/property.go
@@ -35,6 +35,7 @@ var (
propertySchemaPathWithoutTagParams = propertySchemaPath + "/{group}/{name}/{id}"
propertySchemaPathWithTagParams = propertySchemaPath + "/{group}/{name}/{id}/{tag}"
propertyListSchemaPathWithTagParams = propertySchemaPath + "/lists/{group}/{name}/{ids}/{tags}"
+ propertyListSchemaPath = propertySchemaPath + "/lists/{group}"
)
func newPropertyCmd() *cobra.Command {
@@ -103,12 +104,15 @@ func newPropertyCmd() *cobra.Command {
Short: "List properties",
RunE: func(_ *cobra.Command, _ []string) (err error) {
return rest(parseFromFlags, func(request request) (*resty.Response, error) {
+ if len(request.name) == 0 {
+ return request.req.SetPathParam("group", request.group).Get(getPath(propertyListSchemaPath))
+ }
return request.req.SetPathParam("name", request.name).SetPathParam("group", request.group).
SetPathParam("ids", request.ids()).SetPathParam("tags", request.tags()).Get(getPath(propertyListSchemaPathWithTagParams))
}, yamlPrinter)
},
}
- bindNameFlag(listCmd)
+ listCmd.Flags().StringVarP(&name, "name", "n", "", "the name of the resource")
listCmd.Flags().StringArrayVarP(&ids, "ids", "", nil, "id selector")
listCmd.Flags().StringArrayVarP(&tags, "tags", "t", nil, "tag selector")
diff --git a/bydbctl/internal/cmd/property_test.go b/bydbctl/internal/cmd/property_test.go
index 614375d1..191591c6 100644
--- a/bydbctl/internal/cmd/property_test.go
+++ b/bydbctl/internal/cmd/property_test.go
@@ -201,7 +201,44 @@ tags:
Expect(err).To(MatchError("rpc error: code = NotFound desc = banyandb: resource not found"))
})
- It("list property", func() {
+ It("list all properties", func() {
+ // create another property for list operation
+ rootCmd.SetArgs([]string{"property", "apply", "-f", "-"})
+ rootCmd.SetIn(strings.NewReader(`
+metadata:
+ container:
+ group: ui-template
+ name: service
+ id: spring
+tags:
+ - key: content
+ value:
+ str:
+ value: bar
+ - key: state
+ value:
+ int:
+ value: 1
+`))
+ out := capturer.CaptureStdout(func() {
+ err := rootCmd.Execute()
+ Expect(err).NotTo(HaveOccurred())
+ })
+ Expect(out).To(ContainSubstring("created: true"))
+ Expect(out).To(ContainSubstring("tagsNum: 2"))
+ // list
+ rootCmd.SetArgs([]string{"property", "list", "-g", "ui-template"})
+ out = capturer.CaptureStdout(func() {
+ cmd.ResetFlags()
+ err := rootCmd.Execute()
+ Expect(err).NotTo(HaveOccurred())
+ })
+ resp := new(propertyv1.ListResponse)
+ helpers.UnmarshalYAML([]byte(out), resp)
+ Expect(resp.Property).To(HaveLen(2))
+ })
+
+ It("list properties in a container", func() {
// create another property for list operation
rootCmd.SetArgs([]string{"property", "apply", "-f", "-"})
rootCmd.SetIn(strings.NewReader(`
@@ -229,6 +266,7 @@ tags:
// list
rootCmd.SetArgs([]string{"property", "list", "-g", "ui-template", "-n", "service"})
out = capturer.CaptureStdout(func() {
+ cmd.ResetFlags()
err := rootCmd.Execute()
Expect(err).NotTo(HaveOccurred())
})
diff --git a/bydbctl/internal/cmd/root.go b/bydbctl/internal/cmd/root.go
index 7c7a16e2..c7956d8c 100644
--- a/bydbctl/internal/cmd/root.go
+++ b/bydbctl/internal/cmd/root.go
@@ -42,6 +42,14 @@ var (
}
)
+// ResetFlags resets the flags.
+func ResetFlags() {
+ filePath = ""
+ name = ""
+ start = ""
+ end = ""
+}
+
// Execute executes the root command.
func Execute() error {
return rootCmd.Execute()
diff --git a/test/integration/other/property_test.go b/test/integration/other/property_test.go
index d7ec7c66..79f8f38b 100644
--- a/test/integration/other/property_test.go
+++ b/test/integration/other/property_test.go
@@ -140,7 +140,14 @@ var _ = Describe("Property application", func() {
Expect(conn.Close()).To(Succeed())
deferFn()
})
- It("lists properties", func() {
+ It("lists properties in a group", func() {
+ got, err := client.List(context.Background(), &propertyv1.ListRequest{Container: &commonv1.Metadata{
+ Group: "g",
+ }})
+ Expect(err).NotTo(HaveOccurred())
+ Expect(len(got.Property)).To(Equal(1))
+ })
+ It("lists properties in a container", func() {
got, err := client.List(context.Background(), &propertyv1.ListRequest{Container: md.Container})
Expect(err).NotTo(HaveOccurred())
Expect(len(got.Property)).To(Equal(1))