EntityStore: Use protobuf for summary objects (#77600)

use protobuf for summary
This commit is contained in:
Ryan McKinley 2023-11-03 07:49:01 -07:00 committed by GitHub
parent 61d63d3034
commit 72ed6434ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 586 additions and 312 deletions

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.30.0
// protoc v4.23.4
// protoc-gen-go v1.31.0
// protoc v4.24.4
// source: entity.proto
package entity
@ -1752,6 +1752,211 @@ func (x *EntityWatchResponse) GetAction() EntityWatchResponse_Action {
return EntityWatchResponse_UNKNOWN
}
type EntitySummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UID string `protobuf:"bytes,1,opt,name=UID,proto3" json:"UID,omitempty"`
Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
// Key value pairs. Tags are are represented as keys with empty values
Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Parent folder UID
Folder string `protobuf:"bytes,6,opt,name=folder,proto3" json:"folder,omitempty"`
// URL safe version of the name. It will be unique within the folder
Slug string `protobuf:"bytes,7,opt,name=slug,proto3" json:"slug,omitempty"`
// When errors exist
Error *EntityErrorInfo `protobuf:"bytes,8,opt,name=error,proto3" json:"error,omitempty"`
// Optional field values. The schema will define and document possible values for a given kind
Fields map[string]string `protobuf:"bytes,9,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// eg: panels within dashboard
Nested []*EntitySummary `protobuf:"bytes,10,rep,name=nested,proto3" json:"nested,omitempty"`
// Optional references to external things
References []*EntityExternalReference `protobuf:"bytes,11,rep,name=references,proto3" json:"references,omitempty"`
}
func (x *EntitySummary) Reset() {
*x = EntitySummary{}
if protoimpl.UnsafeEnabled {
mi := &file_entity_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EntitySummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EntitySummary) ProtoMessage() {}
func (x *EntitySummary) ProtoReflect() protoreflect.Message {
mi := &file_entity_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EntitySummary.ProtoReflect.Descriptor instead.
func (*EntitySummary) Descriptor() ([]byte, []int) {
return file_entity_proto_rawDescGZIP(), []int{19}
}
func (x *EntitySummary) GetUID() string {
if x != nil {
return x.UID
}
return ""
}
func (x *EntitySummary) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
func (x *EntitySummary) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *EntitySummary) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *EntitySummary) GetLabels() map[string]string {
if x != nil {
return x.Labels
}
return nil
}
func (x *EntitySummary) GetFolder() string {
if x != nil {
return x.Folder
}
return ""
}
func (x *EntitySummary) GetSlug() string {
if x != nil {
return x.Slug
}
return ""
}
func (x *EntitySummary) GetError() *EntityErrorInfo {
if x != nil {
return x.Error
}
return nil
}
func (x *EntitySummary) GetFields() map[string]string {
if x != nil {
return x.Fields
}
return nil
}
func (x *EntitySummary) GetNested() []*EntitySummary {
if x != nil {
return x.Nested
}
return nil
}
func (x *EntitySummary) GetReferences() []*EntityExternalReference {
if x != nil {
return x.References
}
return nil
}
type EntityExternalReference struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Category of dependency
// eg: datasource, plugin, runtime
Family string `protobuf:"bytes,1,opt,name=family,proto3" json:"family,omitempty"`
// datasource > prometheus|influx|...
// plugin > panel | datasource
// runtime > transformer
Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
// datasource > UID
// plugin > plugin identifier
// runtime > name lookup
Identifier string `protobuf:"bytes,3,opt,name=identifier,proto3" json:"identifier,omitempty"`
}
func (x *EntityExternalReference) Reset() {
*x = EntityExternalReference{}
if protoimpl.UnsafeEnabled {
mi := &file_entity_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EntityExternalReference) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EntityExternalReference) ProtoMessage() {}
func (x *EntityExternalReference) ProtoReflect() protoreflect.Message {
mi := &file_entity_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EntityExternalReference.ProtoReflect.Descriptor instead.
func (*EntityExternalReference) Descriptor() ([]byte, []int) {
return file_entity_proto_rawDescGZIP(), []int{20}
}
func (x *EntityExternalReference) GetFamily() string {
if x != nil {
return x.Family
}
return ""
}
func (x *EntityExternalReference) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *EntityExternalReference) GetIdentifier() string {
if x != nil {
return x.Identifier
}
return ""
}
var File_entity_proto protoreflect.FileDescriptor
var file_entity_proto_rawDesc = []byte{
@ -1994,52 +2199,93 @@ var file_entity_proto_rawDesc = []byte{
0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b,
0x0a, 0x07, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44,
0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x32, 0xb2, 0x04, 0x0a, 0x0b, 0x45, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64,
0x12, 0x19, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x45, 0x6e,
0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x65, 0x6e,
0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x09, 0x42,
0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x57, 0x72, 0x69,
0x74, 0x65, 0x12, 0x1a, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74,
0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0xa2, 0x04, 0x0a, 0x0d, 0x45, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x49,
0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04,
0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e,
0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x4c, 0x61,
0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75,
0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x2d, 0x0a,
0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x72, 0x72, 0x6f,
0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x06,
0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65,
0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x06,
0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
0x6e, 0x63, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x66,
0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x65, 0x0a,
0x17, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52,
0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69,
0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79,
0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x66, 0x69, 0x65, 0x72, 0x32, 0xb2, 0x04, 0x0a, 0x0b, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53,
0x74, 0x6f, 0x72, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x19, 0x2e, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, 0x68,
0x52, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x42, 0x61,
0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x42, 0x61,
0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x1a,
0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x46, 0x0a, 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x2e, 0x65, 0x6e,
0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f,
0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x65, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72,
0x63, 0x68, 0x12, 0x1b, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1c, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53,
0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a,
0x05, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e,
0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30,
0x01, 0x12, 0x4a, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12,
0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72,
0x69, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1b, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x5e, 0x0a,
0x10, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x64, 0x6d, 0x69,
0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12,
0x1f, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72,
0x69, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1b, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x36, 0x5a,
0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66,
0x61, 0x6e, 0x61, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x2f, 0x70, 0x6b, 0x67, 0x2f,
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x12, 0x1b, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c,
0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e,
0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x07,
0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b,
0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x65,
0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x65, 0x6e,
0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63,
0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x57, 0x61, 0x74,
0x63, 0x68, 0x12, 0x1a, 0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
0x2e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x57, 0x61,
0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x4a, 0x0a,
0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x65, 0x6e,
0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x5e, 0x0a, 0x10, 0x45, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x4a, 0x0a,
0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x65, 0x6e,
0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x2f,
0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -2055,7 +2301,7 @@ func file_entity_proto_rawDescGZIP() []byte {
}
var file_entity_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_entity_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_entity_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
var file_entity_proto_goTypes = []interface{}{
(WriteEntityResponse_Status)(0), // 0: entity.WriteEntityResponse.Status
(EntityWatchResponse_Action)(0), // 1: entity.EntityWatchResponse.Action
@ -2078,59 +2324,68 @@ var file_entity_proto_goTypes = []interface{}{
(*EntitySearchResponse)(nil), // 18: entity.EntitySearchResponse
(*EntityWatchRequest)(nil), // 19: entity.EntityWatchRequest
(*EntityWatchResponse)(nil), // 20: entity.EntityWatchResponse
nil, // 21: entity.EntitySearchRequest.LabelsEntry
nil, // 22: entity.EntitySearchResult.LabelsEntry
nil, // 23: entity.EntityWatchRequest.LabelsEntry
(*grn.GRN)(nil), // 24: grn.GRN
(*EntitySummary)(nil), // 21: entity.EntitySummary
(*EntityExternalReference)(nil), // 22: entity.EntityExternalReference
nil, // 23: entity.EntitySearchRequest.LabelsEntry
nil, // 24: entity.EntitySearchResult.LabelsEntry
nil, // 25: entity.EntityWatchRequest.LabelsEntry
nil, // 26: entity.EntitySummary.LabelsEntry
nil, // 27: entity.EntitySummary.FieldsEntry
(*grn.GRN)(nil), // 28: grn.GRN
}
var file_entity_proto_depIdxs = []int32{
24, // 0: entity.Entity.GRN:type_name -> grn.GRN
28, // 0: entity.Entity.GRN:type_name -> grn.GRN
3, // 1: entity.Entity.origin:type_name -> entity.EntityOriginInfo
24, // 2: entity.ReadEntityRequest.GRN:type_name -> grn.GRN
28, // 2: entity.ReadEntityRequest.GRN:type_name -> grn.GRN
6, // 3: entity.BatchReadEntityRequest.batch:type_name -> entity.ReadEntityRequest
2, // 4: entity.BatchReadEntityResponse.results:type_name -> entity.Entity
24, // 5: entity.WriteEntityRequest.GRN:type_name -> grn.GRN
24, // 6: entity.AdminWriteEntityRequest.GRN:type_name -> grn.GRN
28, // 5: entity.WriteEntityRequest.GRN:type_name -> grn.GRN
28, // 6: entity.AdminWriteEntityRequest.GRN:type_name -> grn.GRN
3, // 7: entity.AdminWriteEntityRequest.origin:type_name -> entity.EntityOriginInfo
4, // 8: entity.WriteEntityResponse.error:type_name -> entity.EntityErrorInfo
24, // 9: entity.WriteEntityResponse.GRN:type_name -> grn.GRN
28, // 9: entity.WriteEntityResponse.GRN:type_name -> grn.GRN
5, // 10: entity.WriteEntityResponse.entity:type_name -> entity.EntityVersionInfo
0, // 11: entity.WriteEntityResponse.status:type_name -> entity.WriteEntityResponse.Status
24, // 12: entity.DeleteEntityRequest.GRN:type_name -> grn.GRN
24, // 13: entity.EntityHistoryRequest.GRN:type_name -> grn.GRN
24, // 14: entity.EntityHistoryResponse.GRN:type_name -> grn.GRN
28, // 12: entity.DeleteEntityRequest.GRN:type_name -> grn.GRN
28, // 13: entity.EntityHistoryRequest.GRN:type_name -> grn.GRN
28, // 14: entity.EntityHistoryResponse.GRN:type_name -> grn.GRN
5, // 15: entity.EntityHistoryResponse.versions:type_name -> entity.EntityVersionInfo
21, // 16: entity.EntitySearchRequest.labels:type_name -> entity.EntitySearchRequest.LabelsEntry
24, // 17: entity.EntitySearchResult.GRN:type_name -> grn.GRN
22, // 18: entity.EntitySearchResult.labels:type_name -> entity.EntitySearchResult.LabelsEntry
23, // 16: entity.EntitySearchRequest.labels:type_name -> entity.EntitySearchRequest.LabelsEntry
28, // 17: entity.EntitySearchResult.GRN:type_name -> grn.GRN
24, // 18: entity.EntitySearchResult.labels:type_name -> entity.EntitySearchResult.LabelsEntry
17, // 19: entity.EntitySearchResponse.results:type_name -> entity.EntitySearchResult
24, // 20: entity.EntityWatchRequest.GRN:type_name -> grn.GRN
23, // 21: entity.EntityWatchRequest.labels:type_name -> entity.EntityWatchRequest.LabelsEntry
28, // 20: entity.EntityWatchRequest.GRN:type_name -> grn.GRN
25, // 21: entity.EntityWatchRequest.labels:type_name -> entity.EntityWatchRequest.LabelsEntry
2, // 22: entity.EntityWatchResponse.entity:type_name -> entity.Entity
1, // 23: entity.EntityWatchResponse.action:type_name -> entity.EntityWatchResponse.Action
6, // 24: entity.EntityStore.Read:input_type -> entity.ReadEntityRequest
7, // 25: entity.EntityStore.BatchRead:input_type -> entity.BatchReadEntityRequest
9, // 26: entity.EntityStore.Write:input_type -> entity.WriteEntityRequest
12, // 27: entity.EntityStore.Delete:input_type -> entity.DeleteEntityRequest
14, // 28: entity.EntityStore.History:input_type -> entity.EntityHistoryRequest
16, // 29: entity.EntityStore.Search:input_type -> entity.EntitySearchRequest
19, // 30: entity.EntityStore.Watch:input_type -> entity.EntityWatchRequest
10, // 31: entity.EntityStore.AdminWrite:input_type -> entity.AdminWriteEntityRequest
10, // 32: entity.EntityStoreAdmin.AdminWrite:input_type -> entity.AdminWriteEntityRequest
2, // 33: entity.EntityStore.Read:output_type -> entity.Entity
8, // 34: entity.EntityStore.BatchRead:output_type -> entity.BatchReadEntityResponse
11, // 35: entity.EntityStore.Write:output_type -> entity.WriteEntityResponse
13, // 36: entity.EntityStore.Delete:output_type -> entity.DeleteEntityResponse
15, // 37: entity.EntityStore.History:output_type -> entity.EntityHistoryResponse
18, // 38: entity.EntityStore.Search:output_type -> entity.EntitySearchResponse
20, // 39: entity.EntityStore.Watch:output_type -> entity.EntityWatchResponse
11, // 40: entity.EntityStore.AdminWrite:output_type -> entity.WriteEntityResponse
11, // 41: entity.EntityStoreAdmin.AdminWrite:output_type -> entity.WriteEntityResponse
33, // [33:42] is the sub-list for method output_type
24, // [24:33] is the sub-list for method input_type
24, // [24:24] is the sub-list for extension type_name
24, // [24:24] is the sub-list for extension extendee
0, // [0:24] is the sub-list for field type_name
26, // 24: entity.EntitySummary.labels:type_name -> entity.EntitySummary.LabelsEntry
4, // 25: entity.EntitySummary.error:type_name -> entity.EntityErrorInfo
27, // 26: entity.EntitySummary.fields:type_name -> entity.EntitySummary.FieldsEntry
21, // 27: entity.EntitySummary.nested:type_name -> entity.EntitySummary
22, // 28: entity.EntitySummary.references:type_name -> entity.EntityExternalReference
6, // 29: entity.EntityStore.Read:input_type -> entity.ReadEntityRequest
7, // 30: entity.EntityStore.BatchRead:input_type -> entity.BatchReadEntityRequest
9, // 31: entity.EntityStore.Write:input_type -> entity.WriteEntityRequest
12, // 32: entity.EntityStore.Delete:input_type -> entity.DeleteEntityRequest
14, // 33: entity.EntityStore.History:input_type -> entity.EntityHistoryRequest
16, // 34: entity.EntityStore.Search:input_type -> entity.EntitySearchRequest
19, // 35: entity.EntityStore.Watch:input_type -> entity.EntityWatchRequest
10, // 36: entity.EntityStore.AdminWrite:input_type -> entity.AdminWriteEntityRequest
10, // 37: entity.EntityStoreAdmin.AdminWrite:input_type -> entity.AdminWriteEntityRequest
2, // 38: entity.EntityStore.Read:output_type -> entity.Entity
8, // 39: entity.EntityStore.BatchRead:output_type -> entity.BatchReadEntityResponse
11, // 40: entity.EntityStore.Write:output_type -> entity.WriteEntityResponse
13, // 41: entity.EntityStore.Delete:output_type -> entity.DeleteEntityResponse
15, // 42: entity.EntityStore.History:output_type -> entity.EntityHistoryResponse
18, // 43: entity.EntityStore.Search:output_type -> entity.EntitySearchResponse
20, // 44: entity.EntityStore.Watch:output_type -> entity.EntityWatchResponse
11, // 45: entity.EntityStore.AdminWrite:output_type -> entity.WriteEntityResponse
11, // 46: entity.EntityStoreAdmin.AdminWrite:output_type -> entity.WriteEntityResponse
38, // [38:47] is the sub-list for method output_type
29, // [29:38] is the sub-list for method input_type
29, // [29:29] is the sub-list for extension type_name
29, // [29:29] is the sub-list for extension extendee
0, // [0:29] is the sub-list for field type_name
}
func init() { file_entity_proto_init() }
@ -2367,6 +2622,30 @@ func file_entity_proto_init() {
return nil
}
}
file_entity_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EntitySummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_entity_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EntityExternalReference); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@ -2374,7 +2653,7 @@ func file_entity_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_entity_proto_rawDesc,
NumEnums: 2,
NumMessages: 22,
NumMessages: 26,
NumExtensions: 0,
NumServices: 2,
},

View File

@ -396,6 +396,51 @@ message EntityWatchResponse {
}
}
message EntitySummary {
string UID = 1;
string kind = 2;
string name = 3;
string description = 4;
// Key value pairs. Tags are are represented as keys with empty values
map<string,string> labels = 5;
// Parent folder UID
string folder = 6;
// URL safe version of the name. It will be unique within the folder
string slug = 7;
// When errors exist
EntityErrorInfo error = 8;
// Optional field values. The schema will define and document possible values for a given kind
map<string, string> fields = 9;
// eg: panels within dashboard
repeated EntitySummary nested = 10;
// Optional references to external things
repeated EntityExternalReference references = 11;
}
message EntityExternalReference {
// Category of dependency
// eg: datasource, plugin, runtime
string family = 1;
// datasource > prometheus|influx|...
// plugin > panel | datasource
// runtime > transformer
string type = 2;
// datasource > UID
// plugin > plugin identifier
// runtime > name lookup
string identifier = 3;
}
//-----------------------------------------------
// Storage interface

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.23.4
// - protoc v4.24.4
// source: entity.proto
package entity

View File

@ -86,59 +86,6 @@ type EntityKindInfo struct {
MimeType string `json:"mimeType,omitempty"`
}
// EntitySummary represents common data derived from a raw object bytes.
// The values should not depend on system state, and are derived from the raw object.
// This summary is used for a unified search and object listing
type EntitySummary struct {
UID string `json:"uid,omitempty"`
Kind string `json:"kind,omitempty"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
// Key value pairs. Tags are are represented as keys with empty values
Labels map[string]string `json:"labels,omitempty"`
// Parent folder UID
Folder string `json:"folder,omitempty"`
// URL safe version of the name. It will be unique within the folder
Slug string `json:"slug,omitempty"`
// When errors exist
Error *EntityErrorInfo `json:"error,omitempty"`
// Optional field values. The schema will define and document possible values for a given kind
Fields map[string]any `json:"fields,omitempty"`
// eg: panels within dashboard
Nested []*EntitySummary `json:"nested,omitempty"`
// Optional references to external things
References []*EntityExternalReference `json:"references,omitempty"`
// The summary can not be extended
_ any
}
// Reference to another object outside itself
// This message is derived from the object body and can be used to search for references.
// This does not represent a method to declare a reference to another object.
type EntityExternalReference struct {
// Category of dependency
// eg: datasource, plugin, runtime
Family string `json:"family,omitempty"`
// datasource > prometheus|influx|...
// plugin > panel | datasource
// runtime > transformer
Type string `json:"type,omitempty"` // flavor
// datasource > UID
// plugin > plugin identifier
// runtime > name lookup
Identifier string `json:"ID,omitempty"`
}
// EntitySummaryBuilder will read an object, validate it, and return a summary, sanitized payload, or an error
// This should not include values that depend on system state, only the raw object
type EntitySummaryBuilder = func(ctx context.Context, uid string, body []byte) (*EntitySummary, []byte, error)

