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", }