blob: cfad357ef31d0bc46f0bda2623b4cbd1d5f7db6e [file] [log] [blame]
// Copyright 2020 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.0
// protoc v3.17.3
// source: go.chromium.org/luci/cv/internal/changelist/storage.proto
package changelist
import (
gerrit "go.chromium.org/luci/common/proto/gerrit"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type DepKind int32
const (
DepKind_DEP_KIND_UNSPECIFIED DepKind = 0
// Dep MUST be patched in / submitted before the dependent CL.
DepKind_HARD DepKind = 1
// Dep SHOULD be patched in / submitted before the dependent CL,
// but doesn't have to be.
DepKind_SOFT DepKind = 2
)
// Enum value maps for DepKind.
var (
DepKind_name = map[int32]string{
0: "DEP_KIND_UNSPECIFIED",
1: "HARD",
2: "SOFT",
}
DepKind_value = map[string]int32{
"DEP_KIND_UNSPECIFIED": 0,
"HARD": 1,
"SOFT": 2,
}
)
func (x DepKind) Enum() *DepKind {
p := new(DepKind)
*p = x
return p
}
func (x DepKind) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (DepKind) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes[0].Descriptor()
}
func (DepKind) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes[0]
}
func (x DepKind) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use DepKind.Descriptor instead.
func (DepKind) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0}
}
// Snapshot stores a snapshot of CL info as seen by CV at a certain time.
//
// When stored in CL entity, represents latest known Gerrit data.
// When stored in RunCL entity, represents data pertaining to a fixed patchset.
type Snapshot struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The timestamp from external system.
// Used to determine if re-querying external system is needed.
ExternalUpdateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=external_update_time,json=externalUpdateTime,proto3" json:"external_update_time,omitempty"`
// LUCI project in the context of which this snapshot was saved.
//
// Since a CL isn't a resource of CV, CV can't infer whether specific LUCI
// project has access to a CL w/o re-querying Gerrit and effectively
// recomputing the snapshot.
LuciProject string `protobuf:"bytes,2,opt,name=luci_project,json=luciProject,proto3" json:"luci_project,omitempty"`
// Resolved dependencies of a CL.
Deps []*Dep `protobuf:"bytes,3,rep,name=deps,proto3" json:"deps,omitempty"`
// Patchset is incremental number of the latest patchset (aka revision).
Patchset int32 `protobuf:"varint,4,opt,name=patchset,proto3" json:"patchset,omitempty"`
// MinEquivalentPatchset is the smallest and hence the earliest patchset
// which is code-wise equivalent to the latest one.
//
// See gerrit.EquivalentPatchsetRange function for details.
//
// CV tracks this to determine which prior tryjobs can be re-used and which
// can be canceled.
MinEquivalentPatchset int32 `protobuf:"varint,5,opt,name=min_equivalent_patchset,json=minEquivalentPatchset,proto3" json:"min_equivalent_patchset,omitempty"`
// If set, indicates problems while ingesting CL into CV, which ought to be
// communicated back to user.
Errors []*CLError `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors,omitempty"`
// Outdated if set means Snapshot must be considered likely outdated due to
// recent CV mutations.
//
// In particular, Project Manager does not act on the CLs with .Outdated set.
Outdated *Snapshot_Outdated `protobuf:"bytes,7,opt,name=outdated,proto3" json:"outdated,omitempty"`
// Metadata is an ordered list of key-value pairs, which may later be
// interpreted by CV guts.
//
// For example,
// [("No-Tree-Checks", "True"), ("NOTRY", "TRUE")].
//
// In case of Gerrit CLs, these are extracted from CL descriptions,
// The Git-Footer-Style keys are normalized.
// The values are stripped from beginning and trailing whitespace.
Metadata []*StringPair `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty"`
// CL-kind specific data.
//
// Types that are assignable to Kind:
// *Snapshot_Gerrit
Kind isSnapshot_Kind `protobuf_oneof:"kind"`
}
func (x *Snapshot) Reset() {
*x = Snapshot{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Snapshot) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Snapshot) ProtoMessage() {}
func (x *Snapshot) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 Snapshot.ProtoReflect.Descriptor instead.
func (*Snapshot) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0}
}
func (x *Snapshot) GetExternalUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.ExternalUpdateTime
}
return nil
}
func (x *Snapshot) GetLuciProject() string {
if x != nil {
return x.LuciProject
}
return ""
}
func (x *Snapshot) GetDeps() []*Dep {
if x != nil {
return x.Deps
}
return nil
}
func (x *Snapshot) GetPatchset() int32 {
if x != nil {
return x.Patchset
}
return 0
}
func (x *Snapshot) GetMinEquivalentPatchset() int32 {
if x != nil {
return x.MinEquivalentPatchset
}
return 0
}
func (x *Snapshot) GetErrors() []*CLError {
if x != nil {
return x.Errors
}
return nil
}
func (x *Snapshot) GetOutdated() *Snapshot_Outdated {
if x != nil {
return x.Outdated
}
return nil
}
func (x *Snapshot) GetMetadata() []*StringPair {
if x != nil {
return x.Metadata
}
return nil
}
func (m *Snapshot) GetKind() isSnapshot_Kind {
if m != nil {
return m.Kind
}
return nil
}
func (x *Snapshot) GetGerrit() *Gerrit {
if x, ok := x.GetKind().(*Snapshot_Gerrit); ok {
return x.Gerrit
}
return nil
}
type isSnapshot_Kind interface {
isSnapshot_Kind()
}
type Snapshot_Gerrit struct {
Gerrit *Gerrit `protobuf:"bytes,11,opt,name=gerrit,proto3,oneof"`
}
func (*Snapshot_Gerrit) isSnapshot_Kind() {}
type Dep struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// CLID is internal CV ID of a CL which is the dependency.
Clid int64 `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"`
Kind DepKind `protobuf:"varint,2,opt,name=kind,proto3,enum=cv.internal.changelist.DepKind" json:"kind,omitempty"`
}
func (x *Dep) Reset() {
*x = Dep{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Dep) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Dep) ProtoMessage() {}
func (x *Dep) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 Dep.ProtoReflect.Descriptor instead.
func (*Dep) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{1}
}
func (x *Dep) GetClid() int64 {
if x != nil {
return x.Clid
}
return 0
}
func (x *Dep) GetKind() DepKind {
if x != nil {
return x.Kind
}
return DepKind_DEP_KIND_UNSPECIFIED
}
type Gerrit struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Gerrit host.
Host string `protobuf:"bytes,5,opt,name=host,proto3" json:"host,omitempty"`
// Info contains subset of ChangeInfo listed below.
//
// NOTE: keep this list in sync with RemoveUnusedGerritInfo() function.
// * number
// * owner
// * id
// * email (may be not set)
// * project
// * ref
// * status
// * current_revision
// * revisions
// * kind
// * number
// * ref
// * created
// * commit (for current_revision only)
// * message (current CL description)
// * labels
// * optional
// * all (only if vote != 0)
// * user
// * id
// * email (may be not set)
// * value
// * messages
// * id
// * date
// * message
// * author
// * id
// * realauthor
// * id
// * updated
// * created
Info *gerrit.ChangeInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
// Files are filenames touched in the current revision.
//
// It's derived from gerrit.ListFilesResponse, see
// https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-files.
Files []string `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"`
// Git dependencies of the current revision.
GitDeps []*GerritGitDep `protobuf:"bytes,3,rep,name=git_deps,json=gitDeps,proto3" json:"git_deps,omitempty"`
// Free-form dependencies. Currently, sourced from CQ-Depend footers.
// In the future, this may be derived from Gerrit hashtags, topics, or other
// mechanisms.
SoftDeps []*GerritSoftDep `protobuf:"bytes,4,rep,name=soft_deps,json=softDeps,proto3" json:"soft_deps,omitempty"`
}
func (x *Gerrit) Reset() {
*x = Gerrit{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Gerrit) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Gerrit) ProtoMessage() {}
func (x *Gerrit) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 Gerrit.ProtoReflect.Descriptor instead.
func (*Gerrit) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{2}
}
func (x *Gerrit) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
func (x *Gerrit) GetInfo() *gerrit.ChangeInfo {
if x != nil {
return x.Info
}
return nil
}
func (x *Gerrit) GetFiles() []string {
if x != nil {
return x.Files
}
return nil
}
func (x *Gerrit) GetGitDeps() []*GerritGitDep {
if x != nil {
return x.GitDeps
}
return nil
}
func (x *Gerrit) GetSoftDeps() []*GerritSoftDep {
if x != nil {
return x.SoftDeps
}
return nil
}
// GerritGitDep is a dependency discovered via Git child->parent chain for one Gerrit CL.
type GerritGitDep struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Gerrit Change number.
Change int64 `protobuf:"varint,1,opt,name=change,proto3" json:"change,omitempty"`
// Immediate is set iff this dep is an immediate parent of the Gerrit CL.
//
// Immediate dep must be submitted before its child.
// Non-immediate CLs don't necessarily have to be submitted before:
// for example, for a chain <base> <- A1 <- B1 <- C1 <- D1
// D1's deps are [A,B,C] but only C is immediate, and 1 stands for patchset.
// Developer may then swap B,C without re-uploading D (say, to avoid
// patchset churn), resulting in a new logical chain:
// <base> <- A1 <- C2 <- B2
// \
// <- B1 <- C1 <- D1
//
// In this case, Gerrit's related changes for D1 will still return A1,B1,C1,
// which CV interprets as C must be landed before D, while B and A should
// be landed before D.
Immediate bool `protobuf:"varint,2,opt,name=immediate,proto3" json:"immediate,omitempty"`
}
func (x *GerritGitDep) Reset() {
*x = GerritGitDep{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GerritGitDep) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GerritGitDep) ProtoMessage() {}
func (x *GerritGitDep) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 GerritGitDep.ProtoReflect.Descriptor instead.
func (*GerritGitDep) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{3}
}
func (x *GerritGitDep) GetChange() int64 {
if x != nil {
return x.Change
}
return 0
}
func (x *GerritGitDep) GetImmediate() bool {
if x != nil {
return x.Immediate
}
return false
}
type GerritSoftDep struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Gerrit host.
Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
// Gerrit change number.
Change int64 `protobuf:"varint,2,opt,name=change,proto3" json:"change,omitempty"`
}
func (x *GerritSoftDep) Reset() {
*x = GerritSoftDep{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GerritSoftDep) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GerritSoftDep) ProtoMessage() {}
func (x *GerritSoftDep) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 GerritSoftDep.ProtoReflect.Descriptor instead.
func (*GerritSoftDep) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{4}
}
func (x *GerritSoftDep) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
func (x *GerritSoftDep) GetChange() int64 {
if x != nil {
return x.Change
}
return 0
}
// ApplicableConfig keeps track of configs applicable to a CL.
//
// This is computed based on known set of LUCI project configs, versions of
// which are updated by CV independently, so the ApplicableConfig are also
// eventually consistent.
//
// Normally, there is 1 applicable configs = exactly 1 project with 1 config
// group. If CL is no longer watched by CV, there will be 0 applicable configs.
//
// Sometimes, there can be 2+ applicable configs. This happens if either:
// * eventual consistency: responsibility for CL is moved from one LUCI project
// to another. Three is no way to make this atomically, so CL may temporarily
// end up with 0 or 2 projects watching it, before settling on just 1.
// * misconfiguration: two projects or 2 different ConfigGroups within the same
// project watch the same CL.
// In either case, CV refuses to guess and will abstain from processing such
// CLs, but storing the list is very useful for CV debugging and potentially for
// better diagnostic messages to CV users and LUCI project owners.
type ApplicableConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Projects []*ApplicableConfig_Project `protobuf:"bytes,2,rep,name=projects,proto3" json:"projects,omitempty"`
}
func (x *ApplicableConfig) Reset() {
*x = ApplicableConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ApplicableConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ApplicableConfig) ProtoMessage() {}
func (x *ApplicableConfig) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 ApplicableConfig.ProtoReflect.Descriptor instead.
func (*ApplicableConfig) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{5}
}
func (x *ApplicableConfig) GetProjects() []*ApplicableConfig_Project {
if x != nil {
return x.Projects
}
return nil
}
// Access records which LUCI project can or can't see a CL.
//
// If a LUCI project has Access, it means both:
// (1) the project can read details of the CL (via Git/Gerrit ACLs);
// (2) the project is the only LUCI project watching this CL in CV
// (via the CV config).
// Note: there can still be several applicable ConfigGroups of the same
// project (see ApplicableConfig).
//
// In practice, .Access is set in 4 cases:
//
// (a) `CQ-Depend: host:number` Gerrit CL footers allow users to specify
// arbitrary dependencies, which typically happens due to typos,
// but malicious actors can try to get CL details of restricted projects.
// Either way, CV must not be a confused deputy here and must keep track
// which project can see what.
//
// (b) due to recent re-configuration of one or more LUCI projects, either
// in CV config and/or in Gerrit ACLs, the previously watched & readable CL
// becomes unwatched and/or unreadable.
//
// (c) a previously existing CL was deleted (e.g. by its owner or Gerrit
// administrators).
//
// (d) eventual consistency of Gerrit masquerading as HTTP 404 on stale replica,
// while quorum of replicas think CL actually exists and specific LUCI
// project having access to it.
//
// Unfortunately, (d) isn't easy to distinguish from (b) and (c), so CV resorts
// to tracking time since CL became invisible -- the longer, the more likely it
// is (b) or (c).
//
// Furthermore, in case of (a), iff CV knows nothing about specific Gerrit CL
// identified as `CQ-Depend: host:change`, CV in general can't determine which
// LUCI project is allowed to watch this CL *before* fetching Gerrit project
// (repo) and target ref.
//
//
// NOTE on CV as confused deputy.
//
// CV works with multiple LUCI projects. As of this writing (June 2021),
// unfortunately, CV doesn't verify that Gerrit repos watched by a LUCI project
// are in fact owned by that LUCI project. Thus, nothing prevents one LUCI
// project from starting to watch repos de-facto owned by another LUCI project.
// This in turn brings 2 problems:
//
// (1) Denial of service: unsolved.
// Mitigation: CV will refuse to work with CLs which are watched by more
// than 1 project. Since CV will communicate by posting message to affected
// CL, this should be noticed and fixed quickly.
//
// (2) Information leaks: solved.
// Each LUCI project MUST use project-scoped service account (PSSA)
// (migration is under way, see https://crbug.com/824492).
// CV uses this account for all interaction with Gerrit on behalf a specific
// LUCI project. Corresponding Gerrit repos:
// * SHOULD limit read access to its own PSSA + developers,
// * MUST limit Submit rights to its own PSSA and possibly developers.
//
// For example,
// * `infra` project has all its Gerrit CLs public and doesn't care about
// information leaks. All other LUCI projects can read its CLs, as well
// as the whole Internet.
// * `infra-internal` project protects its Gerrit CLs, making them visible
// to `infra-internal-scoped@...` account only.
// When CV queries Gerrit on `infra-internal` behalf, CV uses
// `infra-internal-scoped` account and can fetch the data.
// * Suppose malicious actor compromised `infra` repo, and placed a new CV
// config there to start watching CLs of the `infra-internal` project
// as well as super/secret/repo, which wasn't watched by any CV before.
// * Unfortunately, CV can't currently object to the new config.
// * However, when querying Gerrit on `infra` behalf, CV uses
// `infra-scoped@...` account, which presumably won't be configured with
// read access to neither infra-internal nor super/secret/repo.
// * So, corresponding CLs will have .Access entry recording that
// `infra` has no access to them.
// * NOTE: CLs of infra-internal will also have .ApplicableConfig with two
// projects there, which will prevent normal operation of
// `infra-internal` CV but will not cause any leaks.
type Access struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ByProject map[string]*Access_Project `protobuf:"bytes,1,rep,name=by_project,json=byProject,proto3" json:"by_project,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // TODO(tandrii): per-project ApplicableConfig here.
}
func (x *Access) Reset() {
*x = Access{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Access) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Access) ProtoMessage() {}
func (x *Access) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 Access.ProtoReflect.Descriptor instead.
func (*Access) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{6}
}
func (x *Access) GetByProject() map[string]*Access_Project {
if x != nil {
return x.ByProject
}
return nil
}
// CLError encapsulates all kinds of CL errors, which ultimately result in
// purging of the CL while communicating the reason to the relevant users.
//
// The primary goal of the CLError is to transport via CV guts sufficient
// information to generate a clear user-friendly error message.
type CLError struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Next tag is 10.
//
// Types that are assignable to Kind:
// *CLError_OwnerLacksEmail
// *CLError_WatchedByManyConfigGroups_
// *CLError_WatchedByManyProjects_
// *CLError_InvalidDeps_
// *CLError_UnsupportedMode
// *CLError_SelfCqDepend
// *CLError_CorruptGerritMetadata
// *CLError_ReusedTrigger_
// *CLError_CommitBlocked
Kind isCLError_Kind `protobuf_oneof:"kind"`
}
func (x *CLError) Reset() {
*x = CLError{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLError) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLError) ProtoMessage() {}
func (x *CLError) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLError.ProtoReflect.Descriptor instead.
func (*CLError) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7}
}
func (m *CLError) GetKind() isCLError_Kind {
if m != nil {
return m.Kind
}
return nil
}
func (x *CLError) GetOwnerLacksEmail() bool {
if x, ok := x.GetKind().(*CLError_OwnerLacksEmail); ok {
return x.OwnerLacksEmail
}
return false
}
func (x *CLError) GetWatchedByManyConfigGroups() *CLError_WatchedByManyConfigGroups {
if x, ok := x.GetKind().(*CLError_WatchedByManyConfigGroups_); ok {
return x.WatchedByManyConfigGroups
}
return nil
}
func (x *CLError) GetWatchedByManyProjects() *CLError_WatchedByManyProjects {
if x, ok := x.GetKind().(*CLError_WatchedByManyProjects_); ok {
return x.WatchedByManyProjects
}
return nil
}
func (x *CLError) GetInvalidDeps() *CLError_InvalidDeps {
if x, ok := x.GetKind().(*CLError_InvalidDeps_); ok {
return x.InvalidDeps
}
return nil
}
func (x *CLError) GetUnsupportedMode() string {
if x, ok := x.GetKind().(*CLError_UnsupportedMode); ok {
return x.UnsupportedMode
}
return ""
}
func (x *CLError) GetSelfCqDepend() bool {
if x, ok := x.GetKind().(*CLError_SelfCqDepend); ok {
return x.SelfCqDepend
}
return false
}
func (x *CLError) GetCorruptGerritMetadata() string {
if x, ok := x.GetKind().(*CLError_CorruptGerritMetadata); ok {
return x.CorruptGerritMetadata
}
return ""
}
func (x *CLError) GetReusedTrigger() *CLError_ReusedTrigger {
if x, ok := x.GetKind().(*CLError_ReusedTrigger_); ok {
return x.ReusedTrigger
}
return nil
}
func (x *CLError) GetCommitBlocked() bool {
if x, ok := x.GetKind().(*CLError_CommitBlocked); ok {
return x.CommitBlocked
}
return false
}
type isCLError_Kind interface {
isCLError_Kind()
}
type CLError_OwnerLacksEmail struct {
OwnerLacksEmail bool `protobuf:"varint,1,opt,name=owner_lacks_email,json=ownerLacksEmail,proto3,oneof"`
}
type CLError_WatchedByManyConfigGroups_ struct {
WatchedByManyConfigGroups *CLError_WatchedByManyConfigGroups `protobuf:"bytes,2,opt,name=watched_by_many_config_groups,json=watchedByManyConfigGroups,proto3,oneof"`
}
type CLError_WatchedByManyProjects_ struct {
WatchedByManyProjects *CLError_WatchedByManyProjects `protobuf:"bytes,8,opt,name=watched_by_many_projects,json=watchedByManyProjects,proto3,oneof"`
}
type CLError_InvalidDeps_ struct {
InvalidDeps *CLError_InvalidDeps `protobuf:"bytes,3,opt,name=invalid_deps,json=invalidDeps,proto3,oneof"`
}
type CLError_UnsupportedMode struct {
UnsupportedMode string `protobuf:"bytes,4,opt,name=unsupported_mode,json=unsupportedMode,proto3,oneof"`
}
type CLError_SelfCqDepend struct {
SelfCqDepend bool `protobuf:"varint,5,opt,name=self_cq_depend,json=selfCqDepend,proto3,oneof"`
}
type CLError_CorruptGerritMetadata struct {
CorruptGerritMetadata string `protobuf:"bytes,6,opt,name=corrupt_gerrit_metadata,json=corruptGerritMetadata,proto3,oneof"`
}
type CLError_ReusedTrigger_ struct {
ReusedTrigger *CLError_ReusedTrigger `protobuf:"bytes,7,opt,name=reused_trigger,json=reusedTrigger,proto3,oneof"`
}
type CLError_CommitBlocked struct {
// Set to true when the footer "Commit: false" is present.
CommitBlocked bool `protobuf:"varint,9,opt,name=commit_blocked,json=commitBlocked,proto3,oneof"`
}
func (*CLError_OwnerLacksEmail) isCLError_Kind() {}
func (*CLError_WatchedByManyConfigGroups_) isCLError_Kind() {}
func (*CLError_WatchedByManyProjects_) isCLError_Kind() {}
func (*CLError_InvalidDeps_) isCLError_Kind() {}
func (*CLError_UnsupportedMode) isCLError_Kind() {}
func (*CLError_SelfCqDepend) isCLError_Kind() {}
func (*CLError_CorruptGerritMetadata) isCLError_Kind() {}
func (*CLError_ReusedTrigger_) isCLError_Kind() {}
func (*CLError_CommitBlocked) isCLError_Kind() {}
// CLUpdatedEvent is just a CL ID pinned to its latest known EVersion.
type CLUpdatedEvent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Clid int64 `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"`
Eversion int64 `protobuf:"varint,2,opt,name=eversion,proto3" json:"eversion,omitempty"`
}
func (x *CLUpdatedEvent) Reset() {
*x = CLUpdatedEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLUpdatedEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLUpdatedEvent) ProtoMessage() {}
func (x *CLUpdatedEvent) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLUpdatedEvent.ProtoReflect.Descriptor instead.
func (*CLUpdatedEvent) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{8}
}
func (x *CLUpdatedEvent) GetClid() int64 {
if x != nil {
return x.Clid
}
return 0
}
func (x *CLUpdatedEvent) GetEversion() int64 {
if x != nil {
return x.Eversion
}
return 0
}
// CLUpdatedEvents is a batch of CLUpdatedEvents.
type CLUpdatedEvents struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Events []*CLUpdatedEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
}
func (x *CLUpdatedEvents) Reset() {
*x = CLUpdatedEvents{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLUpdatedEvents) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLUpdatedEvents) ProtoMessage() {}
func (x *CLUpdatedEvents) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLUpdatedEvents.ProtoReflect.Descriptor instead.
func (*CLUpdatedEvents) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{9}
}
func (x *CLUpdatedEvents) GetEvents() []*CLUpdatedEvent {
if x != nil {
return x.Events
}
return nil
}
// A string key-value pair.
type StringPair struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
func (x *StringPair) Reset() {
*x = StringPair{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *StringPair) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StringPair) ProtoMessage() {}
func (x *StringPair) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 StringPair.ProtoReflect.Descriptor instead.
func (*StringPair) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{10}
}
func (x *StringPair) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *StringPair) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
// Outdated establishes conditions for refreshing Snapshot after CV mutations.
type Snapshot_Outdated struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *Snapshot_Outdated) Reset() {
*x = Snapshot_Outdated{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Snapshot_Outdated) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Snapshot_Outdated) ProtoMessage() {}
func (x *Snapshot_Outdated) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 Snapshot_Outdated.ProtoReflect.Descriptor instead.
func (*Snapshot_Outdated) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0, 0}
}
type ApplicableConfig_Project struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// ID of the specific ConfigGroup. See cv/internal/config.ConfigGroupID.
//
// The referenced version may no longer be available to datastore,
// commonly happening if CL wasn't active for a long time.
ConfigGroupIds []string `protobuf:"bytes,2,rep,name=config_group_ids,json=configGroupIds,proto3" json:"config_group_ids,omitempty"`
}
func (x *ApplicableConfig_Project) Reset() {
*x = ApplicableConfig_Project{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ApplicableConfig_Project) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ApplicableConfig_Project) ProtoMessage() {}
func (x *ApplicableConfig_Project) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 ApplicableConfig_Project.ProtoReflect.Descriptor instead.
func (*ApplicableConfig_Project) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{5, 0}
}
func (x *ApplicableConfig_Project) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *ApplicableConfig_Project) GetConfigGroupIds() []string {
if x != nil {
return x.ConfigGroupIds
}
return nil
}
type Access_Project struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Deprecated. Use no_access_time instead.
NoAccess bool `protobuf:"varint,1,opt,name=no_access,json=noAccess,proto3" json:"no_access,omitempty"`
// The time when this was last re-confirmed.
UpdateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// The time after which CV should consider lack of access stable.
//
// TODO(crbug/1216630): may be unset until backfil is done,
// in which case use `no_access` field.
NoAccessTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=no_access_time,json=noAccessTime,proto3" json:"no_access_time,omitempty"`
}
func (x *Access_Project) Reset() {
*x = Access_Project{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Access_Project) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Access_Project) ProtoMessage() {}
func (x *Access_Project) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 Access_Project.ProtoReflect.Descriptor instead.
func (*Access_Project) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{6, 0}
}
func (x *Access_Project) GetNoAccess() bool {
if x != nil {
return x.NoAccess
}
return false
}
func (x *Access_Project) GetUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
func (x *Access_Project) GetNoAccessTime() *timestamppb.Timestamp {
if x != nil {
return x.NoAccessTime
}
return nil
}
type CLError_WatchedByManyConfigGroups struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Config group names without LUCI project prefix.
ConfigGroups []string `protobuf:"bytes,1,rep,name=config_groups,json=configGroups,proto3" json:"config_groups,omitempty"`
}
func (x *CLError_WatchedByManyConfigGroups) Reset() {
*x = CLError_WatchedByManyConfigGroups{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLError_WatchedByManyConfigGroups) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLError_WatchedByManyConfigGroups) ProtoMessage() {}
func (x *CLError_WatchedByManyConfigGroups) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLError_WatchedByManyConfigGroups.ProtoReflect.Descriptor instead.
func (*CLError_WatchedByManyConfigGroups) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 0}
}
func (x *CLError_WatchedByManyConfigGroups) GetConfigGroups() []string {
if x != nil {
return x.ConfigGroups
}
return nil
}
type CLError_WatchedByManyProjects struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Projects []string `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
}
func (x *CLError_WatchedByManyProjects) Reset() {
*x = CLError_WatchedByManyProjects{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLError_WatchedByManyProjects) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLError_WatchedByManyProjects) ProtoMessage() {}
func (x *CLError_WatchedByManyProjects) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLError_WatchedByManyProjects.ProtoReflect.Descriptor instead.
func (*CLError_WatchedByManyProjects) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 1}
}
func (x *CLError_WatchedByManyProjects) GetProjects() []string {
if x != nil {
return x.Projects
}
return nil
}
type CLError_InvalidDeps struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Deps not watched by the same LUCI project as the dependent.
Unwatched []*Dep `protobuf:"bytes,1,rep,name=unwatched,proto3" json:"unwatched,omitempty"`
// Deps watched by the same LUCI project but different config group.
WrongConfigGroup []*Dep `protobuf:"bytes,2,rep,name=wrong_config_group,json=wrongConfigGroup,proto3" json:"wrong_config_group,omitempty"`
// Not yet submitted deps of a full run in non-combinable mode.
SingleFullDeps []*Dep `protobuf:"bytes,3,rep,name=single_full_deps,json=singleFullDeps,proto3" json:"single_full_deps,omitempty"`
// Not yet CQ-ed deps of a Run in combinable mode.
CombinableUntriggered []*Dep `protobuf:"bytes,4,rep,name=combinable_untriggered,json=combinableUntriggered,proto3" json:"combinable_untriggered,omitempty"`
// CQ-ed deps of a different mode.
CombinableMismatchedMode []*Dep `protobuf:"bytes,5,rep,name=combinable_mismatched_mode,json=combinableMismatchedMode,proto3" json:"combinable_mismatched_mode,omitempty"`
// There are more non-submitted deps than is supported by CV.
TooMany *CLError_InvalidDeps_TooMany `protobuf:"bytes,6,opt,name=too_many,json=tooMany,proto3" json:"too_many,omitempty"`
}
func (x *CLError_InvalidDeps) Reset() {
*x = CLError_InvalidDeps{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLError_InvalidDeps) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLError_InvalidDeps) ProtoMessage() {}
func (x *CLError_InvalidDeps) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLError_InvalidDeps.ProtoReflect.Descriptor instead.
func (*CLError_InvalidDeps) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 2}
}
func (x *CLError_InvalidDeps) GetUnwatched() []*Dep {
if x != nil {
return x.Unwatched
}
return nil
}
func (x *CLError_InvalidDeps) GetWrongConfigGroup() []*Dep {
if x != nil {
return x.WrongConfigGroup
}
return nil
}
func (x *CLError_InvalidDeps) GetSingleFullDeps() []*Dep {
if x != nil {
return x.SingleFullDeps
}
return nil
}
func (x *CLError_InvalidDeps) GetCombinableUntriggered() []*Dep {
if x != nil {
return x.CombinableUntriggered
}
return nil
}
func (x *CLError_InvalidDeps) GetCombinableMismatchedMode() []*Dep {
if x != nil {
return x.CombinableMismatchedMode
}
return nil
}
func (x *CLError_InvalidDeps) GetTooMany() *CLError_InvalidDeps_TooMany {
if x != nil {
return x.TooMany
}
return nil
}
// ReusedTrigger means a CL trigger (e.g. CQ+1 vote) has already resulted in
// a CQ Run which was finalized.
//
// Two known cases when this happens with a Gerrit CL:
// 1. A user uploads a CL on ref A, then votes CQ+1.
// Before the Dry Run completes, the CL is moved to ref B, while
// preserving the CQ+1 vote.
// The old Run is finalized, but the new Run has the exact same trigger,
// which in CQDaemon-compatible mode means the new Run's ID is exactly the
// same as the old one, so CV can't create a new Run.
// TODO(crbug/1223349): after CQDaemon is deleted, the Run ID generation scheme
// can take into account the ref of a CL, and this use case can be allowed.
// 2. The same as above but instead of moving CL between refs, abandon and
// restore the CL.
type CLError_ReusedTrigger struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ID of the finalized Run.
Run string `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
}
func (x *CLError_ReusedTrigger) Reset() {
*x = CLError_ReusedTrigger{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLError_ReusedTrigger) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLError_ReusedTrigger) ProtoMessage() {}
func (x *CLError_ReusedTrigger) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLError_ReusedTrigger.ProtoReflect.Descriptor instead.
func (*CLError_ReusedTrigger) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 3}
}
func (x *CLError_ReusedTrigger) GetRun() string {
if x != nil {
return x.Run
}
return ""
}
type CLError_InvalidDeps_TooMany struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Actual int32 `protobuf:"varint,1,opt,name=actual,proto3" json:"actual,omitempty"`
MaxAllowed int32 `protobuf:"varint,2,opt,name=max_allowed,json=maxAllowed,proto3" json:"max_allowed,omitempty"`
}
func (x *CLError_InvalidDeps_TooMany) Reset() {
*x = CLError_InvalidDeps_TooMany{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CLError_InvalidDeps_TooMany) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CLError_InvalidDeps_TooMany) ProtoMessage() {}
func (x *CLError_InvalidDeps_TooMany) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_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 CLError_InvalidDeps_TooMany.ProtoReflect.Descriptor instead.
func (*CLError_InvalidDeps_TooMany) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 2, 0}
}
func (x *CLError_InvalidDeps_TooMany) GetActual() int32 {
if x != nil {
return x.Actual
}
return 0
}
func (x *CLError_InvalidDeps_TooMany) GetMaxAllowed() int32 {
if x != nil {
return x.MaxAllowed
}
return 0
}
var File_go_chromium_org_luci_cv_internal_changelist_storage_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc = []byte{
0x0a, 0x39, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x76, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x73, 0x74,
0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x63, 0x76, 0x2e,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c,
0x69, 0x73, 0x74, 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, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x2f, 0x67,
0x65, 0x72, 0x72, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x04, 0x0a, 0x08,
0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x4c, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65,
0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x75, 0x63, 0x69, 0x5f, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x75,
0x63, 0x69, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x65, 0x70,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74,
0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74,
0x2e, 0x44, 0x65, 0x70, 0x52, 0x04, 0x64, 0x65, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61,
0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61,
0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x71,
0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65,
0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x45, 0x71, 0x75, 0x69,
0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x37,
0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52,
0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x64, 0x61,
0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x76, 0x2e, 0x69,
0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69,
0x73, 0x74, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x64,
0x61, 0x74, 0x65, 0x64, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3e,
0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x22, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
0x50, 0x61, 0x69, 0x72, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38,
0x0a, 0x06, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x48, 0x00,
0x52, 0x06, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x4f, 0x75, 0x74, 0x64,
0x61, 0x74, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x4e, 0x0a, 0x03,
0x44, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44,
0x65, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xdf, 0x01, 0x0a,
0x06, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18,
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x65, 0x72, 0x72,
0x69, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69,
0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x08, 0x67, 0x69, 0x74,
0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x76,
0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x47, 0x69, 0x74, 0x44, 0x65,
0x70, 0x52, 0x07, 0x67, 0x69, 0x74, 0x44, 0x65, 0x70, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x73, 0x6f,
0x66, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, 0x6f, 0x66,
0x74, 0x44, 0x65, 0x70, 0x52, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x70, 0x73, 0x22, 0x44,
0x0a, 0x0c, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x47, 0x69, 0x74, 0x44, 0x65, 0x70, 0x12, 0x16,
0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69,
0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6d, 0x6d, 0x65, 0x64,
0x69, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x0d, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, 0x6f,
0x66, 0x74, 0x44, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x22, 0xa9, 0x01, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e,
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73,
0x74, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x1a, 0x47, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72,
0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x22, 0xe4, 0x02,
0x0a, 0x06, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x62, 0x79, 0x5f, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2e, 0x42, 0x79, 0x50,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x62, 0x79, 0x50,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0xa5, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0e,
0x6e, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 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, 0x0c, 0x6e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x64,
0x0a, 0x0e, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x26, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73,
0x73, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, 0x0a, 0x0a, 0x07, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x5f,
0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x6f,
0x77, 0x6e, 0x65, 0x72, 0x4c, 0x61, 0x63, 0x6b, 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x7d,
0x0a, 0x1d, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x61, 0x6e,
0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43,
0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79,
0x4d, 0x61, 0x6e, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73,
0x48, 0x00, 0x52, 0x19, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e,
0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x70, 0x0a,
0x18, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x79,
0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x35, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x48, 0x00, 0x52, 0x15, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65,
0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12,
0x50, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43,
0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65,
0x70, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 0x70,
0x73, 0x12, 0x2b, 0x0a, 0x10, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64,
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x75,
0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26,
0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x63, 0x71, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64,
0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x43, 0x71,
0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x17, 0x63, 0x6f, 0x72, 0x72, 0x75, 0x70,
0x74, 0x5f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x72, 0x72, 0x75,
0x70, 0x74, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x12, 0x56, 0x0a, 0x0e, 0x72, 0x65, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67,
0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e,
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73,
0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x75, 0x73, 0x65, 0x64,
0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x75, 0x73, 0x65,
0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d,
0x69, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65,
0x64, 0x1a, 0x40, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61,
0x6e, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x23,
0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x73, 0x1a, 0x33, 0x0a, 0x15, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79,
0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x1a, 0x9d, 0x04, 0x0a, 0x0b, 0x49, 0x6e, 0x76,
0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 0x70, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x75, 0x6e, 0x77, 0x61,
0x74, 0x63, 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76,
0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x09, 0x75, 0x6e, 0x77, 0x61, 0x74, 0x63,
0x68, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x10, 0x77, 0x72,
0x6f, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x45,
0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x65,
0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e,
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73,
0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x46, 0x75, 0x6c,
0x6c, 0x44, 0x65, 0x70, 0x73, 0x12, 0x52, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x18,
0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44,
0x65, 0x70, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x6e,
0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x1a, 0x63, 0x6f, 0x6d,
0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68,
0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x18, 0x63, 0x6f, 0x6d, 0x62,
0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64,
0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4e, 0x0a, 0x08, 0x74, 0x6f, 0x6f, 0x5f, 0x6d, 0x61, 0x6e, 0x79,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65,
0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e,
0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44,
0x65, 0x70, 0x73, 0x2e, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x74, 0x6f, 0x6f,
0x4d, 0x61, 0x6e, 0x79, 0x1a, 0x42, 0x0a, 0x07, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x12,
0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x06, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x61,
0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61,
0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x1a, 0x21, 0x0a, 0x0d, 0x52, 0x65, 0x75, 0x73,
0x65, 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x75, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x75, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6b,
0x69, 0x6e, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x43, 0x4c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x65, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x0f, 0x43, 0x4c, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e,
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73,
0x74, 0x2e, 0x43, 0x4c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74,
0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69,
0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x37,
0x0a, 0x07, 0x44, 0x65, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, 0x50,
0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x08, 0x0a,
0x04, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x02, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x6f, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
0x63, 0x76, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData = file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc
)
func file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescOnce.Do(func() {
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData)
})
return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData
}
var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes = []interface{}{
(DepKind)(0), // 0: cv.internal.changelist.DepKind
(*Snapshot)(nil), // 1: cv.internal.changelist.Snapshot
(*Dep)(nil), // 2: cv.internal.changelist.Dep
(*Gerrit)(nil), // 3: cv.internal.changelist.Gerrit
(*GerritGitDep)(nil), // 4: cv.internal.changelist.GerritGitDep
(*GerritSoftDep)(nil), // 5: cv.internal.changelist.GerritSoftDep
(*ApplicableConfig)(nil), // 6: cv.internal.changelist.ApplicableConfig
(*Access)(nil), // 7: cv.internal.changelist.Access
(*CLError)(nil), // 8: cv.internal.changelist.CLError
(*CLUpdatedEvent)(nil), // 9: cv.internal.changelist.CLUpdatedEvent
(*CLUpdatedEvents)(nil), // 10: cv.internal.changelist.CLUpdatedEvents
(*StringPair)(nil), // 11: cv.internal.changelist.StringPair
(*Snapshot_Outdated)(nil), // 12: cv.internal.changelist.Snapshot.Outdated
(*ApplicableConfig_Project)(nil), // 13: cv.internal.changelist.ApplicableConfig.Project
(*Access_Project)(nil), // 14: cv.internal.changelist.Access.Project
nil, // 15: cv.internal.changelist.Access.ByProjectEntry
(*CLError_WatchedByManyConfigGroups)(nil), // 16: cv.internal.changelist.CLError.WatchedByManyConfigGroups
(*CLError_WatchedByManyProjects)(nil), // 17: cv.internal.changelist.CLError.WatchedByManyProjects
(*CLError_InvalidDeps)(nil), // 18: cv.internal.changelist.CLError.InvalidDeps
(*CLError_ReusedTrigger)(nil), // 19: cv.internal.changelist.CLError.ReusedTrigger
(*CLError_InvalidDeps_TooMany)(nil), // 20: cv.internal.changelist.CLError.InvalidDeps.TooMany
(*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp
(*gerrit.ChangeInfo)(nil), // 22: gerrit.ChangeInfo
}
var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs = []int32{
21, // 0: cv.internal.changelist.Snapshot.external_update_time:type_name -> google.protobuf.Timestamp
2, // 1: cv.internal.changelist.Snapshot.deps:type_name -> cv.internal.changelist.Dep
8, // 2: cv.internal.changelist.Snapshot.errors:type_name -> cv.internal.changelist.CLError
12, // 3: cv.internal.changelist.Snapshot.outdated:type_name -> cv.internal.changelist.Snapshot.Outdated
11, // 4: cv.internal.changelist.Snapshot.metadata:type_name -> cv.internal.changelist.StringPair
3, // 5: cv.internal.changelist.Snapshot.gerrit:type_name -> cv.internal.changelist.Gerrit
0, // 6: cv.internal.changelist.Dep.kind:type_name -> cv.internal.changelist.DepKind
22, // 7: cv.internal.changelist.Gerrit.info:type_name -> gerrit.ChangeInfo
4, // 8: cv.internal.changelist.Gerrit.git_deps:type_name -> cv.internal.changelist.GerritGitDep
5, // 9: cv.internal.changelist.Gerrit.soft_deps:type_name -> cv.internal.changelist.GerritSoftDep
13, // 10: cv.internal.changelist.ApplicableConfig.projects:type_name -> cv.internal.changelist.ApplicableConfig.Project
15, // 11: cv.internal.changelist.Access.by_project:type_name -> cv.internal.changelist.Access.ByProjectEntry
16, // 12: cv.internal.changelist.CLError.watched_by_many_config_groups:type_name -> cv.internal.changelist.CLError.WatchedByManyConfigGroups
17, // 13: cv.internal.changelist.CLError.watched_by_many_projects:type_name -> cv.internal.changelist.CLError.WatchedByManyProjects
18, // 14: cv.internal.changelist.CLError.invalid_deps:type_name -> cv.internal.changelist.CLError.InvalidDeps
19, // 15: cv.internal.changelist.CLError.reused_trigger:type_name -> cv.internal.changelist.CLError.ReusedTrigger
9, // 16: cv.internal.changelist.CLUpdatedEvents.events:type_name -> cv.internal.changelist.CLUpdatedEvent
21, // 17: cv.internal.changelist.Access.Project.update_time:type_name -> google.protobuf.Timestamp
21, // 18: cv.internal.changelist.Access.Project.no_access_time:type_name -> google.protobuf.Timestamp
14, // 19: cv.internal.changelist.Access.ByProjectEntry.value:type_name -> cv.internal.changelist.Access.Project
2, // 20: cv.internal.changelist.CLError.InvalidDeps.unwatched:type_name -> cv.internal.changelist.Dep
2, // 21: cv.internal.changelist.CLError.InvalidDeps.wrong_config_group:type_name -> cv.internal.changelist.Dep
2, // 22: cv.internal.changelist.CLError.InvalidDeps.single_full_deps:type_name -> cv.internal.changelist.Dep
2, // 23: cv.internal.changelist.CLError.InvalidDeps.combinable_untriggered:type_name -> cv.internal.changelist.Dep
2, // 24: cv.internal.changelist.CLError.InvalidDeps.combinable_mismatched_mode:type_name -> cv.internal.changelist.Dep
20, // 25: cv.internal.changelist.CLError.InvalidDeps.too_many:type_name -> cv.internal.changelist.CLError.InvalidDeps.TooMany
26, // [26:26] is the sub-list for method output_type
26, // [26:26] is the sub-list for method input_type
26, // [26:26] is the sub-list for extension type_name
26, // [26:26] is the sub-list for extension extendee
0, // [0:26] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_cv_internal_changelist_storage_proto_init() }
func file_go_chromium_org_luci_cv_internal_changelist_storage_proto_init() {
if File_go_chromium_org_luci_cv_internal_changelist_storage_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Snapshot); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Dep); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Gerrit); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GerritGitDep); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GerritSoftDep); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ApplicableConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Access); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLError); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLUpdatedEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLUpdatedEvents); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StringPair); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Snapshot_Outdated); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ApplicableConfig_Project); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Access_Project); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLError_WatchedByManyConfigGroups); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLError_WatchedByManyProjects); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLError_InvalidDeps); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLError_ReusedTrigger); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CLError_InvalidDeps_TooMany); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0].OneofWrappers = []interface{}{
(*Snapshot_Gerrit)(nil),
}
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7].OneofWrappers = []interface{}{
(*CLError_OwnerLacksEmail)(nil),
(*CLError_WatchedByManyConfigGroups_)(nil),
(*CLError_WatchedByManyProjects_)(nil),
(*CLError_InvalidDeps_)(nil),
(*CLError_UnsupportedMode)(nil),
(*CLError_SelfCqDepend)(nil),
(*CLError_CorruptGerritMetadata)(nil),
(*CLError_ReusedTrigger_)(nil),
(*CLError_CommitBlocked)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc,
NumEnums: 1,
NumMessages: 20,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs,
EnumInfos: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes,
MessageInfos: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_cv_internal_changelist_storage_proto = out.File
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc = nil
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes = nil
file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs = nil
}