View File

@ -4,6 +4,7 @@ import (
"bytes"
"context"
"encoding/json"
"fmt"
"strconv"
"github.com/grafana/grafana/pkg/plugins"
@ -44,7 +45,7 @@ func NewStaticDashboardSummaryBuilder(lookup DatasourceLookup, sanitize bool) en
summary := &entity.EntitySummary{
Labels: make(map[string]string),
Fields: make(map[string]any),
Fields: make(map[string]string),
}
stream := bytes.NewBuffer(body)
dash, err := readDashboard(stream, lookup)
@ -62,9 +63,9 @@ func NewStaticDashboardSummaryBuilder(lookup DatasourceLookup, sanitize bool) en
summary.Labels[v] = ""
}
if len(dash.TemplateVars) > 0 {
summary.Fields["hasTemplateVars"] = true
summary.Fields["hasTemplateVars"] = "true"
}
summary.Fields["schemaVersion"] = dash.SchemaVersion
summary.Fields["schemaVersion"] = fmt.Sprint(dash.SchemaVersion)
for _, panel := range dash.Panels {
panelRefs := NewReferenceAccumulator()
@ -74,7 +75,7 @@ func NewStaticDashboardSummaryBuilder(lookup DatasourceLookup, sanitize bool) en
}
p.Name = panel.Title
p.Description = panel.Description
p.Fields = make(map[string]any, 0)
p.Fields = make(map[string]string, 0)
p.Fields["type"] = panel.Type
if panel.Type != "row" {

View File

@ -6,11 +6,11 @@
"panel-tests": ""
},
"fields": {
"schemaVersion": 18
"schemaVersion": "18"
},
"nested": [
{
"uid": "graph-gradient-area-fills.json#2",
"UID": "graph-gradient-area-fills.json#2",
"kind": "panel",
"name": "Req/s",
"fields": {
@ -23,12 +23,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-gradient-area-fills.json#11",
"UID": "graph-gradient-area-fills.json#11",
"kind": "panel",
"name": "Req/s",
"fields": {
@ -41,12 +41,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-gradient-area-fills.json#7",
"UID": "graph-gradient-area-fills.json#7",
"kind": "panel",
"name": "Memory",
"fields": {
@ -59,12 +59,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-gradient-area-fills.json#10",
"UID": "graph-gradient-area-fills.json#10",
"kind": "panel",
"name": "Req/s",
"fields": {
@ -77,7 +77,7 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}
@ -89,7 +89,7 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}

View File

@ -6,11 +6,11 @@
"panel-tests": ""
},
"fields": {
"schemaVersion": 28
"schemaVersion": "28"
},
"nested": [
{
"uid": "graph-shared-tooltips.json#4",
"UID": "graph-shared-tooltips.json#4",
"kind": "panel",
"name": "two units",
"fields": {
@ -23,12 +23,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "timeseries"
"identifier": "timeseries"
}
]
},
{
"uid": "graph-shared-tooltips.json#13",
"UID": "graph-shared-tooltips.json#13",
"kind": "panel",
"name": "Speed vs Temperature (XY)",
"fields": {
@ -41,22 +41,22 @@
{
"family": "plugin",
"type": "panel",
"ID": "xychart"
"identifier": "xychart"
},
{
"family": "runtime",
"type": "transformer",
"ID": "organize"
"identifier": "organize"
},
{
"family": "runtime",
"type": "transformer",
"ID": "seriesToColumns"
"identifier": "seriesToColumns"
}
]
},
{
"uid": "graph-shared-tooltips.json#2",
"UID": "graph-shared-tooltips.json#2",
"kind": "panel",
"name": "Cursor info",
"fields": {
@ -69,12 +69,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "debug"
"identifier": "debug"
}
]
},
{
"uid": "graph-shared-tooltips.json#5",
"UID": "graph-shared-tooltips.json#5",
"kind": "panel",
"name": "Only temperature",
"fields": {
@ -87,12 +87,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "timeseries"
"identifier": "timeseries"
}
]
},
{
"uid": "graph-shared-tooltips.json#9",
"UID": "graph-shared-tooltips.json#9",
"kind": "panel",
"name": "Only Speed",
"fields": {
@ -105,12 +105,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "timeseries"
"identifier": "timeseries"
}
]
},
{
"uid": "graph-shared-tooltips.json#11",
"UID": "graph-shared-tooltips.json#11",
"kind": "panel",
"name": "Panel Title",
"fields": {
@ -123,12 +123,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "timeseries"
"identifier": "timeseries"
}
]
},
{
"uid": "graph-shared-tooltips.json#8",
"UID": "graph-shared-tooltips.json#8",
"kind": "panel",
"name": "flot panel (temperature)",
"fields": {
@ -141,12 +141,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-shared-tooltips.json#10",
"UID": "graph-shared-tooltips.json#10",
"kind": "panel",
"name": "flot panel (no units)",
"fields": {
@ -159,7 +159,7 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}
@ -171,32 +171,32 @@
{
"family": "plugin",
"type": "panel",
"ID": "debug"
"identifier": "debug"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
},
{
"family": "plugin",
"type": "panel",
"ID": "timeseries"
"identifier": "timeseries"
},
{
"family": "plugin",
"type": "panel",
"ID": "xychart"
"identifier": "xychart"
},
{
"family": "runtime",
"type": "transformer",
"ID": "organize"
"identifier": "organize"
},
{
"family": "runtime",
"type": "transformer",
"ID": "seriesToColumns"
"identifier": "seriesToColumns"
}
]
}

