pb/api/v1/data.pb.go (3,015 lines of code) (raw):
/*
Copyright The TestGrid Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v3.21.1
// source: data.proto
package v1
import (
context "context"
config "github.com/GoogleCloudPlatform/testgrid/pb/config"
state "github.com/GoogleCloudPlatform/testgrid/pb/state"
summary "github.com/GoogleCloudPlatform/testgrid/pb/summary"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type ListDashboardsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
}
func (x *ListDashboardsRequest) Reset() {
*x = ListDashboardsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardsRequest) ProtoMessage() {}
func (x *ListDashboardsRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[0]
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 ListDashboardsRequest.ProtoReflect.Descriptor instead.
func (*ListDashboardsRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{0}
}
func (x *ListDashboardsRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
type ListDashboardsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Dashboards []*DashboardResource `protobuf:"bytes,1,rep,name=dashboards,proto3" json:"dashboards,omitempty"`
}
func (x *ListDashboardsResponse) Reset() {
*x = ListDashboardsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardsResponse) ProtoMessage() {}
func (x *ListDashboardsResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[1]
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 ListDashboardsResponse.ProtoReflect.Descriptor instead.
func (*ListDashboardsResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{1}
}
func (x *ListDashboardsResponse) GetDashboards() []*DashboardResource {
if x != nil {
return x.Dashboards
}
return nil
}
type ListDashboardGroupsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
}
func (x *ListDashboardGroupsRequest) Reset() {
*x = ListDashboardGroupsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardGroupsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardGroupsRequest) ProtoMessage() {}
func (x *ListDashboardGroupsRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[2]
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 ListDashboardGroupsRequest.ProtoReflect.Descriptor instead.
func (*ListDashboardGroupsRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{2}
}
func (x *ListDashboardGroupsRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
type ListDashboardGroupsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
DashboardGroups []*Resource `protobuf:"bytes,1,rep,name=dashboard_groups,json=dashboardGroups,proto3" json:"dashboard_groups,omitempty"`
}
func (x *ListDashboardGroupsResponse) Reset() {
*x = ListDashboardGroupsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardGroupsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardGroupsResponse) ProtoMessage() {}
func (x *ListDashboardGroupsResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[3]
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 ListDashboardGroupsResponse.ProtoReflect.Descriptor instead.
func (*ListDashboardGroupsResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{3}
}
func (x *ListDashboardGroupsResponse) GetDashboardGroups() []*Resource {
if x != nil {
return x.DashboardGroups
}
return nil
}
type ListDashboardTabsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
}
func (x *ListDashboardTabsRequest) Reset() {
*x = ListDashboardTabsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardTabsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardTabsRequest) ProtoMessage() {}
func (x *ListDashboardTabsRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[4]
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 ListDashboardTabsRequest.ProtoReflect.Descriptor instead.
func (*ListDashboardTabsRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{4}
}
func (x *ListDashboardTabsRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *ListDashboardTabsRequest) GetDashboard() string {
if x != nil {
return x.Dashboard
}
return ""
}
type ListDashboardTabsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
DashboardTabs []*Resource `protobuf:"bytes,1,rep,name=dashboard_tabs,json=dashboardTabs,proto3" json:"dashboard_tabs,omitempty"`
}
func (x *ListDashboardTabsResponse) Reset() {
*x = ListDashboardTabsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardTabsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardTabsResponse) ProtoMessage() {}
func (x *ListDashboardTabsResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[5]
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 ListDashboardTabsResponse.ProtoReflect.Descriptor instead.
func (*ListDashboardTabsResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{5}
}
func (x *ListDashboardTabsResponse) GetDashboardTabs() []*Resource {
if x != nil {
return x.DashboardTabs
}
return nil
}
type GetDashboardRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
}
func (x *GetDashboardRequest) Reset() {
*x = GetDashboardRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDashboardRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDashboardRequest) ProtoMessage() {}
func (x *GetDashboardRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[6]
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 GetDashboardRequest.ProtoReflect.Descriptor instead.
func (*GetDashboardRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{6}
}
func (x *GetDashboardRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *GetDashboardRequest) GetDashboard() string {
if x != nil {
return x.Dashboard
}
return ""
}
type GetDashboardResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A list of notifications attached to this dashboard.
// This is displayed on any dashboard tab in this dashboard.
Notifications []*config.Notification `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"`
// Control which tab is displayed when first opening a dashboard.
// Defaults to Summary
DefaultTab string `protobuf:"bytes,2,opt,name=default_tab,json=defaultTab,proto3" json:"default_tab,omitempty"`
// Controls whether to suppress highlighting of failing tabs.
SuppressFailingTabs bool `protobuf:"varint,3,opt,name=suppress_failing_tabs,json=suppressFailingTabs,proto3" json:"suppress_failing_tabs,omitempty"`
// Controls whether to apply special highlighting to result header columns for
// the current day.
HighlightToday bool `protobuf:"varint,4,opt,name=highlight_today,json=highlightToday,proto3" json:"highlight_today,omitempty"`
}
func (x *GetDashboardResponse) Reset() {
*x = GetDashboardResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDashboardResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDashboardResponse) ProtoMessage() {}
func (x *GetDashboardResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[7]
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 GetDashboardResponse.ProtoReflect.Descriptor instead.
func (*GetDashboardResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{7}
}
func (x *GetDashboardResponse) GetNotifications() []*config.Notification {
if x != nil {
return x.Notifications
}
return nil
}
func (x *GetDashboardResponse) GetDefaultTab() string {
if x != nil {
return x.DefaultTab
}
return ""
}
func (x *GetDashboardResponse) GetSuppressFailingTabs() bool {
if x != nil {
return x.SuppressFailingTabs
}
return false
}
func (x *GetDashboardResponse) GetHighlightToday() bool {
if x != nil {
return x.HighlightToday
}
return false
}
type GetDashboardGroupRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
DashboardGroup string `protobuf:"bytes,2,opt,name=dashboard_group,json=dashboardGroup,proto3" json:"dashboard_group,omitempty"`
}
func (x *GetDashboardGroupRequest) Reset() {
*x = GetDashboardGroupRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDashboardGroupRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDashboardGroupRequest) ProtoMessage() {}
func (x *GetDashboardGroupRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[8]
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 GetDashboardGroupRequest.ProtoReflect.Descriptor instead.
func (*GetDashboardGroupRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{8}
}
func (x *GetDashboardGroupRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *GetDashboardGroupRequest) GetDashboardGroup() string {
if x != nil {
return x.DashboardGroup
}
return ""
}
type GetDashboardGroupResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Dashboards []*Resource `protobuf:"bytes,1,rep,name=dashboards,proto3" json:"dashboards,omitempty"`
}
func (x *GetDashboardGroupResponse) Reset() {
*x = GetDashboardGroupResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDashboardGroupResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDashboardGroupResponse) ProtoMessage() {}
func (x *GetDashboardGroupResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[9]
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 GetDashboardGroupResponse.ProtoReflect.Descriptor instead.
func (*GetDashboardGroupResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{9}
}
func (x *GetDashboardGroupResponse) GetDashboards() []*Resource {
if x != nil {
return x.Dashboards
}
return nil
}
type ListHeadersRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
Tab string `protobuf:"bytes,3,opt,name=tab,proto3" json:"tab,omitempty"`
}
func (x *ListHeadersRequest) Reset() {
*x = ListHeadersRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListHeadersRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListHeadersRequest) ProtoMessage() {}
func (x *ListHeadersRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[10]
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 ListHeadersRequest.ProtoReflect.Descriptor instead.
func (*ListHeadersRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{10}
}
func (x *ListHeadersRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *ListHeadersRequest) GetDashboard() string {
if x != nil {
return x.Dashboard
}
return ""
}
func (x *ListHeadersRequest) GetTab() string {
if x != nil {
return x.Tab
}
return ""
}
type ListHeadersResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Headers []*ListHeadersResponse_Header `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"`
}
func (x *ListHeadersResponse) Reset() {
*x = ListHeadersResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListHeadersResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListHeadersResponse) ProtoMessage() {}
func (x *ListHeadersResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[11]
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 ListHeadersResponse.ProtoReflect.Descriptor instead.
func (*ListHeadersResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{11}
}
func (x *ListHeadersResponse) GetHeaders() []*ListHeadersResponse_Header {
if x != nil {
return x.Headers
}
return nil
}
type ListRowsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
Tab string `protobuf:"bytes,3,opt,name=tab,proto3" json:"tab,omitempty"`
}
func (x *ListRowsRequest) Reset() {
*x = ListRowsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRowsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRowsRequest) ProtoMessage() {}
func (x *ListRowsRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[12]
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 ListRowsRequest.ProtoReflect.Descriptor instead.
func (*ListRowsRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{12}
}
func (x *ListRowsRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *ListRowsRequest) GetDashboard() string {
if x != nil {
return x.Dashboard
}
return ""
}
func (x *ListRowsRequest) GetTab() string {
if x != nil {
return x.Tab
}
return ""
}
type ListRowsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Rows []*ListRowsResponse_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
}
func (x *ListRowsResponse) Reset() {
*x = ListRowsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRowsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRowsResponse) ProtoMessage() {}
func (x *ListRowsResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[13]
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 ListRowsResponse.ProtoReflect.Descriptor instead.
func (*ListRowsResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{13}
}
func (x *ListRowsResponse) GetRows() []*ListRowsResponse_Row {
if x != nil {
return x.Rows
}
return nil
}
// A Resource is a REST resource, often returned by a LIST command
// It includes the name of the resource and a link to the resource
type Resource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"`
}
func (x *Resource) Reset() {
*x = Resource{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Resource) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Resource) ProtoMessage() {}
func (x *Resource) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[14]
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 Resource.ProtoReflect.Descriptor instead.
func (*Resource) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{14}
}
func (x *Resource) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Resource) GetLink() string {
if x != nil {
return x.Link
}
return ""
}
// A DashboardResource is a REST resource for a dashboard
// It includes the name of the resource, a link, and a dashboard group to which it belongs
type DashboardResource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"`
// Dashboard group to which the dashboard belongs to.
// Empty if dashboard doesn't belong to any group.
DashboardGroupName string `protobuf:"bytes,3,opt,name=dashboard_group_name,json=dashboardGroupName,proto3" json:"dashboard_group_name,omitempty"`
}
func (x *DashboardResource) Reset() {
*x = DashboardResource{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DashboardResource) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DashboardResource) ProtoMessage() {}
func (x *DashboardResource) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[15]
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 DashboardResource.ProtoReflect.Descriptor instead.
func (*DashboardResource) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{15}
}
func (x *DashboardResource) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DashboardResource) GetLink() string {
if x != nil {
return x.Link
}
return ""
}
func (x *DashboardResource) GetDashboardGroupName() string {
if x != nil {
return x.DashboardGroupName
}
return ""
}
type ListTabSummariesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Scope defines the GCS bucket to read the results from.
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
// Name of the dashboard to fetch tab summaries for.
Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
}
func (x *ListTabSummariesRequest) Reset() {
*x = ListTabSummariesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListTabSummariesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListTabSummariesRequest) ProtoMessage() {}
func (x *ListTabSummariesRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[16]
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 ListTabSummariesRequest.ProtoReflect.Descriptor instead.
func (*ListTabSummariesRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{16}
}
func (x *ListTabSummariesRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *ListTabSummariesRequest) GetDashboard() string {
if x != nil {
return x.Dashboard
}
return ""
}
type ListTabSummariesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// List of tab summaries.
TabSummaries []*TabSummary `protobuf:"bytes,1,rep,name=tab_summaries,json=tabSummaries,proto3" json:"tab_summaries,omitempty"`
}
func (x *ListTabSummariesResponse) Reset() {
*x = ListTabSummariesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListTabSummariesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListTabSummariesResponse) ProtoMessage() {}
func (x *ListTabSummariesResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[17]
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 ListTabSummariesResponse.ProtoReflect.Descriptor instead.
func (*ListTabSummariesResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{17}
}
func (x *ListTabSummariesResponse) GetTabSummaries() []*TabSummary {
if x != nil {
return x.TabSummaries
}
return nil
}
type GetTabSummaryRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Scope defines the GCS bucket to read the results from.
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
// Name of the dashboard to fetch tab summaries for.
Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
// Name of the particular tab to fetch the summary for.
Tab string `protobuf:"bytes,3,opt,name=tab,proto3" json:"tab,omitempty"`
}
func (x *GetTabSummaryRequest) Reset() {
*x = GetTabSummaryRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetTabSummaryRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetTabSummaryRequest) ProtoMessage() {}
func (x *GetTabSummaryRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[18]
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 GetTabSummaryRequest.ProtoReflect.Descriptor instead.
func (*GetTabSummaryRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{18}
}
func (x *GetTabSummaryRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *GetTabSummaryRequest) GetDashboard() string {
if x != nil {
return x.Dashboard
}
return ""
}
func (x *GetTabSummaryRequest) GetTab() string {
if x != nil {
return x.Tab
}
return ""
}
type GetTabSummaryResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Summary for the tab
TabSummary *TabSummary `protobuf:"bytes,1,opt,name=tab_summary,json=tabSummary,proto3" json:"tab_summary,omitempty"`
}
func (x *GetTabSummaryResponse) Reset() {
*x = GetTabSummaryResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetTabSummaryResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetTabSummaryResponse) ProtoMessage() {}
func (x *GetTabSummaryResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_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 GetTabSummaryResponse.ProtoReflect.Descriptor instead.
func (*GetTabSummaryResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{19}
}
func (x *GetTabSummaryResponse) GetTabSummary() *TabSummary {
if x != nil {
return x.TabSummary
}
return nil
}
type ListDashboardSummariesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Scope defines the GCS bucket to read the results from.
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
// Name of the dashboard group to fetch dashboard summaries for.
DashboardGroup string `protobuf:"bytes,2,opt,name=dashboard_group,json=dashboardGroup,proto3" json:"dashboard_group,omitempty"`
}
func (x *ListDashboardSummariesRequest) Reset() {
*x = ListDashboardSummariesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardSummariesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardSummariesRequest) ProtoMessage() {}
func (x *ListDashboardSummariesRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_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 ListDashboardSummariesRequest.ProtoReflect.Descriptor instead.
func (*ListDashboardSummariesRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{20}
}
func (x *ListDashboardSummariesRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *ListDashboardSummariesRequest) GetDashboardGroup() string {
if x != nil {
return x.DashboardGroup
}
return ""
}
type ListDashboardSummariesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// List of dashboard summaries.
DashboardSummaries []*DashboardSummary `protobuf:"bytes,1,rep,name=dashboard_summaries,json=dashboardSummaries,proto3" json:"dashboard_summaries,omitempty"`
}
func (x *ListDashboardSummariesResponse) Reset() {
*x = ListDashboardSummariesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDashboardSummariesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDashboardSummariesResponse) ProtoMessage() {}
func (x *ListDashboardSummariesResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[21]
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 ListDashboardSummariesResponse.ProtoReflect.Descriptor instead.
func (*ListDashboardSummariesResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{21}
}
func (x *ListDashboardSummariesResponse) GetDashboardSummaries() []*DashboardSummary {
if x != nil {
return x.DashboardSummaries
}
return nil
}
type GetDashboardSummaryRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Scope defines the GCS bucket to read the results from.
Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
// Name of the dashboard to fetch the summary for.
Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
}
func (x *GetDashboardSummaryRequest) Reset() {
*x = GetDashboardSummaryRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDashboardSummaryRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDashboardSummaryRequest) ProtoMessage() {}
func (x *GetDashboardSummaryRequest) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[22]
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 GetDashboardSummaryRequest.ProtoReflect.Descriptor instead.
func (*GetDashboardSummaryRequest) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{22}
}
func (x *GetDashboardSummaryRequest) GetScope() string {
if x != nil {
return x.Scope
}
return ""
}
func (x *GetDashboardSummaryRequest) GetDashboard() string {
if x != nil {
return x.Dashboard
}
return ""
}
type GetDashboardSummaryResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Summary for the dashboard.
DashboardSummary *DashboardSummary `protobuf:"bytes,1,opt,name=dashboard_summary,json=dashboardSummary,proto3" json:"dashboard_summary,omitempty"`
}
func (x *GetDashboardSummaryResponse) Reset() {
*x = GetDashboardSummaryResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDashboardSummaryResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDashboardSummaryResponse) ProtoMessage() {}
func (x *GetDashboardSummaryResponse) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[23]
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 GetDashboardSummaryResponse.ProtoReflect.Descriptor instead.
func (*GetDashboardSummaryResponse) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{23}
}
func (x *GetDashboardSummaryResponse) GetDashboardSummary() *DashboardSummary {
if x != nil {
return x.DashboardSummary
}
return nil
}
// Summary for a particular tab.
// Contains the info required to render tab summary in UI.
type TabSummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the dashboard this tab belongs to.
DashboardName string `protobuf:"bytes,1,opt,name=dashboard_name,json=dashboardName,proto3" json:"dashboard_name,omitempty"`
// The name of the tab.
TabName string `protobuf:"bytes,2,opt,name=tab_name,json=tabName,proto3" json:"tab_name,omitempty"`
// Overall status for the dashboard tab (e.g. PASSING, FAILING, etc.)
OverallStatus string `protobuf:"bytes,3,opt,name=overall_status,json=overallStatus,proto3" json:"overall_status,omitempty"`
// Summary of the status for this dashboard tab.
DetailedStatusMessage string `protobuf:"bytes,4,opt,name=detailed_status_message,json=detailedStatusMessage,proto3" json:"detailed_status_message,omitempty"`
// Timestamp at which tests last ran.
LastRunTimestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_run_timestamp,json=lastRunTimestamp,proto3" json:"last_run_timestamp,omitempty"`
// Timestamp at which the test group was last updated.
LastUpdateTimestamp *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_update_timestamp,json=lastUpdateTimestamp,proto3" json:"last_update_timestamp,omitempty"`
// The ID for the latest passing build.
LatestPassingBuild string `protobuf:"bytes,7,opt,name=latest_passing_build,json=latestPassingBuild,proto3" json:"latest_passing_build,omitempty"`
// Summarized info on the failing tests.
// In this case, any test which raised an alert and did not suppress it is considered failing.
FailuresSummary *FailuresSummary `protobuf:"bytes,8,opt,name=failures_summary,json=failuresSummary,proto3" json:"failures_summary,omitempty"`
//Summarized info on the tab's healthiness.
HealthinessSummary *HealthinessSummary `protobuf:"bytes,9,opt,name=healthiness_summary,json=healthinessSummary,proto3" json:"healthiness_summary,omitempty"`
}
func (x *TabSummary) Reset() {
*x = TabSummary{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TabSummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TabSummary) ProtoMessage() {}
func (x *TabSummary) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[24]
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 TabSummary.ProtoReflect.Descriptor instead.
func (*TabSummary) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{24}
}
func (x *TabSummary) GetDashboardName() string {
if x != nil {
return x.DashboardName
}
return ""
}
func (x *TabSummary) GetTabName() string {
if x != nil {
return x.TabName
}
return ""
}
func (x *TabSummary) GetOverallStatus() string {
if x != nil {
return x.OverallStatus
}
return ""
}
func (x *TabSummary) GetDetailedStatusMessage() string {
if x != nil {
return x.DetailedStatusMessage
}
return ""
}
func (x *TabSummary) GetLastRunTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.LastRunTimestamp
}
return nil
}
func (x *TabSummary) GetLastUpdateTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.LastUpdateTimestamp
}
return nil
}
func (x *TabSummary) GetLatestPassingBuild() string {
if x != nil {
return x.LatestPassingBuild
}
return ""
}
func (x *TabSummary) GetFailuresSummary() *FailuresSummary {
if x != nil {
return x.FailuresSummary
}
return nil
}
func (x *TabSummary) GetHealthinessSummary() *HealthinessSummary {
if x != nil {
return x.HealthinessSummary
}
return nil
}
// Summarized representation of data from failing test summaries.
// Will be rendered in failures summary component within tab summary.
type FailuresSummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Top failing tests by fail count.
TopFailingTests []*FailingTestInfo `protobuf:"bytes,1,rep,name=top_failing_tests,json=topFailingTests,proto3" json:"top_failing_tests,omitempty"`
// Aggregated stats across all failing tests.
FailureStats *FailureStats `protobuf:"bytes,2,opt,name=failure_stats,json=failureStats,proto3" json:"failure_stats,omitempty"`
}
func (x *FailuresSummary) Reset() {
*x = FailuresSummary{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FailuresSummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FailuresSummary) ProtoMessage() {}
func (x *FailuresSummary) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[25]
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 FailuresSummary.ProtoReflect.Descriptor instead.
func (*FailuresSummary) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{25}
}
func (x *FailuresSummary) GetTopFailingTests() []*FailingTestInfo {
if x != nil {
return x.TopFailingTests
}
return nil
}
func (x *FailuresSummary) GetFailureStats() *FailureStats {
if x != nil {
return x.FailureStats
}
return nil
}
// Subset of data from FailingTestSummary defined in summary.proto.
type FailingTestInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the failing test.
DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// number of times the test has failed.
FailCount int32 `protobuf:"varint,2,opt,name=fail_count,json=failCount,proto3" json:"fail_count,omitempty"`
// Timestamp for the last cycle in which the test passed.
PassTimestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=pass_timestamp,json=passTimestamp,proto3" json:"pass_timestamp,omitempty"`
// Timestamp for the first cycle in which the test failed.
FailTimestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=fail_timestamp,json=failTimestamp,proto3" json:"fail_timestamp,omitempty"`
}
func (x *FailingTestInfo) Reset() {
*x = FailingTestInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FailingTestInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FailingTestInfo) ProtoMessage() {}
func (x *FailingTestInfo) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[26]
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 FailingTestInfo.ProtoReflect.Descriptor instead.
func (*FailingTestInfo) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{26}
}
func (x *FailingTestInfo) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *FailingTestInfo) GetFailCount() int32 {
if x != nil {
return x.FailCount
}
return 0
}
func (x *FailingTestInfo) GetPassTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.PassTimestamp
}
return nil
}
func (x *FailingTestInfo) GetFailTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.FailTimestamp
}
return nil
}
// Aggregate stats across all failing tests.
type FailureStats struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Number of failing tests for the tab.
NumFailingTests int32 `protobuf:"varint,1,opt,name=num_failing_tests,json=numFailingTests,proto3" json:"num_failing_tests,omitempty"`
}
func (x *FailureStats) Reset() {
*x = FailureStats{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FailureStats) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FailureStats) ProtoMessage() {}
func (x *FailureStats) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[27]
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 FailureStats.ProtoReflect.Descriptor instead.
func (*FailureStats) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{27}
}
func (x *FailureStats) GetNumFailingTests() int32 {
if x != nil {
return x.NumFailingTests
}
return 0
}
// Summarized representation of data from tab's HealthinessInfo.
// Will be rendered in healthiness summary component within tab summary.
type HealthinessSummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Top flaky tests (with flakiness > 0) by the current flakiness %.
TopFlakyTests []*FlakyTestInfo `protobuf:"bytes,1,rep,name=top_flaky_tests,json=topFlakyTests,proto3" json:"top_flaky_tests,omitempty"`
// Aggregated healthiness stats for the tab.
HealthinessStats *HealthinessStats `protobuf:"bytes,2,opt,name=healthiness_stats,json=healthinessStats,proto3" json:"healthiness_stats,omitempty"`
}
func (x *HealthinessSummary) Reset() {
*x = HealthinessSummary{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HealthinessSummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HealthinessSummary) ProtoMessage() {}
func (x *HealthinessSummary) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[28]
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 HealthinessSummary.ProtoReflect.Descriptor instead.
func (*HealthinessSummary) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{28}
}
func (x *HealthinessSummary) GetTopFlakyTests() []*FlakyTestInfo {
if x != nil {
return x.TopFlakyTests
}
return nil
}
func (x *HealthinessSummary) GetHealthinessStats() *HealthinessStats {
if x != nil {
return x.HealthinessStats
}
return nil
}
// Subset of data from HealthinessInfo.TestInfo defined in summary.proto.
type FlakyTestInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the flaky test.
DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// The flakiness of the test, in % measured out of 100
Flakiness float32 `protobuf:"fixed32,2,opt,name=flakiness,proto3" json:"flakiness,omitempty"`
// The change of flakiness based on the last interval's flakiness
// The interval is set by each tab's config, with a default of 7 days.
Change summary.TestInfo_Trend `protobuf:"varint,3,opt,name=change,proto3,enum=testgrid.summary.TestInfo_Trend" json:"change,omitempty"`
}
func (x *FlakyTestInfo) Reset() {
*x = FlakyTestInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FlakyTestInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FlakyTestInfo) ProtoMessage() {}
func (x *FlakyTestInfo) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[29]
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 FlakyTestInfo.ProtoReflect.Descriptor instead.
func (*FlakyTestInfo) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{29}
}
func (x *FlakyTestInfo) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *FlakyTestInfo) GetFlakiness() float32 {
if x != nil {
return x.Flakiness
}
return 0
}
func (x *FlakyTestInfo) GetChange() summary.TestInfo_Trend {
if x != nil {
return x.Change
}
return summary.TestInfo_Trend(0)
}
// Aggregated healthiness stats across the tab.
type HealthinessStats struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The start of the time frame that the analysis was run for.
Start *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"`
// The end of the time frame that the analysis was run for.
End *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"`
// Number of flaky tests in the tab.
NumFlakyTests int32 `protobuf:"varint,3,opt,name=num_flaky_tests,json=numFlakyTests,proto3" json:"num_flaky_tests,omitempty"`
// Average flakiness for the current analysis interval.
AverageFlakiness float32 `protobuf:"fixed32,4,opt,name=average_flakiness,json=averageFlakiness,proto3" json:"average_flakiness,omitempty"`
// Average flakiness for the previous analysis interval.
PreviousFlakiness float32 `protobuf:"fixed32,5,opt,name=previous_flakiness,json=previousFlakiness,proto3" json:"previous_flakiness,omitempty"`
}
func (x *HealthinessStats) Reset() {
*x = HealthinessStats{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HealthinessStats) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HealthinessStats) ProtoMessage() {}
func (x *HealthinessStats) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[30]
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 HealthinessStats.ProtoReflect.Descriptor instead.
func (*HealthinessStats) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{30}
}
func (x *HealthinessStats) GetStart() *timestamppb.Timestamp {
if x != nil {
return x.Start
}
return nil
}
func (x *HealthinessStats) GetEnd() *timestamppb.Timestamp {
if x != nil {
return x.End
}
return nil
}
func (x *HealthinessStats) GetNumFlakyTests() int32 {
if x != nil {
return x.NumFlakyTests
}
return 0
}
func (x *HealthinessStats) GetAverageFlakiness() float32 {
if x != nil {
return x.AverageFlakiness
}
return 0
}
func (x *HealthinessStats) GetPreviousFlakiness() float32 {
if x != nil {
return x.PreviousFlakiness
}
return 0
}
// Summary for a particular dashboard.
// Contains the info required to render dashboard summary in UI (done in the dashboard group view).
type DashboardSummary struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the dashboard.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Overall status of the dashboard.
// Will be calculated based on the presence and importance of underlying tabs.
OverallStatus string `protobuf:"bytes,2,opt,name=overall_status,json=overallStatus,proto3" json:"overall_status,omitempty"`
// Count of the tabs by status.
TabStatusCount map[string]int32 `protobuf:"bytes,3,rep,name=tab_status_count,json=tabStatusCount,proto3" json:"tab_status_count,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}
func (x *DashboardSummary) Reset() {
*x = DashboardSummary{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DashboardSummary) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DashboardSummary) ProtoMessage() {}
func (x *DashboardSummary) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[31]
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 DashboardSummary.ProtoReflect.Descriptor instead.
func (*DashboardSummary) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{31}
}
func (x *DashboardSummary) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DashboardSummary) GetOverallStatus() string {
if x != nil {
return x.OverallStatus
}
return ""
}
func (x *DashboardSummary) GetTabStatusCount() map[string]int32 {
if x != nil {
return x.TabStatusCount
}
return nil
}
type ListHeadersResponse_Header struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Unique instance of the job, typically BUILD_NUMBER from prow or a guid
Build string `protobuf:"bytes,1,opt,name=build,proto3" json:"build,omitempty"`
// Name associated with the column (such as the run/invocation ID). No two
// columns should have the same build_id and name. The name field allows the
// display of multiple columns with the same build_id.
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
// When the build started running
Started *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=started,proto3" json:"started,omitempty"`
// Additional custom headers like commit, image used, etc.
Extra []string `protobuf:"bytes,4,rep,name=extra,proto3" json:"extra,omitempty"`
// Custom hotlist ids.
HotlistIds string `protobuf:"bytes,5,opt,name=hotlist_ids,json=hotlistIds,proto3" json:"hotlist_ids,omitempty"`
}
func (x *ListHeadersResponse_Header) Reset() {
*x = ListHeadersResponse_Header{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListHeadersResponse_Header) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListHeadersResponse_Header) ProtoMessage() {}
func (x *ListHeadersResponse_Header) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[32]
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 ListHeadersResponse_Header.ProtoReflect.Descriptor instead.
func (*ListHeadersResponse_Header) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{11, 0}
}
func (x *ListHeadersResponse_Header) GetBuild() string {
if x != nil {
return x.Build
}
return ""
}
func (x *ListHeadersResponse_Header) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *ListHeadersResponse_Header) GetStarted() *timestamppb.Timestamp {
if x != nil {
return x.Started
}
return nil
}
func (x *ListHeadersResponse_Header) GetExtra() []string {
if x != nil {
return x.Extra
}
return nil
}
func (x *ListHeadersResponse_Header) GetHotlistIds() string {
if x != nil {
return x.HotlistIds
}
return ""
}
type ListRowsResponse_Row struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Display name of the test case
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Historical results of the test case. Unencoded.
Cells []*ListRowsResponse_Cell `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"`
// Issue or Bug IDs associated with the test case
Issues []string `protobuf:"bytes,3,rep,name=issues,proto3" json:"issues,omitempty"`
// Alert associated with the test case
Alert *state.AlertInfo `protobuf:"bytes,4,opt,name=alert,proto3" json:"alert,omitempty"`
}
func (x *ListRowsResponse_Row) Reset() {
*x = ListRowsResponse_Row{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRowsResponse_Row) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRowsResponse_Row) ProtoMessage() {}
func (x *ListRowsResponse_Row) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[33]
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 ListRowsResponse_Row.ProtoReflect.Descriptor instead.
func (*ListRowsResponse_Row) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{13, 0}
}
func (x *ListRowsResponse_Row) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *ListRowsResponse_Row) GetCells() []*ListRowsResponse_Cell {
if x != nil {
return x.Cells
}
return nil
}
func (x *ListRowsResponse_Row) GetIssues() []string {
if x != nil {
return x.Issues
}
return nil
}
func (x *ListRowsResponse_Row) GetAlert() *state.AlertInfo {
if x != nil {
return x.Alert
}
return nil
}
type ListRowsResponse_Cell struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Result int32 `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"`
CellId string `protobuf:"bytes,2,opt,name=cell_id,json=cellId,proto3" json:"cell_id,omitempty"`
Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
Icon string `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
}
func (x *ListRowsResponse_Cell) Reset() {
*x = ListRowsResponse_Cell{}
if protoimpl.UnsafeEnabled {
mi := &file_data_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRowsResponse_Cell) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRowsResponse_Cell) ProtoMessage() {}
func (x *ListRowsResponse_Cell) ProtoReflect() protoreflect.Message {
mi := &file_data_proto_msgTypes[34]
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 ListRowsResponse_Cell.ProtoReflect.Descriptor instead.
func (*ListRowsResponse_Cell) Descriptor() ([]byte, []int) {
return file_data_proto_rawDescGZIP(), []int{13, 1}
}
func (x *ListRowsResponse_Cell) GetResult() int32 {
if x != nil {
return x.Result
}
return 0
}
func (x *ListRowsResponse_Cell) GetCellId() string {
if x != nil {
return x.CellId
}
return ""
}
func (x *ListRowsResponse_Cell) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
func (x *ListRowsResponse_Cell) GetIcon() string {
if x != nil {
return x.Icon
}
return ""
}
var File_data_proto protoreflect.FileDescriptor
var file_data_proto_rawDesc = []byte{
0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x74, 0x65,
0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x70, 0x62, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x70, 0x62,
0x2f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2d, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61,
0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73,
0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x42, 0x0a, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52,
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62,
0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x63, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x44,
0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f,
0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0f, 0x64, 0x61, 0x73,
0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x4e, 0x0a, 0x18,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c,
0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x19,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x73,
0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0d, 0x64, 0x61,
0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x73, 0x22, 0x49, 0x0a, 0x13, 0x47,
0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68,
0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73,
0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x61,
0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x43, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
0x74, 0x61, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75,
0x6c, 0x74, 0x54, 0x61, 0x62, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73,
0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x73, 0x18, 0x03,
0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x46, 0x61,
0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x69, 0x67,
0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0e, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x64,
0x61, 0x79, 0x22, 0x59, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14,
0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73,
0x63, 0x6f, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64,
0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x56, 0x0a,
0x19, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x61,
0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x62,
0x6f, 0x61, 0x72, 0x64, 0x73, 0x22, 0x5a, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61,
0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73,
0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70,
0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x74, 0x61, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61,
0x62, 0x22, 0xfe, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x68, 0x65, 0x61,
0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73,
0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
0x1a, 0x9f, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65,
0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72,
0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x49,
0x64, 0x73, 0x22, 0x57, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64,
0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x62,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x62, 0x22, 0xd7, 0x02, 0x0a, 0x10,
0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x39, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x1a, 0xa0, 0x01, 0x0a, 0x03,
0x52, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x05,
0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18,
0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x0a,
0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74,
0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c,
0x65, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x1a, 0x65,
0x0a, 0x04, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17,
0x0a, 0x07, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x6d, 0x0a, 0x11, 0x44, 0x61, 0x73,
0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f,
0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47,
0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74,
0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73,
0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61,
0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54,
0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x74, 0x61, 0x62, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x65, 0x73,
0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62,
0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x53,
0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a,
0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63,
0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x74, 0x61, 0x62, 0x22, 0x55, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d,
0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b,
0x74, 0x61, 0x62, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0a,
0x74, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5e, 0x0a, 0x1d, 0x4c, 0x69,
0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73,
0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70,
0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x67,
0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x73, 0x68,
0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x74, 0x0a, 0x1e, 0x4c, 0x69,
0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x13,
0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74,
0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68,
0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x12, 0x64, 0x61,
0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73,
0x22, 0x50, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64,
0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14,
0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73,
0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x22, 0x6d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x4e, 0x0a, 0x11, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x73,
0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74,
0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52,
0x10, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x22, 0x9c, 0x04, 0x0a, 0x0a, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
0x12, 0x25, 0x0a, 0x0e, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f,
0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x5f, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x62, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72,
0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x74,
0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73,
0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x74, 0x61,
0x69, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
0x65, 0x12, 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x52,
0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4e, 0x0a, 0x15, 0x6c,
0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x30, 0x0a, 0x14, 0x6c,
0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x75,
0x69, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73,
0x74, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x4b, 0x0a,
0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75,
0x72, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x54, 0x0a, 0x13, 0x68, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x12, 0x68, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
0x22, 0xa3, 0x01, 0x0a, 0x0f, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x53, 0x75, 0x6d,
0x6d, 0x61, 0x72, 0x79, 0x12, 0x4c, 0x0a, 0x11, 0x74, 0x6f, 0x70, 0x5f, 0x66, 0x61, 0x69, 0x6c,
0x69, 0x6e, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x0f, 0x74, 0x6f, 0x70, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73,
0x74, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74,
0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c,
0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x0f, 0x46, 0x61, 0x69, 0x6c, 0x69,
0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69,
0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a,
0x0a, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0e,
0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x52, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
0x41, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x22, 0x3a, 0x0a, 0x0c, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61,
0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e,
0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e,
0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x73, 0x22, 0xac,
0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x75,
0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x6f, 0x70, 0x5f, 0x66, 0x6c, 0x61,
0x6b, 0x79, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d,
0x74, 0x6f, 0x70, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x73, 0x12, 0x4e, 0x0a,
0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67,
0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x10, 0x68, 0x65, 0x61,
0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x8a, 0x01,
0x0a, 0x0d, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18,
0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73,
0x12, 0x38, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d,
0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x72, 0x65,
0x6e, 0x64, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x10, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12,
0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x5f, 0x74, 0x65, 0x73,
0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x46, 0x6c, 0x61,
0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61,
0x67, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01,
0x28, 0x02, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x6b, 0x69,
0x6e, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02,
0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e,
0x65, 0x73, 0x73, 0x22, 0xf1, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e,
0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e,
0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
0x2e, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0x8f, 0x09, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74,
0x47, 0x72, 0x69, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x63, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x65, 0x73,
0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a,
0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x73, 0x12, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62,
0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x00, 0x12, 0x6c, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x54, 0x61, 0x62, 0x73, 0x12, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73,
0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x54, 0x61, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
0x5d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12,
0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62,
0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c,
0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x12, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0b,
0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x23, 0x2e, 0x74, 0x65,
0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x6f, 0x77, 0x73, 0x12, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x10, 0x4c,
0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12,
0x28, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69,
0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74,
0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62,
0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62,
0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26,
0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69,
0x65, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68,
0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2b, 0x2e, 0x74,
0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61,
0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74,
0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44,
0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c,
0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x73, 0x74,
0x67, 0x72, 0x69, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_data_proto_rawDescOnce sync.Once
file_data_proto_rawDescData = file_data_proto_rawDesc
)
func file_data_proto_rawDescGZIP() []byte {
file_data_proto_rawDescOnce.Do(func() {
file_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_data_proto_rawDescData)
})
return file_data_proto_rawDescData
}
var file_data_proto_msgTypes = make([]protoimpl.MessageInfo, 36)
var file_data_proto_goTypes = []interface{}{
(*ListDashboardsRequest)(nil), // 0: testgrid.api.v1.ListDashboardsRequest
(*ListDashboardsResponse)(nil), // 1: testgrid.api.v1.ListDashboardsResponse
(*ListDashboardGroupsRequest)(nil), // 2: testgrid.api.v1.ListDashboardGroupsRequest
(*ListDashboardGroupsResponse)(nil), // 3: testgrid.api.v1.ListDashboardGroupsResponse
(*ListDashboardTabsRequest)(nil), // 4: testgrid.api.v1.ListDashboardTabsRequest
(*ListDashboardTabsResponse)(nil), // 5: testgrid.api.v1.ListDashboardTabsResponse
(*GetDashboardRequest)(nil), // 6: testgrid.api.v1.GetDashboardRequest
(*GetDashboardResponse)(nil), // 7: testgrid.api.v1.GetDashboardResponse
(*GetDashboardGroupRequest)(nil), // 8: testgrid.api.v1.GetDashboardGroupRequest
(*GetDashboardGroupResponse)(nil), // 9: testgrid.api.v1.GetDashboardGroupResponse
(*ListHeadersRequest)(nil), // 10: testgrid.api.v1.ListHeadersRequest
(*ListHeadersResponse)(nil), // 11: testgrid.api.v1.ListHeadersResponse
(*ListRowsRequest)(nil), // 12: testgrid.api.v1.ListRowsRequest
(*ListRowsResponse)(nil), // 13: testgrid.api.v1.ListRowsResponse
(*Resource)(nil), // 14: testgrid.api.v1.Resource
(*DashboardResource)(nil), // 15: testgrid.api.v1.DashboardResource
(*ListTabSummariesRequest)(nil), // 16: testgrid.api.v1.ListTabSummariesRequest
(*ListTabSummariesResponse)(nil), // 17: testgrid.api.v1.ListTabSummariesResponse
(*GetTabSummaryRequest)(nil), // 18: testgrid.api.v1.GetTabSummaryRequest
(*GetTabSummaryResponse)(nil), // 19: testgrid.api.v1.GetTabSummaryResponse
(*ListDashboardSummariesRequest)(nil), // 20: testgrid.api.v1.ListDashboardSummariesRequest
(*ListDashboardSummariesResponse)(nil), // 21: testgrid.api.v1.ListDashboardSummariesResponse
(*GetDashboardSummaryRequest)(nil), // 22: testgrid.api.v1.GetDashboardSummaryRequest
(*GetDashboardSummaryResponse)(nil), // 23: testgrid.api.v1.GetDashboardSummaryResponse
(*TabSummary)(nil), // 24: testgrid.api.v1.TabSummary
(*FailuresSummary)(nil), // 25: testgrid.api.v1.FailuresSummary
(*FailingTestInfo)(nil), // 26: testgrid.api.v1.FailingTestInfo
(*FailureStats)(nil), // 27: testgrid.api.v1.FailureStats
(*HealthinessSummary)(nil), // 28: testgrid.api.v1.HealthinessSummary
(*FlakyTestInfo)(nil), // 29: testgrid.api.v1.FlakyTestInfo
(*HealthinessStats)(nil), // 30: testgrid.api.v1.HealthinessStats
(*DashboardSummary)(nil), // 31: testgrid.api.v1.DashboardSummary
(*ListHeadersResponse_Header)(nil), // 32: testgrid.api.v1.ListHeadersResponse.Header
(*ListRowsResponse_Row)(nil), // 33: testgrid.api.v1.ListRowsResponse.Row
(*ListRowsResponse_Cell)(nil), // 34: testgrid.api.v1.ListRowsResponse.Cell
nil, // 35: testgrid.api.v1.DashboardSummary.TabStatusCountEntry
(*config.Notification)(nil), // 36: testgrid.config.Notification
(*timestamppb.Timestamp)(nil), // 37: google.protobuf.Timestamp
(summary.TestInfo_Trend)(0), // 38: testgrid.summary.TestInfo.Trend
(*state.AlertInfo)(nil), // 39: testgrid.state.AlertInfo
}
var file_data_proto_depIdxs = []int32{
15, // 0: testgrid.api.v1.ListDashboardsResponse.dashboards:type_name -> testgrid.api.v1.DashboardResource
14, // 1: testgrid.api.v1.ListDashboardGroupsResponse.dashboard_groups:type_name -> testgrid.api.v1.Resource
14, // 2: testgrid.api.v1.ListDashboardTabsResponse.dashboard_tabs:type_name -> testgrid.api.v1.Resource
36, // 3: testgrid.api.v1.GetDashboardResponse.notifications:type_name -> testgrid.config.Notification
14, // 4: testgrid.api.v1.GetDashboardGroupResponse.dashboards:type_name -> testgrid.api.v1.Resource
32, // 5: testgrid.api.v1.ListHeadersResponse.headers:type_name -> testgrid.api.v1.ListHeadersResponse.Header
33, // 6: testgrid.api.v1.ListRowsResponse.rows:type_name -> testgrid.api.v1.ListRowsResponse.Row
24, // 7: testgrid.api.v1.ListTabSummariesResponse.tab_summaries:type_name -> testgrid.api.v1.TabSummary
24, // 8: testgrid.api.v1.GetTabSummaryResponse.tab_summary:type_name -> testgrid.api.v1.TabSummary
31, // 9: testgrid.api.v1.ListDashboardSummariesResponse.dashboard_summaries:type_name -> testgrid.api.v1.DashboardSummary
31, // 10: testgrid.api.v1.GetDashboardSummaryResponse.dashboard_summary:type_name -> testgrid.api.v1.DashboardSummary
37, // 11: testgrid.api.v1.TabSummary.last_run_timestamp:type_name -> google.protobuf.Timestamp
37, // 12: testgrid.api.v1.TabSummary.last_update_timestamp:type_name -> google.protobuf.Timestamp
25, // 13: testgrid.api.v1.TabSummary.failures_summary:type_name -> testgrid.api.v1.FailuresSummary
28, // 14: testgrid.api.v1.TabSummary.healthiness_summary:type_name -> testgrid.api.v1.HealthinessSummary
26, // 15: testgrid.api.v1.FailuresSummary.top_failing_tests:type_name -> testgrid.api.v1.FailingTestInfo
27, // 16: testgrid.api.v1.FailuresSummary.failure_stats:type_name -> testgrid.api.v1.FailureStats
37, // 17: testgrid.api.v1.FailingTestInfo.pass_timestamp:type_name -> google.protobuf.Timestamp
37, // 18: testgrid.api.v1.FailingTestInfo.fail_timestamp:type_name -> google.protobuf.Timestamp
29, // 19: testgrid.api.v1.HealthinessSummary.top_flaky_tests:type_name -> testgrid.api.v1.FlakyTestInfo
30, // 20: testgrid.api.v1.HealthinessSummary.healthiness_stats:type_name -> testgrid.api.v1.HealthinessStats
38, // 21: testgrid.api.v1.FlakyTestInfo.change:type_name -> testgrid.summary.TestInfo.Trend
37, // 22: testgrid.api.v1.HealthinessStats.start:type_name -> google.protobuf.Timestamp
37, // 23: testgrid.api.v1.HealthinessStats.end:type_name -> google.protobuf.Timestamp
35, // 24: testgrid.api.v1.DashboardSummary.tab_status_count:type_name -> testgrid.api.v1.DashboardSummary.TabStatusCountEntry
37, // 25: testgrid.api.v1.ListHeadersResponse.Header.started:type_name -> google.protobuf.Timestamp
34, // 26: testgrid.api.v1.ListRowsResponse.Row.cells:type_name -> testgrid.api.v1.ListRowsResponse.Cell
39, // 27: testgrid.api.v1.ListRowsResponse.Row.alert:type_name -> testgrid.state.AlertInfo
0, // 28: testgrid.api.v1.TestGridData.ListDashboards:input_type -> testgrid.api.v1.ListDashboardsRequest
2, // 29: testgrid.api.v1.TestGridData.ListDashboardGroups:input_type -> testgrid.api.v1.ListDashboardGroupsRequest
4, // 30: testgrid.api.v1.TestGridData.ListDashboardTabs:input_type -> testgrid.api.v1.ListDashboardTabsRequest
6, // 31: testgrid.api.v1.TestGridData.GetDashboard:input_type -> testgrid.api.v1.GetDashboardRequest
8, // 32: testgrid.api.v1.TestGridData.GetDashboardGroup:input_type -> testgrid.api.v1.GetDashboardGroupRequest
10, // 33: testgrid.api.v1.TestGridData.ListHeaders:input_type -> testgrid.api.v1.ListHeadersRequest
12, // 34: testgrid.api.v1.TestGridData.ListRows:input_type -> testgrid.api.v1.ListRowsRequest
16, // 35: testgrid.api.v1.TestGridData.ListTabSummaries:input_type -> testgrid.api.v1.ListTabSummariesRequest
18, // 36: testgrid.api.v1.TestGridData.GetTabSummary:input_type -> testgrid.api.v1.GetTabSummaryRequest
20, // 37: testgrid.api.v1.TestGridData.ListDashboardSummaries:input_type -> testgrid.api.v1.ListDashboardSummariesRequest
22, // 38: testgrid.api.v1.TestGridData.GetDashboardSummary:input_type -> testgrid.api.v1.GetDashboardSummaryRequest
1, // 39: testgrid.api.v1.TestGridData.ListDashboards:output_type -> testgrid.api.v1.ListDashboardsResponse
3, // 40: testgrid.api.v1.TestGridData.ListDashboardGroups:output_type -> testgrid.api.v1.ListDashboardGroupsResponse
5, // 41: testgrid.api.v1.TestGridData.ListDashboardTabs:output_type -> testgrid.api.v1.ListDashboardTabsResponse
7, // 42: testgrid.api.v1.TestGridData.GetDashboard:output_type -> testgrid.api.v1.GetDashboardResponse
9, // 43: testgrid.api.v1.TestGridData.GetDashboardGroup:output_type -> testgrid.api.v1.GetDashboardGroupResponse
11, // 44: testgrid.api.v1.TestGridData.ListHeaders:output_type -> testgrid.api.v1.ListHeadersResponse
13, // 45: testgrid.api.v1.TestGridData.ListRows:output_type -> testgrid.api.v1.ListRowsResponse
17, // 46: testgrid.api.v1.TestGridData.ListTabSummaries:output_type -> testgrid.api.v1.ListTabSummariesResponse
19, // 47: testgrid.api.v1.TestGridData.GetTabSummary:output_type -> testgrid.api.v1.GetTabSummaryResponse
21, // 48: testgrid.api.v1.TestGridData.ListDashboardSummaries:output_type -> testgrid.api.v1.ListDashboardSummariesResponse
23, // 49: testgrid.api.v1.TestGridData.GetDashboardSummary:output_type -> testgrid.api.v1.GetDashboardSummaryResponse
39, // [39:50] is the sub-list for method output_type
28, // [28:39] is the sub-list for method input_type
28, // [28:28] is the sub-list for extension type_name
28, // [28:28] is the sub-list for extension extendee
0, // [0:28] is the sub-list for field type_name
}
func init() { file_data_proto_init() }
func file_data_proto_init() {
if File_data_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_data_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardGroupsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardGroupsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardTabsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardTabsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDashboardRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDashboardResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDashboardGroupRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDashboardGroupResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListHeadersRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListHeadersResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRowsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRowsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Resource); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DashboardResource); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTabSummariesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListTabSummariesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTabSummaryRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetTabSummaryResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardSummariesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDashboardSummariesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDashboardSummaryRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDashboardSummaryResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TabSummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FailuresSummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FailingTestInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FailureStats); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HealthinessSummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FlakyTestInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HealthinessStats); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DashboardSummary); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListHeadersResponse_Header); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRowsResponse_Row); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_data_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRowsResponse_Cell); 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{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_data_proto_rawDesc,
NumEnums: 0,
NumMessages: 36,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_data_proto_goTypes,
DependencyIndexes: file_data_proto_depIdxs,
MessageInfos: file_data_proto_msgTypes,
}.Build()
File_data_proto = out.File
file_data_proto_rawDesc = nil
file_data_proto_goTypes = nil
file_data_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// TestGridDataClient is the client API for TestGridData service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type TestGridDataClient interface {
// GET /dashboards
// Lists dashboard names
ListDashboards(ctx context.Context, in *ListDashboardsRequest, opts ...grpc.CallOption) (*ListDashboardsResponse, error)
// GET /dashboard-groups
// Lists the dashboard group names
ListDashboardGroups(ctx context.Context, in *ListDashboardGroupsRequest, opts ...grpc.CallOption) (*ListDashboardGroupsResponse, error)
// GET /dashboards/{dashboard}/tabs
// Lists the dashboard tab names
ListDashboardTabs(ctx context.Context, in *ListDashboardTabsRequest, opts ...grpc.CallOption) (*ListDashboardTabsResponse, error)
// GET /dashboards/{dashboard}
// Returns a Dashboard config's metadata
// Excludes subtabs, accessed through the /tabs list method instead
GetDashboard(ctx context.Context, in *GetDashboardRequest, opts ...grpc.CallOption) (*GetDashboardResponse, error)
// GET /dashboard-groups/{dashboard-group}
// Lists the dashboard names in that group
GetDashboardGroup(ctx context.Context, in *GetDashboardGroupRequest, opts ...grpc.CallOption) (*GetDashboardGroupResponse, error)
// GET /dashboards/{dashboard}/tabs/{tab}/headers
// Returns the headers for grid results
ListHeaders(ctx context.Context, in *ListHeadersRequest, opts ...grpc.CallOption) (*ListHeadersResponse, error)
// GET /dashboards/{dashboard}/tabs/{tab}/rows
// Returns information on grid rows, and data within those rows
ListRows(ctx context.Context, in *ListRowsRequest, opts ...grpc.CallOption) (*ListRowsResponse, error)
// GET /dashboards/{dashboard}/tab-summaries
// Returns the list of tab summaries for dashboard.
ListTabSummaries(ctx context.Context, in *ListTabSummariesRequest, opts ...grpc.CallOption) (*ListTabSummariesResponse, error)
// GET /dashboards/{dashboard}/tab-summaries/{tab}
GetTabSummary(ctx context.Context, in *GetTabSummaryRequest, opts ...grpc.CallOption) (*GetTabSummaryResponse, error)
// GET /dashboard-groups/{dashboard-group}/dashboard-summaries
ListDashboardSummaries(ctx context.Context, in *ListDashboardSummariesRequest, opts ...grpc.CallOption) (*ListDashboardSummariesResponse, error)
// GET /dashboards/{dashboard}/summary
GetDashboardSummary(ctx context.Context, in *GetDashboardSummaryRequest, opts ...grpc.CallOption) (*GetDashboardSummaryResponse, error)
}
type testGridDataClient struct {
cc grpc.ClientConnInterface
}
func NewTestGridDataClient(cc grpc.ClientConnInterface) TestGridDataClient {
return &testGridDataClient{cc}
}
func (c *testGridDataClient) ListDashboards(ctx context.Context, in *ListDashboardsRequest, opts ...grpc.CallOption) (*ListDashboardsResponse, error) {
out := new(ListDashboardsResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboards", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) ListDashboardGroups(ctx context.Context, in *ListDashboardGroupsRequest, opts ...grpc.CallOption) (*ListDashboardGroupsResponse, error) {
out := new(ListDashboardGroupsResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboardGroups", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) ListDashboardTabs(ctx context.Context, in *ListDashboardTabsRequest, opts ...grpc.CallOption) (*ListDashboardTabsResponse, error) {
out := new(ListDashboardTabsResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboardTabs", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) GetDashboard(ctx context.Context, in *GetDashboardRequest, opts ...grpc.CallOption) (*GetDashboardResponse, error) {
out := new(GetDashboardResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetDashboard", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) GetDashboardGroup(ctx context.Context, in *GetDashboardGroupRequest, opts ...grpc.CallOption) (*GetDashboardGroupResponse, error) {
out := new(GetDashboardGroupResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetDashboardGroup", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) ListHeaders(ctx context.Context, in *ListHeadersRequest, opts ...grpc.CallOption) (*ListHeadersResponse, error) {
out := new(ListHeadersResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListHeaders", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) ListRows(ctx context.Context, in *ListRowsRequest, opts ...grpc.CallOption) (*ListRowsResponse, error) {
out := new(ListRowsResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListRows", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) ListTabSummaries(ctx context.Context, in *ListTabSummariesRequest, opts ...grpc.CallOption) (*ListTabSummariesResponse, error) {
out := new(ListTabSummariesResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListTabSummaries", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) GetTabSummary(ctx context.Context, in *GetTabSummaryRequest, opts ...grpc.CallOption) (*GetTabSummaryResponse, error) {
out := new(GetTabSummaryResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetTabSummary", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) ListDashboardSummaries(ctx context.Context, in *ListDashboardSummariesRequest, opts ...grpc.CallOption) (*ListDashboardSummariesResponse, error) {
out := new(ListDashboardSummariesResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboardSummaries", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *testGridDataClient) GetDashboardSummary(ctx context.Context, in *GetDashboardSummaryRequest, opts ...grpc.CallOption) (*GetDashboardSummaryResponse, error) {
out := new(GetDashboardSummaryResponse)
err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetDashboardSummary", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TestGridDataServer is the server API for TestGridData service.
type TestGridDataServer interface {
// GET /dashboards
// Lists dashboard names
ListDashboards(context.Context, *ListDashboardsRequest) (*ListDashboardsResponse, error)
// GET /dashboard-groups
// Lists the dashboard group names
ListDashboardGroups(context.Context, *ListDashboardGroupsRequest) (*ListDashboardGroupsResponse, error)
// GET /dashboards/{dashboard}/tabs
// Lists the dashboard tab names
ListDashboardTabs(context.Context, *ListDashboardTabsRequest) (*ListDashboardTabsResponse, error)
// GET /dashboards/{dashboard}
// Returns a Dashboard config's metadata
// Excludes subtabs, accessed through the /tabs list method instead
GetDashboard(context.Context, *GetDashboardRequest) (*GetDashboardResponse, error)
// GET /dashboard-groups/{dashboard-group}
// Lists the dashboard names in that group
GetDashboardGroup(context.Context, *GetDashboardGroupRequest) (*GetDashboardGroupResponse, error)
// GET /dashboards/{dashboard}/tabs/{tab}/headers
// Returns the headers for grid results
ListHeaders(context.Context, *ListHeadersRequest) (*ListHeadersResponse, error)
// GET /dashboards/{dashboard}/tabs/{tab}/rows
// Returns information on grid rows, and data within those rows
ListRows(context.Context, *ListRowsRequest) (*ListRowsResponse, error)
// GET /dashboards/{dashboard}/tab-summaries
// Returns the list of tab summaries for dashboard.
ListTabSummaries(context.Context, *ListTabSummariesRequest) (*ListTabSummariesResponse, error)
// GET /dashboards/{dashboard}/tab-summaries/{tab}
GetTabSummary(context.Context, *GetTabSummaryRequest) (*GetTabSummaryResponse, error)
// GET /dashboard-groups/{dashboard-group}/dashboard-summaries
ListDashboardSummaries(context.Context, *ListDashboardSummariesRequest) (*ListDashboardSummariesResponse, error)
// GET /dashboards/{dashboard}/summary
GetDashboardSummary(context.Context, *GetDashboardSummaryRequest) (*GetDashboardSummaryResponse, error)
}
// UnimplementedTestGridDataServer can be embedded to have forward compatible implementations.
type UnimplementedTestGridDataServer struct {
}
func (*UnimplementedTestGridDataServer) ListDashboards(context.Context, *ListDashboardsRequest) (*ListDashboardsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListDashboards not implemented")
}
func (*UnimplementedTestGridDataServer) ListDashboardGroups(context.Context, *ListDashboardGroupsRequest) (*ListDashboardGroupsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListDashboardGroups not implemented")
}
func (*UnimplementedTestGridDataServer) ListDashboardTabs(context.Context, *ListDashboardTabsRequest) (*ListDashboardTabsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListDashboardTabs not implemented")
}
func (*UnimplementedTestGridDataServer) GetDashboard(context.Context, *GetDashboardRequest) (*GetDashboardResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDashboard not implemented")
}
func (*UnimplementedTestGridDataServer) GetDashboardGroup(context.Context, *GetDashboardGroupRequest) (*GetDashboardGroupResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDashboardGroup not implemented")
}
func (*UnimplementedTestGridDataServer) ListHeaders(context.Context, *ListHeadersRequest) (*ListHeadersResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListHeaders not implemented")
}
func (*UnimplementedTestGridDataServer) ListRows(context.Context, *ListRowsRequest) (*ListRowsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListRows not implemented")
}
func (*UnimplementedTestGridDataServer) ListTabSummaries(context.Context, *ListTabSummariesRequest) (*ListTabSummariesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListTabSummaries not implemented")
}
func (*UnimplementedTestGridDataServer) GetTabSummary(context.Context, *GetTabSummaryRequest) (*GetTabSummaryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTabSummary not implemented")
}
func (*UnimplementedTestGridDataServer) ListDashboardSummaries(context.Context, *ListDashboardSummariesRequest) (*ListDashboardSummariesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListDashboardSummaries not implemented")
}
func (*UnimplementedTestGridDataServer) GetDashboardSummary(context.Context, *GetDashboardSummaryRequest) (*GetDashboardSummaryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDashboardSummary not implemented")
}
func RegisterTestGridDataServer(s *grpc.Server, srv TestGridDataServer) {
s.RegisterService(&_TestGridData_serviceDesc, srv)
}
func _TestGridData_ListDashboards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDashboardsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).ListDashboards(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/ListDashboards",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).ListDashboards(ctx, req.(*ListDashboardsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_ListDashboardGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDashboardGroupsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).ListDashboardGroups(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/ListDashboardGroups",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).ListDashboardGroups(ctx, req.(*ListDashboardGroupsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_ListDashboardTabs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDashboardTabsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).ListDashboardTabs(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/ListDashboardTabs",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).ListDashboardTabs(ctx, req.(*ListDashboardTabsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_GetDashboard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDashboardRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).GetDashboard(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/GetDashboard",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).GetDashboard(ctx, req.(*GetDashboardRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_GetDashboardGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDashboardGroupRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).GetDashboardGroup(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/GetDashboardGroup",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).GetDashboardGroup(ctx, req.(*GetDashboardGroupRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_ListHeaders_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListHeadersRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).ListHeaders(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/ListHeaders",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).ListHeaders(ctx, req.(*ListHeadersRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_ListRows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListRowsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).ListRows(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/ListRows",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).ListRows(ctx, req.(*ListRowsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_ListTabSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListTabSummariesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).ListTabSummaries(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/ListTabSummaries",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).ListTabSummaries(ctx, req.(*ListTabSummariesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_GetTabSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetTabSummaryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).GetTabSummary(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/GetTabSummary",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).GetTabSummary(ctx, req.(*GetTabSummaryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_ListDashboardSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDashboardSummariesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).ListDashboardSummaries(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/ListDashboardSummaries",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).ListDashboardSummaries(ctx, req.(*ListDashboardSummariesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TestGridData_GetDashboardSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDashboardSummaryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TestGridDataServer).GetDashboardSummary(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/testgrid.api.v1.TestGridData/GetDashboardSummary",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TestGridDataServer).GetDashboardSummary(ctx, req.(*GetDashboardSummaryRequest))
}
return interceptor(ctx, in, info, handler)
}
var _TestGridData_serviceDesc = grpc.ServiceDesc{
ServiceName: "testgrid.api.v1.TestGridData",
HandlerType: (*TestGridDataServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ListDashboards",
Handler: _TestGridData_ListDashboards_Handler,
},
{
MethodName: "ListDashboardGroups",
Handler: _TestGridData_ListDashboardGroups_Handler,
},
{
MethodName: "ListDashboardTabs",
Handler: _TestGridData_ListDashboardTabs_Handler,
},
{
MethodName: "GetDashboard",
Handler: _TestGridData_GetDashboard_Handler,
},
{
MethodName: "GetDashboardGroup",
Handler: _TestGridData_GetDashboardGroup_Handler,
},
{
MethodName: "ListHeaders",
Handler: _TestGridData_ListHeaders_Handler,
},
{
MethodName: "ListRows",
Handler: _TestGridData_ListRows_Handler,
},
{
MethodName: "ListTabSummaries",
Handler: _TestGridData_ListTabSummaries_Handler,
},
{
MethodName: "GetTabSummary",
Handler: _TestGridData_GetTabSummary_Handler,
},
{
MethodName: "ListDashboardSummaries",
Handler: _TestGridData_ListDashboardSummaries_Handler,
},
{
MethodName: "GetDashboardSummary",
Handler: _TestGridData_GetDashboardSummary_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "data.proto",
}