diff --git a/pkg/services/store/entity/entity.pb.go b/pkg/services/store/entity/entity.pb.go index 1201b7f71fc..1012b87a262 100644 --- a/pkg/services/store/entity/entity.pb.go +++ b/pkg/services/store/entity/entity.pb.go @@ -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, }, diff --git a/pkg/services/store/entity/entity.proto b/pkg/services/store/entity/entity.proto index 52682a88806..8c9e1d20e01 100644 --- a/pkg/services/store/entity/entity.proto +++ b/pkg/services/store/entity/entity.proto @@ -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 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 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 diff --git a/pkg/services/store/entity/entity_grpc.pb.go b/pkg/services/store/entity/entity_grpc.pb.go index b7647be1c4b..50c30030a26 100644 --- a/pkg/services/store/entity/entity_grpc.pb.go +++ b/pkg/services/store/entity/entity_grpc.pb.go @@ -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 diff --git a/pkg/services/store/entity/models.go b/pkg/services/store/entity/models.go index 1e8786d39b5..25524afc3ac 100644 --- a/pkg/services/store/entity/models.go +++ b/pkg/services/store/entity/models.go @@ -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) diff --git a/pkg/services/store/kind/dashboard/summary.go b/pkg/services/store/kind/dashboard/summary.go index 6e7da053503..7b845b5faa6 100644 --- a/pkg/services/store/kind/dashboard/summary.go +++ b/pkg/services/store/kind/dashboard/summary.go @@ -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" { diff --git a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-gradient-area-fills.json b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-gradient-area-fills.json index 9eb1a26b1a5..3a448b1251d 100644 --- a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-gradient-area-fills.json +++ b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-gradient-area-fills.json @@ -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" } ] } \ No newline at end of file diff --git a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-shared-tooltips.json b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-shared-tooltips.json index 9406933bac2..2acdb5dfbb5 100644 --- a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-shared-tooltips.json +++ b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-shared-tooltips.json @@ -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" } ] } \ No newline at end of file diff --git a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-time-regions.json b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-time-regions.json index d91dfe46b88..40e15af1cf1 100644 --- a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-time-regions.json +++ b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph-time-regions.json @@ -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" } ] } \ No newline at end of file diff --git a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_tests.json b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_tests.json index 61630217a55..44cece55fe9 100644 --- a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_tests.json +++ b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_tests.json @@ -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" } ] } \ No newline at end of file diff --git a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_y_axis.json b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_y_axis.json index 8ee9d100953..223bc667a46 100644 --- a/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_y_axis.json +++ b/pkg/services/store/kind/dashboard/testdata/gdev-walk-graph_y_axis.json @@ -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" } ] } \ No newline at end of file diff --git a/pkg/services/store/kind/dashboard/testdata/with-library-panels-info.json b/pkg/services/store/kind/dashboard/testdata/with-library-panels-info.json index 6e32e91d39c..e360bc820e0 100644 --- a/pkg/services/store/kind/dashboard/testdata/with-library-panels-info.json +++ b/pkg/services/store/kind/dashboard/testdata/with-library-panels-info.json @@ -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", diff --git a/pkg/services/store/kind/dataframe/summary.go b/pkg/services/store/kind/dataframe/summary.go index 71334361f06..e4e055c67e7 100644 --- a/pkg/services/store/kind/dataframe/summary.go +++ b/pkg/services/store/kind/dataframe/summary.go @@ -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 == "" { diff --git a/pkg/services/store/kind/dataframe/summary_test.go b/pkg/services/store/kind/dataframe/summary_test.go index 9efe2c94c96..5fa2b51054a 100644 --- a/pkg/services/store/kind/dataframe/summary_test.go +++ b/pkg/services/store/kind/dataframe/summary_test.go @@ -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)) } diff --git a/pkg/services/store/kind/dummy/summary.go b/pkg/services/store/kind/dummy/summary.go index acc36713ab3..16846eeaadd 100644 --- a/pkg/services/store/kind/dummy/summary.go +++ b/pkg/services/store/kind/dummy/summary.go @@ -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 diff --git a/pkg/services/store/kind/geojson/summary.go b/pkg/services/store/kind/geojson/summary.go index dc253ffaf30..4adb5f8cca7 100644 --- a/pkg/services/store/kind/geojson/summary.go +++ b/pkg/services/store/kind/geojson/summary.go @@ -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)) } } diff --git a/pkg/services/store/kind/geojson/summary_test.go b/pkg/services/store/kind/geojson/summary_test.go index b3dc846b67b..57bf3eaa3d9 100644 --- a/pkg/services/store/kind/geojson/summary_test.go +++ b/pkg/services/store/kind/geojson/summary_test.go @@ -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)) } diff --git a/pkg/services/store/kind/jsonobj/summary_test.go b/pkg/services/store/kind/jsonobj/summary_test.go index 9866352b6fe..661d8079d7f 100644 --- a/pkg/services/store/kind/jsonobj/summary_test.go +++ b/pkg/services/store/kind/jsonobj/summary_test.go @@ -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)) } diff --git a/pkg/services/store/kind/png/summary.go b/pkg/services/store/kind/png/summary.go index 57a615ab152..4f5d09c09f6 100644 --- a/pkg/services/store/kind/png/summary.go +++ b/pkg/services/store/kind/png/summary.go @@ -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 diff --git a/pkg/services/store/kind/png/summary_test.go b/pkg/services/store/kind/png/summary_test.go index 00bf4627136..301c1126ef8 100644 --- a/pkg/services/store/kind/png/summary_test.go +++ b/pkg/services/store/kind/png/summary_test.go @@ -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)) } diff --git a/pkg/services/store/kind/snapshot/summary.go b/pkg/services/store/kind/snapshot/summary.go index d19ed188a16..8cde29d3268 100644 --- a/pkg/services/store/kind/snapshot/summary.go +++ b/pkg/services/store/kind/snapshot/summary.go @@ -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},