View File

@ -6,11 +6,11 @@
"panel-tests": ""
},
"fields": {
"schemaVersion": 18
"schemaVersion": "18"
},
"nested": [
{
"uid": "graph-time-regions.json#2",
"UID": "graph-time-regions.json#2",
"kind": "panel",
"name": "Business Hours",
"fields": {
@ -19,17 +19,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-time-regions.json#4",
"UID": "graph-time-regions.json#4",
"kind": "panel",
"name": "Sunday's 20-23",
"fields": {
@ -38,17 +38,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-time-regions.json#3",
"UID": "graph-time-regions.json#3",
"kind": "panel",
"name": "Each day of week",
"fields": {
@ -57,17 +57,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-time-regions.json#5",
"UID": "graph-time-regions.json#5",
"kind": "panel",
"name": "05:00",
"fields": {
@ -76,17 +76,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph-time-regions.json#7",
"UID": "graph-time-regions.json#7",
"kind": "panel",
"name": "From 22:00 to 00:30 (crossing midnight)",
"fields": {
@ -95,12 +95,12 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}
@ -108,12 +108,12 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}

View File

@ -6,11 +6,11 @@
"panel-tests": ""
},
"fields": {
"schemaVersion": 16
"schemaVersion": "16"
},
"nested": [
{
"uid": "graph_tests.json#1",
"UID": "graph_tests.json#1",
"kind": "panel",
"name": "No Data Points Warning",
"fields": {
@ -19,17 +19,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#2",
"UID": "graph_tests.json#2",
"kind": "panel",
"name": "Datapoints Outside Range Warning",
"fields": {
@ -38,17 +38,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#3",
"UID": "graph_tests.json#3",
"kind": "panel",
"name": "Random walk series",
"fields": {
@ -57,17 +57,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#4",
"UID": "graph_tests.json#4",
"kind": "panel",
"name": "Millisecond res x-axis and tooltip",
"fields": {
@ -76,17 +76,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#6",
"UID": "graph_tests.json#6",
"kind": "panel",
"fields": {
"type": "text"
@ -98,12 +98,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "text"
"identifier": "text"
}
]
},
{
"uid": "graph_tests.json#5",
"UID": "graph_tests.json#5",
"kind": "panel",
"name": "2 yaxis and axis labels",
"fields": {
@ -112,17 +112,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#7",
"UID": "graph_tests.json#7",
"kind": "panel",
"fields": {
"type": "text"
@ -134,12 +134,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "text"
"identifier": "text"
}
]
},
{
"uid": "graph_tests.json#8",
"UID": "graph_tests.json#8",
"kind": "panel",
"name": "null value connected",
"fields": {
@ -148,17 +148,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#10",
"UID": "graph_tests.json#10",
"kind": "panel",
"name": "null value null as zero",
"fields": {
@ -167,17 +167,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#13",
"UID": "graph_tests.json#13",
"kind": "panel",
"fields": {
"type": "text"
@ -189,12 +189,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "text"
"identifier": "text"
}
]
},
{
"uid": "graph_tests.json#9",
"UID": "graph_tests.json#9",
"kind": "panel",
"name": "Stacking value ontop of nulls",
"fields": {
@ -203,17 +203,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#14",
"UID": "graph_tests.json#14",
"kind": "panel",
"fields": {
"type": "text"
@ -225,12 +225,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "text"
"identifier": "text"
}
]
},
{
"uid": "graph_tests.json#12",
"UID": "graph_tests.json#12",
"kind": "panel",
"name": "Stacking all series null segment",
"fields": {
@ -239,17 +239,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#15",
"UID": "graph_tests.json#15",
"kind": "panel",
"fields": {
"type": "text"
@ -261,12 +261,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "text"
"identifier": "text"
}
]
},
{
"uid": "graph_tests.json#21",
"UID": "graph_tests.json#21",
"kind": "panel",
"name": "Null between points",
"fields": {
@ -275,17 +275,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#22",
"UID": "graph_tests.json#22",
"kind": "panel",
"fields": {
"type": "text"
@ -297,12 +297,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "text"
"identifier": "text"
}
]
},
{
"uid": "graph_tests.json#20",
"UID": "graph_tests.json#20",
"kind": "panel",
"name": "Legend Table Single Series Should Take Minimum Height",
"fields": {
@ -311,17 +311,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#16",
"UID": "graph_tests.json#16",
"kind": "panel",
"name": "Legend Table No Scroll Visible",
"fields": {
@ -330,17 +330,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#17",
"UID": "graph_tests.json#17",
"kind": "panel",
"name": "Legend Table Should Scroll",
"fields": {
@ -349,17 +349,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#18",
"UID": "graph_tests.json#18",
"kind": "panel",
"name": "Legend Table No Scroll Visible",
"fields": {
@ -368,17 +368,17 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_tests.json#19",
"UID": "graph_tests.json#19",
"kind": "panel",
"name": "Legend Table No Scroll Visible",
"fields": {
@ -387,12 +387,12 @@
"references": [
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}
@ -403,17 +403,17 @@
},
{
"family": "ds",
"ID": "gdev-testdata"
"identifier": "gdev-testdata"
},
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
},
{
"family": "plugin",
"type": "panel",
"ID": "text"
"identifier": "text"
}
]
}

View File

@ -5,11 +5,11 @@
"panel-tests": ""
},
"fields": {
"schemaVersion": 19
"schemaVersion": "19"
},
"nested": [
{
"uid": "graph_y_axis.json#7",
"UID": "graph_y_axis.json#7",
"kind": "panel",
"name": "Data from 0 - 10K (unit short)",
"fields": {
@ -22,12 +22,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#5",
"UID": "graph_y_axis.json#5",
"kind": "panel",
"name": "Data from 0 - 10K (unit bytes metric)",
"fields": {
@ -40,12 +40,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#4",
"UID": "graph_y_axis.json#4",
"kind": "panel",
"name": "Data from 0 - 10K (unit bytes IEC)",
"fields": {
@ -58,12 +58,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#2",
"UID": "graph_y_axis.json#2",
"kind": "panel",
"name": "Data from 0 - 10K (unit short)",
"fields": {
@ -76,12 +76,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#3",
"UID": "graph_y_axis.json#3",
"kind": "panel",
"name": "Data from 0.0002 - 0.001 (unit short)",
"fields": {
@ -94,12 +94,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#6",
"UID": "graph_y_axis.json#6",
"kind": "panel",
"name": "Data from 12000 - 30000 (unit ms)",
"fields": {
@ -112,12 +112,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#9",
"UID": "graph_y_axis.json#9",
"kind": "panel",
"name": "Data from 0 - 1B (unit short)",
"fields": {
@ -130,12 +130,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#10",
"UID": "graph_y_axis.json#10",
"kind": "panel",
"name": "Data from 0 - 1B (unit bytes)",
"fields": {
@ -148,12 +148,12 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
},
{
"uid": "graph_y_axis.json#8",
"UID": "graph_y_axis.json#8",
"kind": "panel",
"name": "Data from 12000 - 30000 (unit ms)",
"fields": {
@ -166,7 +166,7 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}
@ -178,7 +178,7 @@
{
"family": "plugin",
"type": "panel",
"ID": "graph"
"identifier": "graph"
}
]
}

View File

@ -1,11 +1,11 @@
{
"name": "pppp",
"fields": {
"schemaVersion": 38
"schemaVersion": "38"
},
"nested": [
{
"uid": "with-library-panels#1",
"UID": "with-library-panels#1",
"kind": "panel",
"name": "green pie",
"fields": {
@ -17,7 +17,7 @@
},
{
"family": "librarypanel",
"ID": "a7975b7a-fb53-4ab7-951d-15810953b54f"
"identifier": "a7975b7a-fb53-4ab7-951d-15810953b54f"
},
{
"family": "plugin",
@ -26,7 +26,7 @@
]
},
{
"uid": "with-library-panels#2",
"UID": "with-library-panels#2",
"kind": "panel",
"name": "green pie",
"fields": {
@ -38,7 +38,7 @@
},
{
"family": "librarypanel",
"ID": "e1d5f519-dabd-47c6-9ad7-83d181ce1cee"
"identifier": "e1d5f519-dabd-47c6-9ad7-83d181ce1cee"
},
{
"family": "plugin",
@ -53,11 +53,11 @@
},
{
"family": "librarypanel",
"ID": "a7975b7a-fb53-4ab7-951d-15810953b54f"
"identifier": "a7975b7a-fb53-4ab7-951d-15810953b54f"
},
{
"family": "librarypanel",
"ID": "e1d5f519-dabd-47c6-9ad7-83d181ce1cee"
"identifier": "e1d5f519-dabd-47c6-9ad7-83d181ce1cee"
},
{
"family": "plugin",

View File

@ -3,6 +3,7 @@ package dataframe
import (
"context"
"encoding/json"
"fmt"
"github.com/grafana/grafana-plugin-sdk-go/data"
@ -38,9 +39,9 @@ func GetEntitySummaryBuilder() entity.EntitySummaryBuilder {
Kind: entity.StandardKindDataFrame,
Name: df.Name,
UID: uid,
Fields: map[string]any{
"rows": rows,
"cols": len(df.Fields),
Fields: map[string]string{
"rows": fmt.Sprint(rows),
"cols": fmt.Sprint(len(df.Fields)),
},
}
if summary.Name == "" {

View File

@ -31,12 +31,12 @@ func TestDataFrameSummary(t *testing.T) {
// fmt.Printf(string(asjson))
require.NoError(t, err)
require.JSONEq(t, `{
"uid": "somthing",
"UID": "somthing",
"kind": "frame",
"name": "http_requests_total",
"fields": {
"cols": 4,
"rows": 3
"cols": "4",
"rows": "3"
}
}`, string(asjson))
}

View File

@ -28,10 +28,10 @@ func GetEntitySummaryBuilder(kind string) entity.EntitySummaryBuilder {
"tag1": "",
"tag2": "",
},
Fields: map[string]any{
Fields: map[string]string{
"field1": "a string",
"field2": 1.224,
"field4": true,
"field2": "1.224",
"field4": "true",
},
Error: nil, // ignore for now
Nested: nil, // ignore for now

View File

@ -42,7 +42,7 @@ func GetEntitySummaryBuilder() entity.EntitySummaryBuilder {
Kind: entity.StandardKindGeoJSON,
Name: store.GuessNameFromUID(uid),
UID: uid,
Fields: map[string]any{
Fields: map[string]string{
"type": ftype,
},
}
@ -50,7 +50,7 @@ func GetEntitySummaryBuilder() entity.EntitySummaryBuilder {
if ftype == "FeatureCollection" {
features, ok := geojson["features"].([]any)
if ok {
summary.Fields["count"] = len(features)
summary.Fields["count"] = fmt.Sprint(len(features))
}
}

View File

@ -24,12 +24,12 @@ func TestGeoJSONSummary(t *testing.T) {
//fmt.Printf(string(asjson))
require.NoError(t, err)
require.JSONEq(t, `{
"uid": "hello",
"UID": "hello",
"kind": "geojson",
"name": "hello",
"fields": {
"type": "FeatureCollection",
"count": 0
"count": "0"
}
}`, string(asjson))
@ -43,12 +43,12 @@ func TestGeoJSONSummary(t *testing.T) {
//fmt.Printf(string(asjson))
require.NoError(t, err)
require.JSONEq(t, `{
"uid": "gaz/airports.geojson",
"UID": "gaz/airports.geojson",
"kind": "geojson",
"name": "airports",
"fields": {
"type": "FeatureCollection",
"count": 888
"count": "888"
}
}`, string(asjson))
}

View File

@ -32,7 +32,7 @@ func TestDataFrameSummary(t *testing.T) {
require.NoError(t, err)
require.JSONEq(t, `{
"name": "item",
"uid": "path/to/item",
"UID": "path/to/item",
"kind": "jsonobj"
}`, string(asjson))
}

View File

@ -3,6 +3,7 @@ package png
import (
"bytes"
"context"
"fmt"
"image/png"
"github.com/grafana/grafana/pkg/services/store"
@ -33,9 +34,9 @@ func GetEntitySummaryBuilder() entity.EntitySummaryBuilder {
Kind: entity.StandardKindSVG,
Name: store.GuessNameFromUID(uid),
UID: uid,
Fields: map[string]any{
"width": int64(size.X),
"height": int64(size.Y),
Fields: map[string]string{
"width": fmt.Sprint(size.X),
"height": fmt.Sprint(size.Y),
},
}
return summary, body, nil

View File

@ -22,12 +22,12 @@ func TestPNGSummary(t *testing.T) {
//fmt.Printf(string(asjson))
require.NoError(t, err)
require.JSONEq(t, `{
"uid": "hello.png",
"UID": "hello.png",
"kind": "svg",
"name": "hello",
"fields": {
"height": 60,
"width": 75
"height": "60",
"width": "75"
}
}`, string(asjson))
}

View File

@ -46,10 +46,10 @@ func GetEntitySummaryBuilder() entity.EntitySummaryBuilder {
Name: obj.Name,
Description: obj.Description,
UID: uid,
Fields: map[string]interface{}{
Fields: map[string]string{
"deleteKey": obj.DeleteKey,
"externalURL": obj.ExternalURL,
"expires": obj.Expires,
"expires": fmt.Sprint(obj.Expires),
},
References: []*entity.EntityExternalReference{
{Family: entity.StandardKindDashboard, Identifier: obj.DashboardUID},