blob: d401676a936b041eceb69dc4c12c1d6c771b1b5f [file] [log] [blame]
// Copyright 2022 The LUCI 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.1
// protoc v3.21.7
// source: go.chromium.org/luci/bisection/proto/gofindit.proto
package gofindit
import prpc "go.chromium.org/luci/grpc/prpc"
import (
context "context"
proto "go.chromium.org/luci/buildbucket/proto"
_ "google.golang.org/genproto/googleapis/api/annotations"
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)
)
// AnalysisStatus represents the result status of an analysis
type AnalysisStatus int32
const (
AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED AnalysisStatus = 0
// The analysis has been created, but not yet started.
// We don't have this status in code. It's here for backward-compatability
AnalysisStatus_CREATED AnalysisStatus = 1
// The analysis is running, but results have not been finalised.
AnalysisStatus_RUNNING AnalysisStatus = 2
// The analysis has finished and found (and verified) the culprit
AnalysisStatus_FOUND AnalysisStatus = 3
// The analysis has finished but no culprit/suspect has been found
AnalysisStatus_NOTFOUND AnalysisStatus = 4
// The analysis results in an error
AnalysisStatus_ERROR AnalysisStatus = 5
// The analysis found some suspects, either from heuristic or nthsection
AnalysisStatus_SUSPECTFOUND AnalysisStatus = 6
)
// Enum value maps for AnalysisStatus.
var (
AnalysisStatus_name = map[int32]string{
0: "ANALYSIS_STATUS_UNSPECIFIED",
1: "CREATED",
2: "RUNNING",
3: "FOUND",
4: "NOTFOUND",
5: "ERROR",
6: "SUSPECTFOUND",
}
AnalysisStatus_value = map[string]int32{
"ANALYSIS_STATUS_UNSPECIFIED": 0,
"CREATED": 1,
"RUNNING": 2,
"FOUND": 3,
"NOTFOUND": 4,
"ERROR": 5,
"SUSPECTFOUND": 6,
}
)
func (x AnalysisStatus) Enum() *AnalysisStatus {
p := new(AnalysisStatus)
*p = x
return p
}
func (x AnalysisStatus) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (AnalysisStatus) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[0].Descriptor()
}
func (AnalysisStatus) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[0]
}
func (x AnalysisStatus) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use AnalysisStatus.Descriptor instead.
func (AnalysisStatus) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{0}
}
// AnalysisRunStatus is different from AnalysisStatus in the sense
// that it focused on whether the analysis is current running or not,
// rather than focus on the result.
type AnalysisRunStatus int32
const (
AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED AnalysisRunStatus = 0
// The analysis started and is still running.
AnalysisRunStatus_STARTED AnalysisRunStatus = 2
// The analysis has ended (either it stopped naturally or ran into an error).
AnalysisRunStatus_ENDED AnalysisRunStatus = 3
// The analysis has been canceled.
AnalysisRunStatus_CANCELED AnalysisRunStatus = 4
)
// Enum value maps for AnalysisRunStatus.
var (
AnalysisRunStatus_name = map[int32]string{
0: "ANALYSIS_RUN_STATUS_UNSPECIFIED",
2: "STARTED",
3: "ENDED",
4: "CANCELED",
}
AnalysisRunStatus_value = map[string]int32{
"ANALYSIS_RUN_STATUS_UNSPECIFIED": 0,
"STARTED": 2,
"ENDED": 3,
"CANCELED": 4,
}
)
func (x AnalysisRunStatus) Enum() *AnalysisRunStatus {
p := new(AnalysisRunStatus)
*p = x
return p
}
func (x AnalysisRunStatus) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (AnalysisRunStatus) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[1].Descriptor()
}
func (AnalysisRunStatus) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[1]
}
func (x AnalysisRunStatus) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use AnalysisRunStatus.Descriptor instead.
func (AnalysisRunStatus) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{1}
}
type CulpritActionType int32
const (
CulpritActionType_CULPRIT_ACTION_TYPE_UNSPECIFIED CulpritActionType = 0
// No action has been taken with the culprit
CulpritActionType_NO_ACTION CulpritActionType = 1
// The culprit was auto reverted by LUCI Bisection
CulpritActionType_CULPRIT_AUTO_REVERTED CulpritActionType = 2
// The revert CL for the culprit was created.
// Maybe waiting for a human to review or for the verification process
// to finish.
CulpritActionType_REVERT_CL_CREATED CulpritActionType = 3
// LUCI Bisection commented on the culprit CL
CulpritActionType_CULPRIT_CL_COMMENTED CulpritActionType = 4
// LUCI Bisection commented on the bug for the failure
CulpritActionType_BUG_COMMENTED CulpritActionType = 5
// LUCI Bisection commented on an existing revert CL for the culprit CL
CulpritActionType_EXISTING_REVERT_CL_COMMENTED CulpritActionType = 6
)
// Enum value maps for CulpritActionType.
var (
CulpritActionType_name = map[int32]string{
0: "CULPRIT_ACTION_TYPE_UNSPECIFIED",
1: "NO_ACTION",
2: "CULPRIT_AUTO_REVERTED",
3: "REVERT_CL_CREATED",
4: "CULPRIT_CL_COMMENTED",
5: "BUG_COMMENTED",
6: "EXISTING_REVERT_CL_COMMENTED",
}
CulpritActionType_value = map[string]int32{
"CULPRIT_ACTION_TYPE_UNSPECIFIED": 0,
"NO_ACTION": 1,
"CULPRIT_AUTO_REVERTED": 2,
"REVERT_CL_CREATED": 3,
"CULPRIT_CL_COMMENTED": 4,
"BUG_COMMENTED": 5,
"EXISTING_REVERT_CL_COMMENTED": 6,
}
)
func (x CulpritActionType) Enum() *CulpritActionType {
p := new(CulpritActionType)
*p = x
return p
}
func (x CulpritActionType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (CulpritActionType) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[2].Descriptor()
}
func (CulpritActionType) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[2]
}
func (x CulpritActionType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use CulpritActionType.Descriptor instead.
func (CulpritActionType) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{2}
}
type RerunStatus int32
const (
RerunStatus_RERUN_STATUS_UNSPECIFIED RerunStatus = 0
RerunStatus_RERUN_STATUS_IN_PROGRESS RerunStatus = 1
RerunStatus_RERUN_STATUS_PASSED RerunStatus = 2
RerunStatus_RERUN_STATUS_FAILED RerunStatus = 3
RerunStatus_RERUN_STATUS_INFRA_FAILED RerunStatus = 4
RerunStatus_RERUN_STATUS_CANCELED RerunStatus = 5
)
// Enum value maps for RerunStatus.
var (
RerunStatus_name = map[int32]string{
0: "RERUN_STATUS_UNSPECIFIED",
1: "RERUN_STATUS_IN_PROGRESS",
2: "RERUN_STATUS_PASSED",
3: "RERUN_STATUS_FAILED",
4: "RERUN_STATUS_INFRA_FAILED",
5: "RERUN_STATUS_CANCELED",
}
RerunStatus_value = map[string]int32{
"RERUN_STATUS_UNSPECIFIED": 0,
"RERUN_STATUS_IN_PROGRESS": 1,
"RERUN_STATUS_PASSED": 2,
"RERUN_STATUS_FAILED": 3,
"RERUN_STATUS_INFRA_FAILED": 4,
"RERUN_STATUS_CANCELED": 5,
}
)
func (x RerunStatus) Enum() *RerunStatus {
p := new(RerunStatus)
*p = x
return p
}
func (x RerunStatus) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (RerunStatus) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[3].Descriptor()
}
func (RerunStatus) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[3]
}
func (x RerunStatus) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use RerunStatus.Descriptor instead.
func (RerunStatus) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{3}
}
type SuspectConfidenceLevel int32
const (
SuspectConfidenceLevel_SUSPECT_CONFIDENCE_LEVEL_UNSPECIFIED SuspectConfidenceLevel = 0
SuspectConfidenceLevel_LOW SuspectConfidenceLevel = 1
SuspectConfidenceLevel_MEDIUM SuspectConfidenceLevel = 2
SuspectConfidenceLevel_HIGH SuspectConfidenceLevel = 3
)
// Enum value maps for SuspectConfidenceLevel.
var (
SuspectConfidenceLevel_name = map[int32]string{
0: "SUSPECT_CONFIDENCE_LEVEL_UNSPECIFIED",
1: "LOW",
2: "MEDIUM",
3: "HIGH",
}
SuspectConfidenceLevel_value = map[string]int32{
"SUSPECT_CONFIDENCE_LEVEL_UNSPECIFIED": 0,
"LOW": 1,
"MEDIUM": 2,
"HIGH": 3,
}
)
func (x SuspectConfidenceLevel) Enum() *SuspectConfidenceLevel {
p := new(SuspectConfidenceLevel)
*p = x
return p
}
func (x SuspectConfidenceLevel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SuspectConfidenceLevel) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[4].Descriptor()
}
func (SuspectConfidenceLevel) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[4]
}
func (x SuspectConfidenceLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SuspectConfidenceLevel.Descriptor instead.
func (SuspectConfidenceLevel) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{4}
}
type BuildFailureType int32
const (
BuildFailureType_BUILD_FAILURE_TYPE_UNSPECIFIED BuildFailureType = 0
BuildFailureType_COMPILE BuildFailureType = 1
BuildFailureType_TEST BuildFailureType = 2
BuildFailureType_INFRA BuildFailureType = 3
BuildFailureType_OTHER BuildFailureType = 4
)
// Enum value maps for BuildFailureType.
var (
BuildFailureType_name = map[int32]string{
0: "BUILD_FAILURE_TYPE_UNSPECIFIED",
1: "COMPILE",
2: "TEST",
3: "INFRA",
4: "OTHER",
}
BuildFailureType_value = map[string]int32{
"BUILD_FAILURE_TYPE_UNSPECIFIED": 0,
"COMPILE": 1,
"TEST": 2,
"INFRA": 3,
"OTHER": 4,
}
)
func (x BuildFailureType) Enum() *BuildFailureType {
p := new(BuildFailureType)
*p = x
return p
}
func (x BuildFailureType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (BuildFailureType) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[5].Descriptor()
}
func (BuildFailureType) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes[5]
}
func (x BuildFailureType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use BuildFailureType.Descriptor instead.
func (BuildFailureType) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{5}
}
type GetAnalysisRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ID of the analysis
AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
}
func (x *GetAnalysisRequest) Reset() {
*x = GetAnalysisRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetAnalysisRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetAnalysisRequest) ProtoMessage() {}
func (x *GetAnalysisRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 GetAnalysisRequest.ProtoReflect.Descriptor instead.
func (*GetAnalysisRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{0}
}
func (x *GetAnalysisRequest) GetAnalysisId() int64 {
if x != nil {
return x.AnalysisId
}
return 0
}
type QueryAnalysisRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The build failure information to query for the analyses.
BuildFailure *BuildFailure `protobuf:"bytes,1,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"`
}
func (x *QueryAnalysisRequest) Reset() {
*x = QueryAnalysisRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryAnalysisRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryAnalysisRequest) ProtoMessage() {}
func (x *QueryAnalysisRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 QueryAnalysisRequest.ProtoReflect.Descriptor instead.
func (*QueryAnalysisRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{1}
}
func (x *QueryAnalysisRequest) GetBuildFailure() *BuildFailure {
if x != nil {
return x.BuildFailure
}
return nil
}
type QueryAnalysisResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The analyses corresponding to the QueryAnalysisRequest.
Analyses []*Analysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"`
}
func (x *QueryAnalysisResponse) Reset() {
*x = QueryAnalysisResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryAnalysisResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryAnalysisResponse) ProtoMessage() {}
func (x *QueryAnalysisResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 QueryAnalysisResponse.ProtoReflect.Descriptor instead.
func (*QueryAnalysisResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{2}
}
func (x *QueryAnalysisResponse) GetAnalyses() []*Analysis {
if x != nil {
return x.Analyses
}
return nil
}
type ListAnalysesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. The maximum number of analyses to be returned in the response.
// The service may return fewer than this value.
// If unspecified, at most 50 analyses will be returned.
// The maximum value is 200; values above 200 will be coerced to 200.
PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A page token, received from a previous `ListAnalyses` call.
// Provide this to retrieve the subsequent page.
// When paginating, all other parameters provided to `ListAnalyses` must
// match the call that provided the page token,
// with the exception of page_size and page_token.
PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListAnalysesRequest) Reset() {
*x = ListAnalysesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListAnalysesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListAnalysesRequest) ProtoMessage() {}
func (x *ListAnalysesRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 ListAnalysesRequest.ProtoReflect.Descriptor instead.
func (*ListAnalysesRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{3}
}
func (x *ListAnalysesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListAnalysesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
type ListAnalysesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The analyses corresponding to the ListAnalysesRequest.
Analyses []*Analysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"`
// The token to send as `page_token` to retrieve the next page of analyses.
// If this field is omitted, there are no subsequent pages.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListAnalysesResponse) Reset() {
*x = ListAnalysesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListAnalysesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListAnalysesResponse) ProtoMessage() {}
func (x *ListAnalysesResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 ListAnalysesResponse.ProtoReflect.Descriptor instead.
func (*ListAnalysesResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{4}
}
func (x *ListAnalysesResponse) GetAnalyses() []*Analysis {
if x != nil {
return x.Analyses
}
return nil
}
func (x *ListAnalysesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
type TriggerAnalysisRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// failure for which to trigger the analysis.
BuildFailure *BuildFailure `protobuf:"bytes,1,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"`
// Optionally, the client can pass the bug associated with the failure.
// Findit will update the bug with analysis progress/result.
// This is mainly for SoM, which has information about bugs associated
// with a failure.
BugInfo []*BugInfo `protobuf:"bytes,2,rep,name=bug_info,json=bugInfo,proto3" json:"bug_info,omitempty"`
}
func (x *TriggerAnalysisRequest) Reset() {
*x = TriggerAnalysisRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TriggerAnalysisRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TriggerAnalysisRequest) ProtoMessage() {}
func (x *TriggerAnalysisRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 TriggerAnalysisRequest.ProtoReflect.Descriptor instead.
func (*TriggerAnalysisRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{5}
}
func (x *TriggerAnalysisRequest) GetBuildFailure() *BuildFailure {
if x != nil {
return x.BuildFailure
}
return nil
}
func (x *TriggerAnalysisRequest) GetBugInfo() []*BugInfo {
if x != nil {
return x.BugInfo
}
return nil
}
type TriggerAnalysisResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The analysis result corresponding to the request.
// It is either a new analysis or an existing one.
Result *Analysis `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
// is_new_analysis will be set to true if a new analysis is triggered.
// It will be set to false if an existing analysis is used instead.
IsNewAnalysis bool `protobuf:"varint,2,opt,name=is_new_analysis,json=isNewAnalysis,proto3" json:"is_new_analysis,omitempty"`
}
func (x *TriggerAnalysisResponse) Reset() {
*x = TriggerAnalysisResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TriggerAnalysisResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TriggerAnalysisResponse) ProtoMessage() {}
func (x *TriggerAnalysisResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 TriggerAnalysisResponse.ProtoReflect.Descriptor instead.
func (*TriggerAnalysisResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{6}
}
func (x *TriggerAnalysisResponse) GetResult() *Analysis {
if x != nil {
return x.Result
}
return nil
}
func (x *TriggerAnalysisResponse) GetIsNewAnalysis() bool {
if x != nil {
return x.IsNewAnalysis
}
return false
}
// Update the information of an analysis.
// At the mean time, it is only used for update the bugs associated with an
// analysis.
// LUCI Bisection will comment on the bug with analysis progress/results.
// Note: Existing bugs associated with the analysis will be replaced.
type UpdateAnalysisRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ID of the analysis
AnalysisId string `protobuf:"bytes,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
BugInfo []*BugInfo `protobuf:"bytes,2,rep,name=bug_info,json=bugInfo,proto3" json:"bug_info,omitempty"`
}
func (x *UpdateAnalysisRequest) Reset() {
*x = UpdateAnalysisRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateAnalysisRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateAnalysisRequest) ProtoMessage() {}
func (x *UpdateAnalysisRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 UpdateAnalysisRequest.ProtoReflect.Descriptor instead.
func (*UpdateAnalysisRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{7}
}
func (x *UpdateAnalysisRequest) GetAnalysisId() string {
if x != nil {
return x.AnalysisId
}
return ""
}
func (x *UpdateAnalysisRequest) GetBugInfo() []*BugInfo {
if x != nil {
return x.BugInfo
}
return nil
}
// RPC called from bots to update the analysis progress
type UpdateAnalysisProgressRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The analysis that the bot runs
AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
// Bot id
BotId string `protobuf:"bytes,2,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
// BuildbucketID of the rerun build
// We use this to determine which rerun build to map back.
Bbid int64 `protobuf:"varint,3,opt,name=bbid,proto3" json:"bbid,omitempty"`
// The revision that the bot runs
GitilesCommit *proto.GitilesCommit `protobuf:"bytes,4,opt,name=gitiles_commit,json=gitilesCommit,proto3" json:"gitiles_commit,omitempty"`
// Result of the rerun
RerunResult *RerunResult `protobuf:"bytes,5,opt,name=rerun_result,json=rerunResult,proto3" json:"rerun_result,omitempty"`
}
func (x *UpdateAnalysisProgressRequest) Reset() {
*x = UpdateAnalysisProgressRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateAnalysisProgressRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateAnalysisProgressRequest) ProtoMessage() {}
func (x *UpdateAnalysisProgressRequest) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 UpdateAnalysisProgressRequest.ProtoReflect.Descriptor instead.
func (*UpdateAnalysisProgressRequest) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{8}
}
func (x *UpdateAnalysisProgressRequest) GetAnalysisId() int64 {
if x != nil {
return x.AnalysisId
}
return 0
}
func (x *UpdateAnalysisProgressRequest) GetBotId() string {
if x != nil {
return x.BotId
}
return ""
}
func (x *UpdateAnalysisProgressRequest) GetBbid() int64 {
if x != nil {
return x.Bbid
}
return 0
}
func (x *UpdateAnalysisProgressRequest) GetGitilesCommit() *proto.GitilesCommit {
if x != nil {
return x.GitilesCommit
}
return nil
}
func (x *UpdateAnalysisProgressRequest) GetRerunResult() *RerunResult {
if x != nil {
return x.RerunResult
}
return nil
}
type UpdateAnalysisProgressResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The next revision for the bot to run.
// This is because we can compile faster when the same bot runs
// multiple revisions.
// If this is not set, then there is no further revision to run.
// The bot can finish and be released.
NextRevisionToRun *proto.GitilesCommit `protobuf:"bytes,1,opt,name=next_revision_to_run,json=nextRevisionToRun,proto3" json:"next_revision_to_run,omitempty"`
}
func (x *UpdateAnalysisProgressResponse) Reset() {
*x = UpdateAnalysisProgressResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateAnalysisProgressResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateAnalysisProgressResponse) ProtoMessage() {}
func (x *UpdateAnalysisProgressResponse) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 UpdateAnalysisProgressResponse.ProtoReflect.Descriptor instead.
func (*UpdateAnalysisProgressResponse) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{9}
}
func (x *UpdateAnalysisProgressResponse) GetNextRevisionToRun() *proto.GitilesCommit {
if x != nil {
return x.NextRevisionToRun
}
return nil
}
// Analysis result contains result of an analysis
type Analysis struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Id to identify this analysis
AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
// The failure associated with the analysis.
BuildFailure *BuildFailure `protobuf:"bytes,2,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"`
// Status of the analysis
Status AnalysisStatus `protobuf:"varint,3,opt,name=status,proto3,enum=gofindit.AnalysisStatus" json:"status,omitempty"`
// Buildbucket ID for the last passed build
LastPassedBbid int64 `protobuf:"varint,4,opt,name=last_passed_bbid,json=lastPassedBbid,proto3" json:"last_passed_bbid,omitempty"`
// Buildbucket ID for the first failed build
FirstFailedBbid int64 `protobuf:"varint,5,opt,name=first_failed_bbid,json=firstFailedBbid,proto3" json:"first_failed_bbid,omitempty"`
// Timestamp for the created time of the analysis
CreatedTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"`
// Timestamp for the last updated time of the analysis
LastUpdatedTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_updated_time,json=lastUpdatedTime,proto3" json:"last_updated_time,omitempty"`
// Timestamp for the end time of the analysis
EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
// Result of heuristic analysis
HeuristicResult *HeuristicAnalysisResult `protobuf:"bytes,9,opt,name=heuristic_result,json=heuristicResult,proto3" json:"heuristic_result,omitempty"`
// Result of nth-section analysis
NthSectionResult *NthSectionAnalysisResult `protobuf:"bytes,10,opt,name=nth_section_result,json=nthSectionResult,proto3" json:"nth_section_result,omitempty"`
// Builder for the first failed build
Builder *proto.BuilderID `protobuf:"bytes,13,opt,name=builder,proto3" json:"builder,omitempty"`
// Type of the failure associated with the analysis
BuildFailureType BuildFailureType `protobuf:"varint,14,opt,name=build_failure_type,json=buildFailureType,proto3,enum=gofindit.BuildFailureType" json:"build_failure_type,omitempty"`
// The culprits for the analysis
// For some rare cases, we may get more than one culprits for a regression range.
// So we set it as repeated field.
Culprits []*Culprit `protobuf:"bytes,15,rep,name=culprits,proto3" json:"culprits,omitempty"`
}
func (x *Analysis) Reset() {
*x = Analysis{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Analysis) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Analysis) ProtoMessage() {}
func (x *Analysis) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 Analysis.ProtoReflect.Descriptor instead.
func (*Analysis) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{10}
}
func (x *Analysis) GetAnalysisId() int64 {
if x != nil {
return x.AnalysisId
}
return 0
}
func (x *Analysis) GetBuildFailure() *BuildFailure {
if x != nil {
return x.BuildFailure
}
return nil
}
func (x *Analysis) GetStatus() AnalysisStatus {
if x != nil {
return x.Status
}
return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED
}
func (x *Analysis) GetLastPassedBbid() int64 {
if x != nil {
return x.LastPassedBbid
}
return 0
}
func (x *Analysis) GetFirstFailedBbid() int64 {
if x != nil {
return x.FirstFailedBbid
}
return 0
}
func (x *Analysis) GetCreatedTime() *timestamppb.Timestamp {
if x != nil {
return x.CreatedTime
}
return nil
}
func (x *Analysis) GetLastUpdatedTime() *timestamppb.Timestamp {
if x != nil {
return x.LastUpdatedTime
}
return nil
}
func (x *Analysis) GetEndTime() *timestamppb.Timestamp {
if x != nil {
return x.EndTime
}
return nil
}
func (x *Analysis) GetHeuristicResult() *HeuristicAnalysisResult {
if x != nil {
return x.HeuristicResult
}
return nil
}
func (x *Analysis) GetNthSectionResult() *NthSectionAnalysisResult {
if x != nil {
return x.NthSectionResult
}
return nil
}
func (x *Analysis) GetBuilder() *proto.BuilderID {
if x != nil {
return x.Builder
}
return nil
}
func (x *Analysis) GetBuildFailureType() BuildFailureType {
if x != nil {
return x.BuildFailureType
}
return BuildFailureType_BUILD_FAILURE_TYPE_UNSPECIFIED
}
func (x *Analysis) GetCulprits() []*Culprit {
if x != nil {
return x.Culprits
}
return nil
}
type Culprit struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The gitiles commit for the culprit
Commit *proto.GitilesCommit `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"`
// The review URL for the culprit
ReviewUrl string `protobuf:"bytes,2,opt,name=review_url,json=reviewUrl,proto3" json:"review_url,omitempty"`
// The review title for the culprit
ReviewTitle string `protobuf:"bytes,3,opt,name=review_title,json=reviewTitle,proto3" json:"review_title,omitempty"`
// Actions we have taken with the culprit.
// More than one action may be taken, for example, reverting the culprit and
// commenting on the bug.
CulpritAction []*CulpritAction `protobuf:"bytes,4,rep,name=culprit_action,json=culpritAction,proto3" json:"culprit_action,omitempty"`
// The details of suspect verification for the culprit
VerificationDetails *SuspectVerificationDetails `protobuf:"bytes,5,opt,name=verification_details,json=verificationDetails,proto3" json:"verification_details,omitempty"`
}
func (x *Culprit) Reset() {
*x = Culprit{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Culprit) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Culprit) ProtoMessage() {}
func (x *Culprit) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 Culprit.ProtoReflect.Descriptor instead.
func (*Culprit) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{11}
}
func (x *Culprit) GetCommit() *proto.GitilesCommit {
if x != nil {
return x.Commit
}
return nil
}
func (x *Culprit) GetReviewUrl() string {
if x != nil {
return x.ReviewUrl
}
return ""
}
func (x *Culprit) GetReviewTitle() string {
if x != nil {
return x.ReviewTitle
}
return ""
}
func (x *Culprit) GetCulpritAction() []*CulpritAction {
if x != nil {
return x.CulpritAction
}
return nil
}
func (x *Culprit) GetVerificationDetails() *SuspectVerificationDetails {
if x != nil {
return x.VerificationDetails
}
return nil
}
type SuspectVerificationDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The status of the suspect verification
Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
// The verification rerun build for the suspect commit
SuspectRerun *SingleRerun `protobuf:"bytes,2,opt,name=suspect_rerun,json=suspectRerun,proto3" json:"suspect_rerun,omitempty"`
// The verification rerun build for the parent commit of the suspect
ParentRerun *SingleRerun `protobuf:"bytes,3,opt,name=parent_rerun,json=parentRerun,proto3" json:"parent_rerun,omitempty"`
}
func (x *SuspectVerificationDetails) Reset() {
*x = SuspectVerificationDetails{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SuspectVerificationDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SuspectVerificationDetails) ProtoMessage() {}
func (x *SuspectVerificationDetails) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 SuspectVerificationDetails.ProtoReflect.Descriptor instead.
func (*SuspectVerificationDetails) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{12}
}
func (x *SuspectVerificationDetails) GetStatus() string {
if x != nil {
return x.Status
}
return ""
}
func (x *SuspectVerificationDetails) GetSuspectRerun() *SingleRerun {
if x != nil {
return x.SuspectRerun
}
return nil
}
func (x *SuspectVerificationDetails) GetParentRerun() *SingleRerun {
if x != nil {
return x.ParentRerun
}
return nil
}
type HeuristicAnalysisResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The status of the heuristic analysis.
Status AnalysisStatus `protobuf:"varint,1,opt,name=status,proto3,enum=gofindit.AnalysisStatus" json:"status,omitempty"`
// One or more suspects of the heuristic analysis.
// This field exists only when status = FINISHED.
Suspects []*HeuristicSuspect `protobuf:"bytes,2,rep,name=suspects,proto3" json:"suspects,omitempty"`
// Start time of heuristic analysis.
StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// End time of heuristic analysis.
EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}
func (x *HeuristicAnalysisResult) Reset() {
*x = HeuristicAnalysisResult{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HeuristicAnalysisResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HeuristicAnalysisResult) ProtoMessage() {}
func (x *HeuristicAnalysisResult) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 HeuristicAnalysisResult.ProtoReflect.Descriptor instead.
func (*HeuristicAnalysisResult) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{13}
}
func (x *HeuristicAnalysisResult) GetStatus() AnalysisStatus {
if x != nil {
return x.Status
}
return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED
}
func (x *HeuristicAnalysisResult) GetSuspects() []*HeuristicSuspect {
if x != nil {
return x.Suspects
}
return nil
}
func (x *HeuristicAnalysisResult) GetStartTime() *timestamppb.Timestamp {
if x != nil {
return x.StartTime
}
return nil
}
func (x *HeuristicAnalysisResult) GetEndTime() *timestamppb.Timestamp {
if x != nil {
return x.EndTime
}
return nil
}
type HeuristicSuspect struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A suspect revision of heuristic analysis.
GitilesCommit *proto.GitilesCommit `protobuf:"bytes,1,opt,name=gitiles_commit,json=gitilesCommit,proto3" json:"gitiles_commit,omitempty"`
// Review URL for the commit
ReviewUrl string `protobuf:"bytes,2,opt,name=reviewUrl,proto3" json:"reviewUrl,omitempty"`
// Score is an integer representing the how confident we believe the suspect
// is indeed the culprit.
// A higher score means a stronger signal that the suspect is responsible for
// a failure.
Score int32 `protobuf:"varint,3,opt,name=score,proto3" json:"score,omitempty"`
// The reason why heuristic analysis thinks the suspect is a possible culprit.
Justification string `protobuf:"bytes,4,opt,name=justification,proto3" json:"justification,omitempty"`
// Whether the suspect has been verified by the culprit verification component.
Verified bool `protobuf:"varint,5,opt,name=verified,proto3" json:"verified,omitempty"`
// The level of confidence we have for the suspect.
ConfidenceLevel SuspectConfidenceLevel `protobuf:"varint,6,opt,name=confidence_level,json=confidenceLevel,proto3,enum=gofindit.SuspectConfidenceLevel" json:"confidence_level,omitempty"`
// Title of the review for the commit
ReviewTitle string `protobuf:"bytes,7,opt,name=reviewTitle,proto3" json:"reviewTitle,omitempty"`
// The details of suspect verification for the suspect
VerificationDetails *SuspectVerificationDetails `protobuf:"bytes,8,opt,name=verification_details,json=verificationDetails,proto3" json:"verification_details,omitempty"`
}
func (x *HeuristicSuspect) Reset() {
*x = HeuristicSuspect{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HeuristicSuspect) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HeuristicSuspect) ProtoMessage() {}
func (x *HeuristicSuspect) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 HeuristicSuspect.ProtoReflect.Descriptor instead.
func (*HeuristicSuspect) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{14}
}
func (x *HeuristicSuspect) GetGitilesCommit() *proto.GitilesCommit {
if x != nil {
return x.GitilesCommit
}
return nil
}
func (x *HeuristicSuspect) GetReviewUrl() string {
if x != nil {
return x.ReviewUrl
}
return ""
}
func (x *HeuristicSuspect) GetScore() int32 {
if x != nil {
return x.Score
}
return 0
}
func (x *HeuristicSuspect) GetJustification() string {
if x != nil {
return x.Justification
}
return ""
}
func (x *HeuristicSuspect) GetVerified() bool {
if x != nil {
return x.Verified
}
return false
}
func (x *HeuristicSuspect) GetConfidenceLevel() SuspectConfidenceLevel {
if x != nil {
return x.ConfidenceLevel
}
return SuspectConfidenceLevel_SUSPECT_CONFIDENCE_LEVEL_UNSPECIFIED
}
func (x *HeuristicSuspect) GetReviewTitle() string {
if x != nil {
return x.ReviewTitle
}
return ""
}
func (x *HeuristicSuspect) GetVerificationDetails() *SuspectVerificationDetails {
if x != nil {
return x.VerificationDetails
}
return nil
}
type NthSectionAnalysisResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The status of the nth-section analysis.
Status AnalysisStatus `protobuf:"varint,1,opt,name=status,proto3,enum=gofindit.AnalysisStatus" json:"status,omitempty"`
// Timestamp for the start time of the nth-section analysis
StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// Timestamp for the last updated time of the nth-section analysis
LastUpdatedTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_updated_time,json=lastUpdatedTime,proto3" json:"last_updated_time,omitempty"`
// Timestamp for the end time of the nth-section analysis
EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
// Optional, the culprit GitilesCommit, when status = FOUND
Culprit *proto.GitilesCommit `protobuf:"bytes,5,opt,name=culprit,proto3" json:"culprit,omitempty"`
// Optional, whether the culprit has been verified, when status = FOUND
Verified bool `protobuf:"varint,6,opt,name=verified,proto3" json:"verified,omitempty"`
// Optional, when status = RUNNING.
// This is the possible range of the culprit.
// This will be updated as the nth-section progress.
RemainingNthSectionRange *RegressionRange `protobuf:"bytes,7,opt,name=remainingNthSectionRange,proto3" json:"remainingNthSectionRange,omitempty"`
// Optional, when status = ERROR
ErrorMessage string `protobuf:"bytes,8,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
// List of the reruns that have been run so far for the nth-section.
// analysis.
// This is useful to analyse the nth-section progress.
// The runs are sorted by the start timestamp.
Reruns []*SingleRerun `protobuf:"bytes,9,rep,name=reruns,proto3" json:"reruns,omitempty"`
// The blame list of commits to run the nthsection analysis on
// The commits are sorted by recency, with the most recent commit at the beginning.
BlameList *BlameList `protobuf:"bytes,10,opt,name=blameList,proto3" json:"blameList,omitempty"`
}
func (x *NthSectionAnalysisResult) Reset() {
*x = NthSectionAnalysisResult{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NthSectionAnalysisResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NthSectionAnalysisResult) ProtoMessage() {}
func (x *NthSectionAnalysisResult) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 NthSectionAnalysisResult.ProtoReflect.Descriptor instead.
func (*NthSectionAnalysisResult) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{15}
}
func (x *NthSectionAnalysisResult) GetStatus() AnalysisStatus {
if x != nil {
return x.Status
}
return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED
}
func (x *NthSectionAnalysisResult) GetStartTime() *timestamppb.Timestamp {
if x != nil {
return x.StartTime
}
return nil
}
func (x *NthSectionAnalysisResult) GetLastUpdatedTime() *timestamppb.Timestamp {
if x != nil {
return x.LastUpdatedTime
}
return nil
}
func (x *NthSectionAnalysisResult) GetEndTime() *timestamppb.Timestamp {
if x != nil {
return x.EndTime
}
return nil
}
func (x *NthSectionAnalysisResult) GetCulprit() *proto.GitilesCommit {
if x != nil {
return x.Culprit
}
return nil
}
func (x *NthSectionAnalysisResult) GetVerified() bool {
if x != nil {
return x.Verified
}
return false
}
func (x *NthSectionAnalysisResult) GetRemainingNthSectionRange() *RegressionRange {
if x != nil {
return x.RemainingNthSectionRange
}
return nil
}
func (x *NthSectionAnalysisResult) GetErrorMessage() string {
if x != nil {
return x.ErrorMessage
}
return ""
}
func (x *NthSectionAnalysisResult) GetReruns() []*SingleRerun {
if x != nil {
return x.Reruns
}
return nil
}
func (x *NthSectionAnalysisResult) GetBlameList() *BlameList {
if x != nil {
return x.BlameList
}
return nil
}
type BlameList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Commits []*BlameListSingleCommit `protobuf:"bytes,1,rep,name=commits,proto3" json:"commits,omitempty"`
}
func (x *BlameList) Reset() {
*x = BlameList{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BlameList) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BlameList) ProtoMessage() {}
func (x *BlameList) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 BlameList.ProtoReflect.Descriptor instead.
func (*BlameList) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{16}
}
func (x *BlameList) GetCommits() []*BlameListSingleCommit {
if x != nil {
return x.Commits
}
return nil
}
type BlameListSingleCommit struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Commit string `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"`
ReviewUrl string `protobuf:"bytes,2,opt,name=reviewUrl,proto3" json:"reviewUrl,omitempty"`
ReviewTitle string `protobuf:"bytes,3,opt,name=reviewTitle,proto3" json:"reviewTitle,omitempty"`
}
func (x *BlameListSingleCommit) Reset() {
*x = BlameListSingleCommit{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BlameListSingleCommit) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BlameListSingleCommit) ProtoMessage() {}
func (x *BlameListSingleCommit) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 BlameListSingleCommit.ProtoReflect.Descriptor instead.
func (*BlameListSingleCommit) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{17}
}
func (x *BlameListSingleCommit) GetCommit() string {
if x != nil {
return x.Commit
}
return ""
}
func (x *BlameListSingleCommit) GetReviewUrl() string {
if x != nil {
return x.ReviewUrl
}
return ""
}
func (x *BlameListSingleCommit) GetReviewTitle() string {
if x != nil {
return x.ReviewTitle
}
return ""
}
// An action that LUCI Bisection has taken with the culprit
type CulpritAction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ActionType CulpritActionType `protobuf:"varint,1,opt,name=action_type,json=actionType,proto3,enum=gofindit.CulpritActionType" json:"action_type,omitempty"`
// URL to the revert CL, if action_type = CULPRIT_AUTO_REVERTED
// or REVERT_CL_CREATED
RevertClUrl string `protobuf:"bytes,2,opt,name=revert_cl_url,json=revertClUrl,proto3" json:"revert_cl_url,omitempty"`
// URL to the bug, if action_type = BUG_COMMENTED
BugUrl string `protobuf:"bytes,3,opt,name=bug_url,json=bugUrl,proto3" json:"bug_url,omitempty"`
// Timestamp when the culprit action was done
ActionTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=action_time,json=actionTime,proto3" json:"action_time,omitempty"`
}
func (x *CulpritAction) Reset() {
*x = CulpritAction{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CulpritAction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CulpritAction) ProtoMessage() {}
func (x *CulpritAction) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 CulpritAction.ProtoReflect.Descriptor instead.
func (*CulpritAction) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{18}
}
func (x *CulpritAction) GetActionType() CulpritActionType {
if x != nil {
return x.ActionType
}
return CulpritActionType_CULPRIT_ACTION_TYPE_UNSPECIFIED
}
func (x *CulpritAction) GetRevertClUrl() string {
if x != nil {
return x.RevertClUrl
}
return ""
}
func (x *CulpritAction) GetBugUrl() string {
if x != nil {
return x.BugUrl
}
return ""
}
func (x *CulpritAction) GetActionTime() *timestamppb.Timestamp {
if x != nil {
return x.ActionTime
}
return nil
}
// Regression range is (last_passed..first_failed]
type RegressionRange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
LastPassed *proto.GitilesCommit `protobuf:"bytes,1,opt,name=last_passed,json=lastPassed,proto3" json:"last_passed,omitempty"`
FirstFailed *proto.GitilesCommit `protobuf:"bytes,2,opt,name=first_failed,json=firstFailed,proto3" json:"first_failed,omitempty"`
// How many revisions between last passed (exclusively) and first failed (inclusively).
NumberOfRevisions int32 `protobuf:"varint,3,opt,name=number_of_revisions,json=numberOfRevisions,proto3" json:"number_of_revisions,omitempty"`
}
func (x *RegressionRange) Reset() {
*x = RegressionRange{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RegressionRange) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RegressionRange) ProtoMessage() {}
func (x *RegressionRange) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 RegressionRange.ProtoReflect.Descriptor instead.
func (*RegressionRange) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{19}
}
func (x *RegressionRange) GetLastPassed() *proto.GitilesCommit {
if x != nil {
return x.LastPassed
}
return nil
}
func (x *RegressionRange) GetFirstFailed() *proto.GitilesCommit {
if x != nil {
return x.FirstFailed
}
return nil
}
func (x *RegressionRange) GetNumberOfRevisions() int32 {
if x != nil {
return x.NumberOfRevisions
}
return 0
}
// NthSection run contains information about a single rerun in n-section.
// The same bot may be reused for multiple rerun (to speed up compilation time)
type SingleRerun struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Timestamp for the created time of the rerun
StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// Timestamp for the last updated time of the rerun.
LastUpdatedTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_updated_time,json=lastUpdatedTime,proto3" json:"last_updated_time,omitempty"`
// Timestamp for the end time of the rerun
EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
// Buildbucket ID of the rerun build.
Bbid int64 `protobuf:"varint,4,opt,name=bbid,proto3" json:"bbid,omitempty"`
// Task id of the rerun
TaskId string `protobuf:"bytes,5,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
// Id of the bot
BotId string `protobuf:"bytes,6,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
// Result of the rerun
RerunResult *RerunResult `protobuf:"bytes,7,opt,name=rerun_result,json=rerunResult,proto3" json:"rerun_result,omitempty"`
}
func (x *SingleRerun) Reset() {
*x = SingleRerun{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SingleRerun) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SingleRerun) ProtoMessage() {}
func (x *SingleRerun) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 SingleRerun.ProtoReflect.Descriptor instead.
func (*SingleRerun) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{20}
}
func (x *SingleRerun) GetStartTime() *timestamppb.Timestamp {
if x != nil {
return x.StartTime
}
return nil
}
func (x *SingleRerun) GetLastUpdatedTime() *timestamppb.Timestamp {
if x != nil {
return x.LastUpdatedTime
}
return nil
}
func (x *SingleRerun) GetEndTime() *timestamppb.Timestamp {
if x != nil {
return x.EndTime
}
return nil
}
func (x *SingleRerun) GetBbid() int64 {
if x != nil {
return x.Bbid
}
return 0
}
func (x *SingleRerun) GetTaskId() string {
if x != nil {
return x.TaskId
}
return ""
}
func (x *SingleRerun) GetBotId() string {
if x != nil {
return x.BotId
}
return ""
}
func (x *SingleRerun) GetRerunResult() *RerunResult {
if x != nil {
return x.RerunResult
}
return nil
}
// RerunResult contains the result of one rerun.
// It is for the bots to update result back to LUCI Bisection.
type RerunResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Status of the rerun
RerunStatus RerunStatus `protobuf:"varint,1,opt,name=rerun_status,json=rerunStatus,proto3,enum=gofindit.RerunStatus" json:"rerun_status,omitempty"`
// Error message, in case of FAILED or INFRA_FAILED status
ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
}
func (x *RerunResult) Reset() {
*x = RerunResult{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RerunResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RerunResult) ProtoMessage() {}
func (x *RerunResult) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 RerunResult.ProtoReflect.Descriptor instead.
func (*RerunResult) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{21}
}
func (x *RerunResult) GetRerunStatus() RerunStatus {
if x != nil {
return x.RerunStatus
}
return RerunStatus_RERUN_STATUS_UNSPECIFIED
}
func (x *RerunResult) GetErrorMessage() string {
if x != nil {
return x.ErrorMessage
}
return ""
}
// Build failure record a failure in a build.
type BuildFailure struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Buildbucket id for the failed build
Bbid int64 `protobuf:"varint,1,opt,name=bbid,proto3" json:"bbid,omitempty"`
// failed_step_name should be 'compile' for compile failures.
FailedStepName string `protobuf:"bytes,2,opt,name=failed_step_name,json=failedStepName,proto3" json:"failed_step_name,omitempty"`
}
func (x *BuildFailure) Reset() {
*x = BuildFailure{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BuildFailure) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BuildFailure) ProtoMessage() {}
func (x *BuildFailure) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 BuildFailure.ProtoReflect.Descriptor instead.
func (*BuildFailure) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{22}
}
func (x *BuildFailure) GetBbid() int64 {
if x != nil {
return x.Bbid
}
return 0
}
func (x *BuildFailure) GetFailedStepName() string {
if x != nil {
return x.FailedStepName
}
return ""
}
// Information about a bug associated with a failure.
type BugInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Bug:
//
// *BugInfo_MonorailBugInfo
// *BugInfo_BuganizerBugInfo
Bug isBugInfo_Bug `protobuf_oneof:"bug"`
}
func (x *BugInfo) Reset() {
*x = BugInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BugInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BugInfo) ProtoMessage() {}
func (x *BugInfo) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 BugInfo.ProtoReflect.Descriptor instead.
func (*BugInfo) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{23}
}
func (m *BugInfo) GetBug() isBugInfo_Bug {
if m != nil {
return m.Bug
}
return nil
}
func (x *BugInfo) GetMonorailBugInfo() *MonorailBugInfo {
if x, ok := x.GetBug().(*BugInfo_MonorailBugInfo); ok {
return x.MonorailBugInfo
}
return nil
}
func (x *BugInfo) GetBuganizerBugInfo() *BuganizerBugInfo {
if x, ok := x.GetBug().(*BugInfo_BuganizerBugInfo); ok {
return x.BuganizerBugInfo
}
return nil
}
type isBugInfo_Bug interface {
isBugInfo_Bug()
}
type BugInfo_MonorailBugInfo struct {
MonorailBugInfo *MonorailBugInfo `protobuf:"bytes,1,opt,name=monorail_bug_info,json=monorailBugInfo,proto3,oneof"`
}
type BugInfo_BuganizerBugInfo struct {
BuganizerBugInfo *BuganizerBugInfo `protobuf:"bytes,2,opt,name=buganizer_bug_info,json=buganizerBugInfo,proto3,oneof"`
}
func (*BugInfo_MonorailBugInfo) isBugInfo_Bug() {}
func (*BugInfo_BuganizerBugInfo) isBugInfo_Bug() {}
type MonorailBugInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The project of the bug, e.g. chromium
Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
// Monorail bug ID
BugId int32 `protobuf:"varint,2,opt,name=bug_id,json=bugId,proto3" json:"bug_id,omitempty"`
}
func (x *MonorailBugInfo) Reset() {
*x = MonorailBugInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MonorailBugInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MonorailBugInfo) ProtoMessage() {}
func (x *MonorailBugInfo) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 MonorailBugInfo.ProtoReflect.Descriptor instead.
func (*MonorailBugInfo) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{24}
}
func (x *MonorailBugInfo) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
func (x *MonorailBugInfo) GetBugId() int32 {
if x != nil {
return x.BugId
}
return 0
}
type BuganizerBugInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Buganizer bug ID
BugId int64 `protobuf:"varint,1,opt,name=bug_id,json=bugId,proto3" json:"bug_id,omitempty"`
}
func (x *BuganizerBugInfo) Reset() {
*x = BuganizerBugInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BuganizerBugInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BuganizerBugInfo) ProtoMessage() {}
func (x *BuganizerBugInfo) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_bisection_proto_gofindit_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 BuganizerBugInfo.ProtoReflect.Descriptor instead.
func (*BuganizerBugInfo) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP(), []int{25}
}
func (x *BuganizerBugInfo) GetBugId() int64 {
if x != nil {
return x.BugId
}
return 0
}
var File_go_chromium_org_luci_bisection_proto_gofindit_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDesc = []byte{
0x0a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x1a,
0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
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, 0x3b, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f,
0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63,
0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65,
0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33,
0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0x3a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x6e, 0x61,
0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03,
0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64, 0x22,
0x53, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64,
0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46,
0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69,
0x6c, 0x75, 0x72, 0x65, 0x22, 0x47, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a,
0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x12, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x22, 0x51, 0x0a,
0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x22, 0x6e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c,
0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x66,
0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08,
0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74,
0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x22, 0x83, 0x01, 0x0a, 0x16, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0d, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x42, 0x75,
0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c,
0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x5f,
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x66,
0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x62,
0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6d, 0x0a, 0x17, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a,
0x0f, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, 0x6b, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24,
0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
0x69, 0x73, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69,
0x74, 0x2e, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x62, 0x75, 0x67, 0x49, 0x6e,
0x66, 0x6f, 0x22, 0xeb, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79,
0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x62, 0x62, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x62, 0x62, 0x69, 0x64,
0x12, 0x44, 0x0a, 0x0e, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d,
0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64,
0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65,
0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x0d, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73,
0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x5f,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67,
0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x52, 0x0b, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x22, 0x70, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
0x69, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x4e, 0x0a, 0x14, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73,
0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76,
0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52,
0x11, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x52,
0x75, 0x6e, 0x22, 0x88, 0x06, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12,
0x1f, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64,
0x12, 0x3b, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64,
0x69, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52,
0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x30, 0x0a,
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e,
0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62,
0x62, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x50,
0x61, 0x73, 0x73, 0x65, 0x64, 0x42, 0x62, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x69, 0x72,
0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x62, 0x69, 0x64, 0x18, 0x05,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65,
0x64, 0x42, 0x62, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 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, 0x0f, 0x6c, 0x61, 0x73,
0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08,
0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x65, 0x6e, 0x64, 0x54,
0x69, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x68, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63,
0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x48, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74,
0x69, 0x63, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x52, 0x0f, 0x68, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x12, 0x50, 0x0a, 0x12, 0x6e, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x52, 0x10, 0x6e, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b,
0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x49, 0x44, 0x52,
0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x12, 0x62, 0x75, 0x69, 0x6c,
0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e,
0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65,
0x52, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x79,
0x70, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x73, 0x18, 0x0f,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e,
0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x52, 0x08, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74,
0x73, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x22, 0x9b, 0x02,
0x0a, 0x07, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c,
0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c,
0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12,
0x21, 0x0a, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x69, 0x74,
0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0e, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x5f, 0x61, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x66,
0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x14, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x24, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x73, 0x70,
0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44,
0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x13, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x1a,
0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
0x75, 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65,
0x72, 0x75, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x66, 0x69,
0x6e, 0x64, 0x69, 0x74, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e,
0x52, 0x0c, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x12, 0x38,
0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e,
0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x0b, 0x70, 0x61, 0x72,
0x65, 0x6e, 0x74, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x22, 0xf5, 0x01, 0x0a, 0x17, 0x48, 0x65, 0x75,
0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e,
0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63,
0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e,
0x64, 0x69, 0x74, 0x2e, 0x48, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x73,
0x70, 0x65, 0x63, 0x74, 0x52, 0x08, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x73, 0x12, 0x39,
0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x09,
0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64,
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
0x22, 0x96, 0x03, 0x0a, 0x10, 0x48, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75,
0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73,
0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47,
0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x0d, 0x67, 0x69,
0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72,
0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f,
0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12,
0x24, 0x0a, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65,
0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65,
0x64, 0x12, 0x4b, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f,
0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f,
0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0f, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20,
0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x69, 0x74, 0x6c, 0x65,
0x12, 0x57, 0x0a, 0x14, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63,
0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74,
0x61, 0x69, 0x6c, 0x73, 0x52, 0x13, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xb9, 0x04, 0x0a, 0x18, 0x4e, 0x74,
0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69,
0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72,
0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54,
0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0f, 0x6c, 0x61, 0x73, 0x74,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65,
0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69,
0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x18, 0x05, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65,
0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d,
0x69, 0x74, 0x52, 0x07, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x76,
0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76,
0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x61, 0x69,
0x6e, 0x69, 0x6e, 0x67, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61,
0x6e, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x66, 0x69,
0x6e, 0x64, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
0x61, 0x6e, 0x67, 0x65, 0x52, 0x18, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4e,
0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23,
0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x09, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x53,
0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x72, 0x75,
0x6e, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x62, 0x6c, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74,
0x2e, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x09, 0x62, 0x6c, 0x61, 0x6d,
0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x09, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x4c, 0x69,
0x73, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x42,
0x6c, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x43, 0x6f,
0x6d, 0x6d, 0x69, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x6f, 0x0a,
0x15, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65,
0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1c,
0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b,
0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x22, 0xc7,
0x01, 0x0a, 0x0d, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74,
0x2e, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22,
0x0a, 0x0d, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x55,
0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x75, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x3b, 0x0a, 0x0b, 0x61,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x61, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x67,
0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x0b,
0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e,
0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0c,
0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
0x74, 0x52, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x2e,
0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x65, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6e, 0x75, 0x6d,
0x62, 0x65, 0x72, 0x4f, 0x66, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5,
0x02, 0x0a, 0x0b, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x12, 0x39,
0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x09,
0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x6c, 0x61, 0x73,
0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d,
0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x62, 0x69, 0x64,
0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x62, 0x62, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07,
0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,
0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0c,
0x72, 0x65, 0x72, 0x75, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x52, 0x65,
0x72, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x72, 0x65, 0x72, 0x75, 0x6e,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6c, 0x0a, 0x0b, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x5f, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x67, 0x6f,
0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73,
0x73, 0x61, 0x67, 0x65, 0x22, 0x4c, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69,
0x6c, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x04, 0x62, 0x62, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c,
0x65, 0x64, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x61,
0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x47,
0x0a, 0x11, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x62, 0x75, 0x67, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x66, 0x69,
0x6e, 0x64, 0x69, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x42, 0x75, 0x67,
0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c,
0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x12, 0x62, 0x75, 0x67, 0x61, 0x6e,
0x69, 0x7a, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x42,
0x75, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x48,
0x00, 0x52, 0x10, 0x62, 0x75, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x42, 0x75, 0x67, 0x49,
0x6e, 0x66, 0x6f, 0x42, 0x05, 0x0a, 0x03, 0x62, 0x75, 0x67, 0x22, 0x42, 0x0a, 0x0f, 0x4d, 0x6f,
0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a,
0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x67, 0x5f, 0x69,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x75, 0x67, 0x49, 0x64, 0x22, 0x29,
0x0a, 0x10, 0x42, 0x75, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x42, 0x75, 0x67, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x75, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x62, 0x75, 0x67, 0x49, 0x64, 0x2a, 0x81, 0x01, 0x0a, 0x0e, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b,
0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a,
0x07, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55,
0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4f, 0x55, 0x4e, 0x44,
0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x54, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x04,
0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x53,
0x55, 0x53, 0x50, 0x45, 0x43, 0x54, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x06, 0x2a, 0x5e, 0x0a,
0x11, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x5f, 0x52,
0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54,
0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12,
0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xc8, 0x01,
0x0a, 0x11, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x55, 0x4c, 0x50, 0x52, 0x49, 0x54, 0x5f, 0x41,
0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x41,
0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x55, 0x4c, 0x50, 0x52,
0x49, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x44,
0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x56, 0x45, 0x52, 0x54, 0x5f, 0x43, 0x4c, 0x5f,
0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x55, 0x4c,
0x50, 0x52, 0x49, 0x54, 0x5f, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x45,
0x44, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45,
0x4e, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x58, 0x49, 0x53, 0x54, 0x49,
0x4e, 0x47, 0x5f, 0x52, 0x45, 0x56, 0x45, 0x52, 0x54, 0x5f, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x4d,
0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x06, 0x2a, 0xb5, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x72,
0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x52, 0x55,
0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x52, 0x55, 0x4e, 0x5f,
0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45,
0x53, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54,
0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a,
0x13, 0x52, 0x45, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41,
0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x52, 0x55, 0x4e, 0x5f,
0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x5f, 0x46, 0x41, 0x49,
0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x52, 0x55, 0x4e, 0x5f, 0x53,
0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x05,
0x2a, 0x61, 0x0a, 0x16, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
0x64, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x55,
0x53, 0x50, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x44, 0x45, 0x4e, 0x43, 0x45,
0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a,
0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47,
0x48, 0x10, 0x03, 0x2a, 0x63, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c,
0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x49, 0x4c, 0x44,
0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43,
0x4f, 0x4d, 0x50, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54,
0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x10, 0x03, 0x12, 0x09, 0x0a,
0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x04, 0x32, 0x92, 0x03, 0x0a, 0x0f, 0x47, 0x6f, 0x46,
0x69, 0x6e, 0x64, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3f, 0x0a, 0x0b,
0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x6f,
0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x66, 0x69,
0x6e, 0x64, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x50, 0x0a,
0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1e,
0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f,
0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x4d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12,
0x1d, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e,
0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56,
0x0a, 0x0f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
0x73, 0x12, 0x20, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x69,
0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x54,
0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e,
0x64, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x66, 0x69,
0x6e, 0x64, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x32, 0x81, 0x01,
0x0a, 0x12, 0x47, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x42, 0x6f, 0x74, 0x53, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x27,
0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64,
0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x67, 0x6f, 0x66, 0x69, 0x6e, 0x64,
0x69, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescData = file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDesc
)
func file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescOnce.Do(func() {
file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescData)
})
return file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDescData
}
var file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
var file_go_chromium_org_luci_bisection_proto_gofindit_proto_goTypes = []interface{}{
(AnalysisStatus)(0), // 0: gofindit.AnalysisStatus
(AnalysisRunStatus)(0), // 1: gofindit.AnalysisRunStatus
(CulpritActionType)(0), // 2: gofindit.CulpritActionType
(RerunStatus)(0), // 3: gofindit.RerunStatus
(SuspectConfidenceLevel)(0), // 4: gofindit.SuspectConfidenceLevel
(BuildFailureType)(0), // 5: gofindit.BuildFailureType
(*GetAnalysisRequest)(nil), // 6: gofindit.GetAnalysisRequest
(*QueryAnalysisRequest)(nil), // 7: gofindit.QueryAnalysisRequest
(*QueryAnalysisResponse)(nil), // 8: gofindit.QueryAnalysisResponse
(*ListAnalysesRequest)(nil), // 9: gofindit.ListAnalysesRequest
(*ListAnalysesResponse)(nil), // 10: gofindit.ListAnalysesResponse
(*TriggerAnalysisRequest)(nil), // 11: gofindit.TriggerAnalysisRequest
(*TriggerAnalysisResponse)(nil), // 12: gofindit.TriggerAnalysisResponse
(*UpdateAnalysisRequest)(nil), // 13: gofindit.UpdateAnalysisRequest
(*UpdateAnalysisProgressRequest)(nil), // 14: gofindit.UpdateAnalysisProgressRequest
(*UpdateAnalysisProgressResponse)(nil), // 15: gofindit.UpdateAnalysisProgressResponse
(*Analysis)(nil), // 16: gofindit.Analysis
(*Culprit)(nil), // 17: gofindit.Culprit
(*SuspectVerificationDetails)(nil), // 18: gofindit.SuspectVerificationDetails
(*HeuristicAnalysisResult)(nil), // 19: gofindit.HeuristicAnalysisResult
(*HeuristicSuspect)(nil), // 20: gofindit.HeuristicSuspect
(*NthSectionAnalysisResult)(nil), // 21: gofindit.NthSectionAnalysisResult
(*BlameList)(nil), // 22: gofindit.BlameList
(*BlameListSingleCommit)(nil), // 23: gofindit.BlameListSingleCommit
(*CulpritAction)(nil), // 24: gofindit.CulpritAction
(*RegressionRange)(nil), // 25: gofindit.RegressionRange
(*SingleRerun)(nil), // 26: gofindit.SingleRerun
(*RerunResult)(nil), // 27: gofindit.RerunResult
(*BuildFailure)(nil), // 28: gofindit.BuildFailure
(*BugInfo)(nil), // 29: gofindit.BugInfo
(*MonorailBugInfo)(nil), // 30: gofindit.MonorailBugInfo
(*BuganizerBugInfo)(nil), // 31: gofindit.BuganizerBugInfo
(*proto.GitilesCommit)(nil), // 32: buildbucket.v2.GitilesCommit
(*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp
(*proto.BuilderID)(nil), // 34: buildbucket.v2.BuilderID
}
var file_go_chromium_org_luci_bisection_proto_gofindit_proto_depIdxs = []int32{
28, // 0: gofindit.QueryAnalysisRequest.build_failure:type_name -> gofindit.BuildFailure
16, // 1: gofindit.QueryAnalysisResponse.analyses:type_name -> gofindit.Analysis
16, // 2: gofindit.ListAnalysesResponse.analyses:type_name -> gofindit.Analysis
28, // 3: gofindit.TriggerAnalysisRequest.build_failure:type_name -> gofindit.BuildFailure
29, // 4: gofindit.TriggerAnalysisRequest.bug_info:type_name -> gofindit.BugInfo
16, // 5: gofindit.TriggerAnalysisResponse.result:type_name -> gofindit.Analysis
29, // 6: gofindit.UpdateAnalysisRequest.bug_info:type_name -> gofindit.BugInfo
32, // 7: gofindit.UpdateAnalysisProgressRequest.gitiles_commit:type_name -> buildbucket.v2.GitilesCommit
27, // 8: gofindit.UpdateAnalysisProgressRequest.rerun_result:type_name -> gofindit.RerunResult
32, // 9: gofindit.UpdateAnalysisProgressResponse.next_revision_to_run:type_name -> buildbucket.v2.GitilesCommit
28, // 10: gofindit.Analysis.build_failure:type_name -> gofindit.BuildFailure
0, // 11: gofindit.Analysis.status:type_name -> gofindit.AnalysisStatus
33, // 12: gofindit.Analysis.created_time:type_name -> google.protobuf.Timestamp
33, // 13: gofindit.Analysis.last_updated_time:type_name -> google.protobuf.Timestamp
33, // 14: gofindit.Analysis.end_time:type_name -> google.protobuf.Timestamp
19, // 15: gofindit.Analysis.heuristic_result:type_name -> gofindit.HeuristicAnalysisResult
21, // 16: gofindit.Analysis.nth_section_result:type_name -> gofindit.NthSectionAnalysisResult
34, // 17: gofindit.Analysis.builder:type_name -> buildbucket.v2.BuilderID
5, // 18: gofindit.Analysis.build_failure_type:type_name -> gofindit.BuildFailureType
17, // 19: gofindit.Analysis.culprits:type_name -> gofindit.Culprit
32, // 20: gofindit.Culprit.commit:type_name -> buildbucket.v2.GitilesCommit
24, // 21: gofindit.Culprit.culprit_action:type_name -> gofindit.CulpritAction
18, // 22: gofindit.Culprit.verification_details:type_name -> gofindit.SuspectVerificationDetails
26, // 23: gofindit.SuspectVerificationDetails.suspect_rerun:type_name -> gofindit.SingleRerun
26, // 24: gofindit.SuspectVerificationDetails.parent_rerun:type_name -> gofindit.SingleRerun
0, // 25: gofindit.HeuristicAnalysisResult.status:type_name -> gofindit.AnalysisStatus
20, // 26: gofindit.HeuristicAnalysisResult.suspects:type_name -> gofindit.HeuristicSuspect
33, // 27: gofindit.HeuristicAnalysisResult.start_time:type_name -> google.protobuf.Timestamp
33, // 28: gofindit.HeuristicAnalysisResult.end_time:type_name -> google.protobuf.Timestamp
32, // 29: gofindit.HeuristicSuspect.gitiles_commit:type_name -> buildbucket.v2.GitilesCommit
4, // 30: gofindit.HeuristicSuspect.confidence_level:type_name -> gofindit.SuspectConfidenceLevel
18, // 31: gofindit.HeuristicSuspect.verification_details:type_name -> gofindit.SuspectVerificationDetails
0, // 32: gofindit.NthSectionAnalysisResult.status:type_name -> gofindit.AnalysisStatus
33, // 33: gofindit.NthSectionAnalysisResult.start_time:type_name -> google.protobuf.Timestamp
33, // 34: gofindit.NthSectionAnalysisResult.last_updated_time:type_name -> google.protobuf.Timestamp
33, // 35: gofindit.NthSectionAnalysisResult.end_time:type_name -> google.protobuf.Timestamp
32, // 36: gofindit.NthSectionAnalysisResult.culprit:type_name -> buildbucket.v2.GitilesCommit
25, // 37: gofindit.NthSectionAnalysisResult.remainingNthSectionRange:type_name -> gofindit.RegressionRange
26, // 38: gofindit.NthSectionAnalysisResult.reruns:type_name -> gofindit.SingleRerun
22, // 39: gofindit.NthSectionAnalysisResult.blameList:type_name -> gofindit.BlameList
23, // 40: gofindit.BlameList.commits:type_name -> gofindit.BlameListSingleCommit
2, // 41: gofindit.CulpritAction.action_type:type_name -> gofindit.CulpritActionType
33, // 42: gofindit.CulpritAction.action_time:type_name -> google.protobuf.Timestamp
32, // 43: gofindit.RegressionRange.last_passed:type_name -> buildbucket.v2.GitilesCommit
32, // 44: gofindit.RegressionRange.first_failed:type_name -> buildbucket.v2.GitilesCommit
33, // 45: gofindit.SingleRerun.start_time:type_name -> google.protobuf.Timestamp
33, // 46: gofindit.SingleRerun.last_updated_time:type_name -> google.protobuf.Timestamp
33, // 47: gofindit.SingleRerun.end_time:type_name -> google.protobuf.Timestamp
27, // 48: gofindit.SingleRerun.rerun_result:type_name -> gofindit.RerunResult
3, // 49: gofindit.RerunResult.rerun_status:type_name -> gofindit.RerunStatus
30, // 50: gofindit.BugInfo.monorail_bug_info:type_name -> gofindit.MonorailBugInfo
31, // 51: gofindit.BugInfo.buganizer_bug_info:type_name -> gofindit.BuganizerBugInfo
6, // 52: gofindit.GoFinditService.GetAnalysis:input_type -> gofindit.GetAnalysisRequest
7, // 53: gofindit.GoFinditService.QueryAnalysis:input_type -> gofindit.QueryAnalysisRequest
9, // 54: gofindit.GoFinditService.ListAnalyses:input_type -> gofindit.ListAnalysesRequest
11, // 55: gofindit.GoFinditService.TriggerAnalysis:input_type -> gofindit.TriggerAnalysisRequest
13, // 56: gofindit.GoFinditService.UpdateAnalysis:input_type -> gofindit.UpdateAnalysisRequest
14, // 57: gofindit.GoFinditBotService.UpdateAnalysisProgress:input_type -> gofindit.UpdateAnalysisProgressRequest
16, // 58: gofindit.GoFinditService.GetAnalysis:output_type -> gofindit.Analysis
8, // 59: gofindit.GoFinditService.QueryAnalysis:output_type -> gofindit.QueryAnalysisResponse
10, // 60: gofindit.GoFinditService.ListAnalyses:output_type -> gofindit.ListAnalysesResponse
12, // 61: gofindit.GoFinditService.TriggerAnalysis:output_type -> gofindit.TriggerAnalysisResponse
16, // 62: gofindit.GoFinditService.UpdateAnalysis:output_type -> gofindit.Analysis
15, // 63: gofindit.GoFinditBotService.UpdateAnalysisProgress:output_type -> gofindit.UpdateAnalysisProgressResponse
58, // [58:64] is the sub-list for method output_type
52, // [52:58] is the sub-list for method input_type
52, // [52:52] is the sub-list for extension type_name
52, // [52:52] is the sub-list for extension extendee
0, // [0:52] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_bisection_proto_gofindit_proto_init() }
func file_go_chromium_org_luci_bisection_proto_gofindit_proto_init() {
if File_go_chromium_org_luci_bisection_proto_gofindit_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAnalysisRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryAnalysisRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryAnalysisResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAnalysesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAnalysesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TriggerAnalysisRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TriggerAnalysisResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateAnalysisRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateAnalysisProgressRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateAnalysisProgressResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Analysis); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Culprit); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SuspectVerificationDetails); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HeuristicAnalysisResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HeuristicSuspect); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NthSectionAnalysisResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BlameList); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BlameListSingleCommit); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CulpritAction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RegressionRange); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SingleRerun); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RerunResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BuildFailure); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BugInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MonorailBugInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BuganizerBugInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes[23].OneofWrappers = []interface{}{
(*BugInfo_MonorailBugInfo)(nil),
(*BugInfo_BuganizerBugInfo)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDesc,
NumEnums: 6,
NumMessages: 26,
NumExtensions: 0,
NumServices: 2,
},
GoTypes: file_go_chromium_org_luci_bisection_proto_gofindit_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_bisection_proto_gofindit_proto_depIdxs,
EnumInfos: file_go_chromium_org_luci_bisection_proto_gofindit_proto_enumTypes,
MessageInfos: file_go_chromium_org_luci_bisection_proto_gofindit_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_bisection_proto_gofindit_proto = out.File
file_go_chromium_org_luci_bisection_proto_gofindit_proto_rawDesc = nil
file_go_chromium_org_luci_bisection_proto_gofindit_proto_goTypes = nil
file_go_chromium_org_luci_bisection_proto_gofindit_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
// GoFinditServiceClient is the client API for GoFinditService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type GoFinditServiceClient interface {
// GetAnalysis is used to get an analysis by analysis ID.
GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error)
// QueryAnalysis is used to query for the status and result of analyses.
// The user can pass in the failure information to retrieve the analyses.
QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error)
// ListAnalyses is used to get existing analyses.
// Most recently created analyses are returned first.
ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error)
// TriggerAnalysis is used to trigger an analysis for a failed build.
// This RPC is called from a LUCI Bisection client like SoM or Milo.
// If an existing analysis is found for the same failure, no new analysis
// will be triggered.
TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error)
// Update the information of an analysis.
// At the mean time, it is only used for update the bugs associated with an
// analysis.
// Mainly used by SoM, since LUCI Bisection does not have any information about
// bugs created by sheriffs.
UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error)
}
type goFinditServicePRPCClient struct {
client *prpc.Client
}
func NewGoFinditServicePRPCClient(client *prpc.Client) GoFinditServiceClient {
return &goFinditServicePRPCClient{client}
}
func (c *goFinditServicePRPCClient) GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
out := new(Analysis)
err := c.client.Call(ctx, "gofindit.GoFinditService", "GetAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServicePRPCClient) QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error) {
out := new(QueryAnalysisResponse)
err := c.client.Call(ctx, "gofindit.GoFinditService", "QueryAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServicePRPCClient) ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error) {
out := new(ListAnalysesResponse)
err := c.client.Call(ctx, "gofindit.GoFinditService", "ListAnalyses", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServicePRPCClient) TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error) {
out := new(TriggerAnalysisResponse)
err := c.client.Call(ctx, "gofindit.GoFinditService", "TriggerAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServicePRPCClient) UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
out := new(Analysis)
err := c.client.Call(ctx, "gofindit.GoFinditService", "UpdateAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
type goFinditServiceClient struct {
cc grpc.ClientConnInterface
}
func NewGoFinditServiceClient(cc grpc.ClientConnInterface) GoFinditServiceClient {
return &goFinditServiceClient{cc}
}
func (c *goFinditServiceClient) GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
out := new(Analysis)
err := c.cc.Invoke(ctx, "/gofindit.GoFinditService/GetAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServiceClient) QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error) {
out := new(QueryAnalysisResponse)
err := c.cc.Invoke(ctx, "/gofindit.GoFinditService/QueryAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServiceClient) ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error) {
out := new(ListAnalysesResponse)
err := c.cc.Invoke(ctx, "/gofindit.GoFinditService/ListAnalyses", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServiceClient) TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error) {
out := new(TriggerAnalysisResponse)
err := c.cc.Invoke(ctx, "/gofindit.GoFinditService/TriggerAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *goFinditServiceClient) UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
out := new(Analysis)
err := c.cc.Invoke(ctx, "/gofindit.GoFinditService/UpdateAnalysis", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// GoFinditServiceServer is the server API for GoFinditService service.
type GoFinditServiceServer interface {
// GetAnalysis is used to get an analysis by analysis ID.
GetAnalysis(context.Context, *GetAnalysisRequest) (*Analysis, error)
// QueryAnalysis is used to query for the status and result of analyses.
// The user can pass in the failure information to retrieve the analyses.
QueryAnalysis(context.Context, *QueryAnalysisRequest) (*QueryAnalysisResponse, error)
// ListAnalyses is used to get existing analyses.
// Most recently created analyses are returned first.
ListAnalyses(context.Context, *ListAnalysesRequest) (*ListAnalysesResponse, error)
// TriggerAnalysis is used to trigger an analysis for a failed build.
// This RPC is called from a LUCI Bisection client like SoM or Milo.
// If an existing analysis is found for the same failure, no new analysis
// will be triggered.
TriggerAnalysis(context.Context, *TriggerAnalysisRequest) (*TriggerAnalysisResponse, error)
// Update the information of an analysis.
// At the mean time, it is only used for update the bugs associated with an
// analysis.
// Mainly used by SoM, since LUCI Bisection does not have any information about
// bugs created by sheriffs.
UpdateAnalysis(context.Context, *UpdateAnalysisRequest) (*Analysis, error)
}
// UnimplementedGoFinditServiceServer can be embedded to have forward compatible implementations.
type UnimplementedGoFinditServiceServer struct {
}
func (*UnimplementedGoFinditServiceServer) GetAnalysis(context.Context, *GetAnalysisRequest) (*Analysis, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetAnalysis not implemented")
}
func (*UnimplementedGoFinditServiceServer) QueryAnalysis(context.Context, *QueryAnalysisRequest) (*QueryAnalysisResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method QueryAnalysis not implemented")
}
func (*UnimplementedGoFinditServiceServer) ListAnalyses(context.Context, *ListAnalysesRequest) (*ListAnalysesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListAnalyses not implemented")
}
func (*UnimplementedGoFinditServiceServer) TriggerAnalysis(context.Context, *TriggerAnalysisRequest) (*TriggerAnalysisResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method TriggerAnalysis not implemented")
}
func (*UnimplementedGoFinditServiceServer) UpdateAnalysis(context.Context, *UpdateAnalysisRequest) (*Analysis, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateAnalysis not implemented")
}
func RegisterGoFinditServiceServer(s prpc.Registrar, srv GoFinditServiceServer) {
s.RegisterService(&_GoFinditService_serviceDesc, srv)
}
func _GoFinditService_GetAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetAnalysisRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GoFinditServiceServer).GetAnalysis(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gofindit.GoFinditService/GetAnalysis",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GoFinditServiceServer).GetAnalysis(ctx, req.(*GetAnalysisRequest))
}
return interceptor(ctx, in, info, handler)
}
func _GoFinditService_QueryAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryAnalysisRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GoFinditServiceServer).QueryAnalysis(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gofindit.GoFinditService/QueryAnalysis",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GoFinditServiceServer).QueryAnalysis(ctx, req.(*QueryAnalysisRequest))
}
return interceptor(ctx, in, info, handler)
}
func _GoFinditService_ListAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListAnalysesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GoFinditServiceServer).ListAnalyses(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gofindit.GoFinditService/ListAnalyses",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GoFinditServiceServer).ListAnalyses(ctx, req.(*ListAnalysesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _GoFinditService_TriggerAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TriggerAnalysisRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GoFinditServiceServer).TriggerAnalysis(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gofindit.GoFinditService/TriggerAnalysis",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GoFinditServiceServer).TriggerAnalysis(ctx, req.(*TriggerAnalysisRequest))
}
return interceptor(ctx, in, info, handler)
}
func _GoFinditService_UpdateAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateAnalysisRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GoFinditServiceServer).UpdateAnalysis(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gofindit.GoFinditService/UpdateAnalysis",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GoFinditServiceServer).UpdateAnalysis(ctx, req.(*UpdateAnalysisRequest))
}
return interceptor(ctx, in, info, handler)
}
var _GoFinditService_serviceDesc = grpc.ServiceDesc{
ServiceName: "gofindit.GoFinditService",
HandlerType: (*GoFinditServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetAnalysis",
Handler: _GoFinditService_GetAnalysis_Handler,
},
{
MethodName: "QueryAnalysis",
Handler: _GoFinditService_QueryAnalysis_Handler,
},
{
MethodName: "ListAnalyses",
Handler: _GoFinditService_ListAnalyses_Handler,
},
{
MethodName: "TriggerAnalysis",
Handler: _GoFinditService_TriggerAnalysis_Handler,
},
{
MethodName: "UpdateAnalysis",
Handler: _GoFinditService_UpdateAnalysis_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "go.chromium.org/luci/bisection/proto/gofindit.proto",
}
// GoFinditBotServiceClient is the client API for GoFinditBotService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type GoFinditBotServiceClient interface {
// RPC called from bots to update the analysis progress
UpdateAnalysisProgress(ctx context.Context, in *UpdateAnalysisProgressRequest, opts ...grpc.CallOption) (*UpdateAnalysisProgressResponse, error)
}
type goFinditBotServicePRPCClient struct {
client *prpc.Client
}
func NewGoFinditBotServicePRPCClient(client *prpc.Client) GoFinditBotServiceClient {
return &goFinditBotServicePRPCClient{client}
}
func (c *goFinditBotServicePRPCClient) UpdateAnalysisProgress(ctx context.Context, in *UpdateAnalysisProgressRequest, opts ...grpc.CallOption) (*UpdateAnalysisProgressResponse, error) {
out := new(UpdateAnalysisProgressResponse)
err := c.client.Call(ctx, "gofindit.GoFinditBotService", "UpdateAnalysisProgress", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
type goFinditBotServiceClient struct {
cc grpc.ClientConnInterface
}
func NewGoFinditBotServiceClient(cc grpc.ClientConnInterface) GoFinditBotServiceClient {
return &goFinditBotServiceClient{cc}
}
func (c *goFinditBotServiceClient) UpdateAnalysisProgress(ctx context.Context, in *UpdateAnalysisProgressRequest, opts ...grpc.CallOption) (*UpdateAnalysisProgressResponse, error) {
out := new(UpdateAnalysisProgressResponse)
err := c.cc.Invoke(ctx, "/gofindit.GoFinditBotService/UpdateAnalysisProgress", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// GoFinditBotServiceServer is the server API for GoFinditBotService service.
type GoFinditBotServiceServer interface {
// RPC called from bots to update the analysis progress
UpdateAnalysisProgress(context.Context, *UpdateAnalysisProgressRequest) (*UpdateAnalysisProgressResponse, error)
}
// UnimplementedGoFinditBotServiceServer can be embedded to have forward compatible implementations.
type UnimplementedGoFinditBotServiceServer struct {
}
func (*UnimplementedGoFinditBotServiceServer) UpdateAnalysisProgress(context.Context, *UpdateAnalysisProgressRequest) (*UpdateAnalysisProgressResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateAnalysisProgress not implemented")
}
func RegisterGoFinditBotServiceServer(s prpc.Registrar, srv GoFinditBotServiceServer) {
s.RegisterService(&_GoFinditBotService_serviceDesc, srv)
}
func _GoFinditBotService_UpdateAnalysisProgress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateAnalysisProgressRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GoFinditBotServiceServer).UpdateAnalysisProgress(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gofindit.GoFinditBotService/UpdateAnalysisProgress",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GoFinditBotServiceServer).UpdateAnalysisProgress(ctx, req.(*UpdateAnalysisProgressRequest))
}
return interceptor(ctx, in, info, handler)
}
var _GoFinditBotService_serviceDesc = grpc.ServiceDesc{
ServiceName: "gofindit.GoFinditBotService",
HandlerType: (*GoFinditBotServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "UpdateAnalysisProgress",
Handler: _GoFinditBotService_UpdateAnalysisProgress_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "go.chromium.org/luci/bisection/proto/gofindit.proto",
}