go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/cv/internal/changelist/storage.pb.go (about) 1 // Copyright 2020 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by protoc-gen-go. DO NOT EDIT. 16 // versions: 17 // protoc-gen-go v1.31.0 18 // protoc v3.21.7 19 // source: go.chromium.org/luci/cv/internal/changelist/storage.proto 20 21 package changelist 22 23 import ( 24 gerrit "go.chromium.org/luci/common/proto/gerrit" 25 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 26 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 27 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 28 reflect "reflect" 29 sync "sync" 30 ) 31 32 const ( 33 // Verify that this generated code is sufficiently up-to-date. 34 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 35 // Verify that runtime/protoimpl is sufficiently up-to-date. 36 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 37 ) 38 39 type DepKind int32 40 41 const ( 42 DepKind_DEP_KIND_UNSPECIFIED DepKind = 0 43 // Dep MUST be patched in / submitted before the dependent CL. 44 DepKind_HARD DepKind = 1 45 // Dep SHOULD be patched in / submitted before the dependent CL, 46 // but doesn't have to be. 47 DepKind_SOFT DepKind = 2 48 ) 49 50 // Enum value maps for DepKind. 51 var ( 52 DepKind_name = map[int32]string{ 53 0: "DEP_KIND_UNSPECIFIED", 54 1: "HARD", 55 2: "SOFT", 56 } 57 DepKind_value = map[string]int32{ 58 "DEP_KIND_UNSPECIFIED": 0, 59 "HARD": 1, 60 "SOFT": 2, 61 } 62 ) 63 64 func (x DepKind) Enum() *DepKind { 65 p := new(DepKind) 66 *p = x 67 return p 68 } 69 70 func (x DepKind) String() string { 71 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 72 } 73 74 func (DepKind) Descriptor() protoreflect.EnumDescriptor { 75 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes[0].Descriptor() 76 } 77 78 func (DepKind) Type() protoreflect.EnumType { 79 return &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes[0] 80 } 81 82 func (x DepKind) Number() protoreflect.EnumNumber { 83 return protoreflect.EnumNumber(x) 84 } 85 86 // Deprecated: Use DepKind.Descriptor instead. 87 func (DepKind) EnumDescriptor() ([]byte, []int) { 88 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0} 89 } 90 91 // Snapshot stores a snapshot of CL info as seen by CV at a certain time. 92 // 93 // When stored in CL entity, represents latest known Gerrit data. 94 // When stored in RunCL entity, represents data pertaining to a fixed patchset. 95 type Snapshot struct { 96 state protoimpl.MessageState 97 sizeCache protoimpl.SizeCache 98 unknownFields protoimpl.UnknownFields 99 100 // The timestamp from external system. 101 // Used to determine if re-querying external system is needed. 102 ExternalUpdateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=external_update_time,json=externalUpdateTime,proto3" json:"external_update_time,omitempty"` 103 // LUCI project in the context of which this snapshot was saved. 104 // 105 // Since a CL isn't a resource of CV, CV can't infer whether specific LUCI 106 // project has access to a CL w/o re-querying Gerrit and effectively 107 // recomputing the snapshot. 108 LuciProject string `protobuf:"bytes,2,opt,name=luci_project,json=luciProject,proto3" json:"luci_project,omitempty"` 109 // Resolved dependencies of a CL. 110 Deps []*Dep `protobuf:"bytes,3,rep,name=deps,proto3" json:"deps,omitempty"` 111 // Patchset is incremental number of the latest patchset (aka revision). 112 Patchset int32 `protobuf:"varint,4,opt,name=patchset,proto3" json:"patchset,omitempty"` 113 // MinEquivalentPatchset is the smallest and hence the earliest patchset 114 // which is code-wise equivalent to the latest one. 115 // 116 // See gerrit.EquivalentPatchsetRange function for details. 117 // 118 // CV tracks this to determine which prior tryjobs can be re-used and which 119 // can be canceled. 120 MinEquivalentPatchset int32 `protobuf:"varint,5,opt,name=min_equivalent_patchset,json=minEquivalentPatchset,proto3" json:"min_equivalent_patchset,omitempty"` 121 // If set, indicates problems while ingesting CL into CV, which ought to be 122 // communicated back to user. 123 Errors []*CLError `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors,omitempty"` 124 // Outdated if set means Snapshot must be considered likely outdated due to 125 // recent CV mutations. 126 // 127 // In particular, Project Manager does not act on the CLs with .Outdated set. 128 Outdated *Snapshot_Outdated `protobuf:"bytes,7,opt,name=outdated,proto3" json:"outdated,omitempty"` 129 // Metadata is an ordered list of key-value pairs, which may later be 130 // interpreted by CV guts. 131 // 132 // For example, 133 // 134 // [("No-Tree-Checks", "True"), ("NOTRY", "TRUE")]. 135 // 136 // In case of Gerrit CLs, these are extracted from CL descriptions, 137 // The Git-Footer-Style keys are normalized. 138 // The values are stripped from beginning and trailing whitespace. 139 Metadata []*StringPair `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty"` 140 // CL-kind specific data. 141 // 142 // Types that are assignable to Kind: 143 // 144 // *Snapshot_Gerrit 145 Kind isSnapshot_Kind `protobuf_oneof:"kind"` 146 } 147 148 func (x *Snapshot) Reset() { 149 *x = Snapshot{} 150 if protoimpl.UnsafeEnabled { 151 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0] 152 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 153 ms.StoreMessageInfo(mi) 154 } 155 } 156 157 func (x *Snapshot) String() string { 158 return protoimpl.X.MessageStringOf(x) 159 } 160 161 func (*Snapshot) ProtoMessage() {} 162 163 func (x *Snapshot) ProtoReflect() protoreflect.Message { 164 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0] 165 if protoimpl.UnsafeEnabled && x != nil { 166 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 167 if ms.LoadMessageInfo() == nil { 168 ms.StoreMessageInfo(mi) 169 } 170 return ms 171 } 172 return mi.MessageOf(x) 173 } 174 175 // Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. 176 func (*Snapshot) Descriptor() ([]byte, []int) { 177 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0} 178 } 179 180 func (x *Snapshot) GetExternalUpdateTime() *timestamppb.Timestamp { 181 if x != nil { 182 return x.ExternalUpdateTime 183 } 184 return nil 185 } 186 187 func (x *Snapshot) GetLuciProject() string { 188 if x != nil { 189 return x.LuciProject 190 } 191 return "" 192 } 193 194 func (x *Snapshot) GetDeps() []*Dep { 195 if x != nil { 196 return x.Deps 197 } 198 return nil 199 } 200 201 func (x *Snapshot) GetPatchset() int32 { 202 if x != nil { 203 return x.Patchset 204 } 205 return 0 206 } 207 208 func (x *Snapshot) GetMinEquivalentPatchset() int32 { 209 if x != nil { 210 return x.MinEquivalentPatchset 211 } 212 return 0 213 } 214 215 func (x *Snapshot) GetErrors() []*CLError { 216 if x != nil { 217 return x.Errors 218 } 219 return nil 220 } 221 222 func (x *Snapshot) GetOutdated() *Snapshot_Outdated { 223 if x != nil { 224 return x.Outdated 225 } 226 return nil 227 } 228 229 func (x *Snapshot) GetMetadata() []*StringPair { 230 if x != nil { 231 return x.Metadata 232 } 233 return nil 234 } 235 236 func (m *Snapshot) GetKind() isSnapshot_Kind { 237 if m != nil { 238 return m.Kind 239 } 240 return nil 241 } 242 243 func (x *Snapshot) GetGerrit() *Gerrit { 244 if x, ok := x.GetKind().(*Snapshot_Gerrit); ok { 245 return x.Gerrit 246 } 247 return nil 248 } 249 250 type isSnapshot_Kind interface { 251 isSnapshot_Kind() 252 } 253 254 type Snapshot_Gerrit struct { 255 Gerrit *Gerrit `protobuf:"bytes,11,opt,name=gerrit,proto3,oneof"` 256 } 257 258 func (*Snapshot_Gerrit) isSnapshot_Kind() {} 259 260 type Dep struct { 261 state protoimpl.MessageState 262 sizeCache protoimpl.SizeCache 263 unknownFields protoimpl.UnknownFields 264 265 // CLID is internal CV ID of a CL which is the dependency. 266 Clid int64 `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"` 267 Kind DepKind `protobuf:"varint,2,opt,name=kind,proto3,enum=cv.internal.changelist.DepKind" json:"kind,omitempty"` 268 } 269 270 func (x *Dep) Reset() { 271 *x = Dep{} 272 if protoimpl.UnsafeEnabled { 273 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1] 274 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 275 ms.StoreMessageInfo(mi) 276 } 277 } 278 279 func (x *Dep) String() string { 280 return protoimpl.X.MessageStringOf(x) 281 } 282 283 func (*Dep) ProtoMessage() {} 284 285 func (x *Dep) ProtoReflect() protoreflect.Message { 286 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1] 287 if protoimpl.UnsafeEnabled && x != nil { 288 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 289 if ms.LoadMessageInfo() == nil { 290 ms.StoreMessageInfo(mi) 291 } 292 return ms 293 } 294 return mi.MessageOf(x) 295 } 296 297 // Deprecated: Use Dep.ProtoReflect.Descriptor instead. 298 func (*Dep) Descriptor() ([]byte, []int) { 299 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{1} 300 } 301 302 func (x *Dep) GetClid() int64 { 303 if x != nil { 304 return x.Clid 305 } 306 return 0 307 } 308 309 func (x *Dep) GetKind() DepKind { 310 if x != nil { 311 return x.Kind 312 } 313 return DepKind_DEP_KIND_UNSPECIFIED 314 } 315 316 type Gerrit struct { 317 state protoimpl.MessageState 318 sizeCache protoimpl.SizeCache 319 unknownFields protoimpl.UnknownFields 320 321 // Gerrit host. 322 Host string `protobuf:"bytes,5,opt,name=host,proto3" json:"host,omitempty"` 323 // Info contains subset of ChangeInfo listed below. 324 // 325 // NOTE: keep this list in sync with RemoveUnusedGerritInfo() function. 326 // - number 327 // - owner 328 // - id 329 // - email (may be not set) 330 // - project 331 // - ref 332 // - status 333 // - current_revision 334 // - revisions 335 // - kind 336 // - number 337 // - ref 338 // - created 339 // - commit 340 // - id 341 // - parents 342 // - labels 343 // - optional 344 // - all (only if vote != 0) 345 // - user 346 // - id 347 // - email (may be not set) 348 // - value 349 // - messages 350 // - id 351 // - date 352 // - message 353 // - author 354 // - id 355 // - realauthor 356 // - id 357 // - updated 358 // - created 359 Info *gerrit.ChangeInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` 360 // Files are filenames touched in the current revision. 361 // 362 // It's derived from gerrit.ListFilesResponse, see 363 // https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-files. 364 Files []string `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` 365 // Git dependencies of the current revision. 366 GitDeps []*GerritGitDep `protobuf:"bytes,3,rep,name=git_deps,json=gitDeps,proto3" json:"git_deps,omitempty"` 367 // Free-form dependencies. Currently, sourced from CQ-Depend footers. 368 // In the future, this may be derived from Gerrit hashtags, topics, or other 369 // mechanisms. 370 SoftDeps []*GerritSoftDep `protobuf:"bytes,4,rep,name=soft_deps,json=softDeps,proto3" json:"soft_deps,omitempty"` 371 } 372 373 func (x *Gerrit) Reset() { 374 *x = Gerrit{} 375 if protoimpl.UnsafeEnabled { 376 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2] 377 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 378 ms.StoreMessageInfo(mi) 379 } 380 } 381 382 func (x *Gerrit) String() string { 383 return protoimpl.X.MessageStringOf(x) 384 } 385 386 func (*Gerrit) ProtoMessage() {} 387 388 func (x *Gerrit) ProtoReflect() protoreflect.Message { 389 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2] 390 if protoimpl.UnsafeEnabled && x != nil { 391 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 392 if ms.LoadMessageInfo() == nil { 393 ms.StoreMessageInfo(mi) 394 } 395 return ms 396 } 397 return mi.MessageOf(x) 398 } 399 400 // Deprecated: Use Gerrit.ProtoReflect.Descriptor instead. 401 func (*Gerrit) Descriptor() ([]byte, []int) { 402 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{2} 403 } 404 405 func (x *Gerrit) GetHost() string { 406 if x != nil { 407 return x.Host 408 } 409 return "" 410 } 411 412 func (x *Gerrit) GetInfo() *gerrit.ChangeInfo { 413 if x != nil { 414 return x.Info 415 } 416 return nil 417 } 418 419 func (x *Gerrit) GetFiles() []string { 420 if x != nil { 421 return x.Files 422 } 423 return nil 424 } 425 426 func (x *Gerrit) GetGitDeps() []*GerritGitDep { 427 if x != nil { 428 return x.GitDeps 429 } 430 return nil 431 } 432 433 func (x *Gerrit) GetSoftDeps() []*GerritSoftDep { 434 if x != nil { 435 return x.SoftDeps 436 } 437 return nil 438 } 439 440 // GerritGitDep is a dependency discovered via Git child->parent chain for one Gerrit CL. 441 type GerritGitDep struct { 442 state protoimpl.MessageState 443 sizeCache protoimpl.SizeCache 444 unknownFields protoimpl.UnknownFields 445 446 // Gerrit Change number. 447 Change int64 `protobuf:"varint,1,opt,name=change,proto3" json:"change,omitempty"` 448 // Immediate is set iff this dep is an immediate parent of the Gerrit CL. 449 // 450 // Immediate dep must be submitted before its child. 451 // Non-immediate CLs don't necessarily have to be submitted before: 452 // 453 // for example, for a chain <base> <- A1 <- B1 <- C1 <- D1 454 // D1's deps are [A,B,C] but only C is immediate, and 1 stands for patchset. 455 // Developer may then swap B,C without re-uploading D (say, to avoid 456 // patchset churn), resulting in a new logical chain: 457 // <base> <- A1 <- C2 <- B2 458 // \ 459 // <- B1 <- C1 <- D1 460 // 461 // In this case, Gerrit's related changes for D1 will still return A1,B1,C1, 462 // which CV interprets as C must be landed before D, while B and A should 463 // be landed before D. 464 Immediate bool `protobuf:"varint,2,opt,name=immediate,proto3" json:"immediate,omitempty"` 465 } 466 467 func (x *GerritGitDep) Reset() { 468 *x = GerritGitDep{} 469 if protoimpl.UnsafeEnabled { 470 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3] 471 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 472 ms.StoreMessageInfo(mi) 473 } 474 } 475 476 func (x *GerritGitDep) String() string { 477 return protoimpl.X.MessageStringOf(x) 478 } 479 480 func (*GerritGitDep) ProtoMessage() {} 481 482 func (x *GerritGitDep) ProtoReflect() protoreflect.Message { 483 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3] 484 if protoimpl.UnsafeEnabled && x != nil { 485 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 486 if ms.LoadMessageInfo() == nil { 487 ms.StoreMessageInfo(mi) 488 } 489 return ms 490 } 491 return mi.MessageOf(x) 492 } 493 494 // Deprecated: Use GerritGitDep.ProtoReflect.Descriptor instead. 495 func (*GerritGitDep) Descriptor() ([]byte, []int) { 496 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{3} 497 } 498 499 func (x *GerritGitDep) GetChange() int64 { 500 if x != nil { 501 return x.Change 502 } 503 return 0 504 } 505 506 func (x *GerritGitDep) GetImmediate() bool { 507 if x != nil { 508 return x.Immediate 509 } 510 return false 511 } 512 513 type GerritSoftDep struct { 514 state protoimpl.MessageState 515 sizeCache protoimpl.SizeCache 516 unknownFields protoimpl.UnknownFields 517 518 // Gerrit host. 519 Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` 520 // Gerrit change number. 521 Change int64 `protobuf:"varint,2,opt,name=change,proto3" json:"change,omitempty"` 522 } 523 524 func (x *GerritSoftDep) Reset() { 525 *x = GerritSoftDep{} 526 if protoimpl.UnsafeEnabled { 527 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4] 528 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 529 ms.StoreMessageInfo(mi) 530 } 531 } 532 533 func (x *GerritSoftDep) String() string { 534 return protoimpl.X.MessageStringOf(x) 535 } 536 537 func (*GerritSoftDep) ProtoMessage() {} 538 539 func (x *GerritSoftDep) ProtoReflect() protoreflect.Message { 540 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4] 541 if protoimpl.UnsafeEnabled && x != nil { 542 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 543 if ms.LoadMessageInfo() == nil { 544 ms.StoreMessageInfo(mi) 545 } 546 return ms 547 } 548 return mi.MessageOf(x) 549 } 550 551 // Deprecated: Use GerritSoftDep.ProtoReflect.Descriptor instead. 552 func (*GerritSoftDep) Descriptor() ([]byte, []int) { 553 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{4} 554 } 555 556 func (x *GerritSoftDep) GetHost() string { 557 if x != nil { 558 return x.Host 559 } 560 return "" 561 } 562 563 func (x *GerritSoftDep) GetChange() int64 { 564 if x != nil { 565 return x.Change 566 } 567 return 0 568 } 569 570 // ApplicableConfig keeps track of configs applicable to a CL. 571 // 572 // This is computed based on known set of LUCI project configs, versions of 573 // which are updated by CV independently, so the ApplicableConfig are also 574 // eventually consistent. 575 // 576 // Normally, there is 1 applicable configs = exactly 1 project with 1 config 577 // group. If CL is no longer watched by CV, there will be 0 applicable configs. 578 // 579 // Sometimes, there can be 2+ applicable configs. This happens if either: 580 // - eventual consistency: responsibility for CL is moved from one LUCI project 581 // to another. Three is no way to make this atomically, so CL may temporarily 582 // end up with 0 or 2 projects watching it, before settling on just 1. 583 // - misconfiguration: two projects or 2 different ConfigGroups within the same 584 // project watch the same CL. 585 // 586 // In either case, CV refuses to guess and will abstain from processing such 587 // CLs, but storing the list is very useful for CV debugging and potentially for 588 // better diagnostic messages to CV users and LUCI project owners. 589 type ApplicableConfig struct { 590 state protoimpl.MessageState 591 sizeCache protoimpl.SizeCache 592 unknownFields protoimpl.UnknownFields 593 594 Projects []*ApplicableConfig_Project `protobuf:"bytes,2,rep,name=projects,proto3" json:"projects,omitempty"` 595 } 596 597 func (x *ApplicableConfig) Reset() { 598 *x = ApplicableConfig{} 599 if protoimpl.UnsafeEnabled { 600 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5] 601 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 602 ms.StoreMessageInfo(mi) 603 } 604 } 605 606 func (x *ApplicableConfig) String() string { 607 return protoimpl.X.MessageStringOf(x) 608 } 609 610 func (*ApplicableConfig) ProtoMessage() {} 611 612 func (x *ApplicableConfig) ProtoReflect() protoreflect.Message { 613 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5] 614 if protoimpl.UnsafeEnabled && x != nil { 615 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 616 if ms.LoadMessageInfo() == nil { 617 ms.StoreMessageInfo(mi) 618 } 619 return ms 620 } 621 return mi.MessageOf(x) 622 } 623 624 // Deprecated: Use ApplicableConfig.ProtoReflect.Descriptor instead. 625 func (*ApplicableConfig) Descriptor() ([]byte, []int) { 626 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{5} 627 } 628 629 func (x *ApplicableConfig) GetProjects() []*ApplicableConfig_Project { 630 if x != nil { 631 return x.Projects 632 } 633 return nil 634 } 635 636 // Access records which LUCI project can or can't see a CL. 637 // 638 // If a LUCI project has Access, it means both: 639 // 640 // (1) the project can read details of the CL (via Git/Gerrit ACLs); 641 // (2) the project is the only LUCI project watching this CL in CV 642 // (via the CV config). 643 // Note: there can still be several applicable ConfigGroups of the same 644 // project (see ApplicableConfig). 645 // 646 // In practice, .Access is set in 4 cases: 647 // 648 // (a) `CQ-Depend: host:number` Gerrit CL footers allow users to specify 649 // 650 // arbitrary dependencies, which typically happens due to typos, 651 // but malicious actors can try to get CL details of restricted projects. 652 // Either way, CV must not be a confused deputy here and must keep track 653 // which project can see what. 654 // 655 // (b) due to recent re-configuration of one or more LUCI projects, either 656 // 657 // in CV config and/or in Gerrit ACLs, the previously watched & readable CL 658 // becomes unwatched and/or unreadable. 659 // 660 // (c) a previously existing CL was deleted (e.g. by its owner or Gerrit 661 // 662 // administrators). 663 // 664 // (d) eventual consistency of Gerrit masquerading as HTTP 404 on stale replica, 665 // 666 // while quorum of replicas think CL actually exists and specific LUCI 667 // project having access to it. 668 // 669 // Unfortunately, (d) isn't easy to distinguish from (b) and (c), so CV resorts 670 // to tracking time since CL became invisible -- the longer, the more likely it 671 // is (b) or (c). 672 // 673 // Furthermore, in case of (a), iff CV knows nothing about specific Gerrit CL 674 // identified as `CQ-Depend: host:change`, CV in general can't determine which 675 // LUCI project is allowed to watch this CL *before* fetching Gerrit project 676 // (repo) and target ref. 677 // 678 // NOTE on CV as confused deputy. 679 // 680 // CV works with multiple LUCI projects. As of this writing (June 2021), 681 // unfortunately, CV doesn't verify that Gerrit repos watched by a LUCI project 682 // are in fact owned by that LUCI project. Thus, nothing prevents one LUCI 683 // project from starting to watch repos de-facto owned by another LUCI project. 684 // This in turn brings 2 problems: 685 // 686 // (1) Denial of service: unsolved. 687 // 688 // Mitigation: CV will refuse to work with CLs which are watched by more 689 // than 1 project. Since CV will communicate by posting message to affected 690 // CL, this should be noticed and fixed quickly. 691 // 692 // (2) Information leaks: solved. 693 // 694 // Each LUCI project MUST use project-scoped service account (PSSA) 695 // (migration is under way, see https://crbug.com/824492). 696 // CV uses this account for all interaction with Gerrit on behalf a specific 697 // LUCI project. Corresponding Gerrit repos: 698 // * SHOULD limit read access to its own PSSA + developers, 699 // * MUST limit Submit rights to its own PSSA and possibly developers. 700 // 701 // For example, 702 // - `infra` project has all its Gerrit CLs public and doesn't care about 703 // information leaks. All other LUCI projects can read its CLs, as well 704 // as the whole Internet. 705 // - `infra-internal` project protects its Gerrit CLs, making them visible 706 // to `infra-internal-scoped@...` account only. 707 // When CV queries Gerrit on `infra-internal` behalf, CV uses 708 // `infra-internal-scoped` account and can fetch the data. 709 // - Suppose malicious actor compromised `infra` repo, and placed a new CV 710 // config there to start watching CLs of the `infra-internal` project 711 // as well as super/secret/repo, which wasn't watched by any CV before. 712 // - Unfortunately, CV can't currently object to the new config. 713 // - However, when querying Gerrit on `infra` behalf, CV uses 714 // `infra-scoped@...` account, which presumably won't be configured with 715 // read access to neither infra-internal nor super/secret/repo. 716 // - So, corresponding CLs will have .Access entry recording that 717 // `infra` has no access to them. 718 // - NOTE: CLs of infra-internal will also have .ApplicableConfig with two 719 // projects there, which will prevent normal operation of 720 // `infra-internal` CV but will not cause any leaks. 721 type Access struct { 722 state protoimpl.MessageState 723 sizeCache protoimpl.SizeCache 724 unknownFields protoimpl.UnknownFields 725 726 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. 727 } 728 729 func (x *Access) Reset() { 730 *x = Access{} 731 if protoimpl.UnsafeEnabled { 732 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6] 733 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 734 ms.StoreMessageInfo(mi) 735 } 736 } 737 738 func (x *Access) String() string { 739 return protoimpl.X.MessageStringOf(x) 740 } 741 742 func (*Access) ProtoMessage() {} 743 744 func (x *Access) ProtoReflect() protoreflect.Message { 745 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6] 746 if protoimpl.UnsafeEnabled && x != nil { 747 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 748 if ms.LoadMessageInfo() == nil { 749 ms.StoreMessageInfo(mi) 750 } 751 return ms 752 } 753 return mi.MessageOf(x) 754 } 755 756 // Deprecated: Use Access.ProtoReflect.Descriptor instead. 757 func (*Access) Descriptor() ([]byte, []int) { 758 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{6} 759 } 760 761 func (x *Access) GetByProject() map[string]*Access_Project { 762 if x != nil { 763 return x.ByProject 764 } 765 return nil 766 } 767 768 // CLError encapsulates all kinds of CL errors, which ultimately result in 769 // purging of the CL while communicating the reason to the relevant users. 770 // 771 // The primary goal of the CLError is to transport via CV guts sufficient 772 // information to generate a clear user-friendly error message. 773 type CLError struct { 774 state protoimpl.MessageState 775 sizeCache protoimpl.SizeCache 776 unknownFields protoimpl.UnknownFields 777 778 // Next tag is 12. 779 // 780 // Types that are assignable to Kind: 781 // 782 // *CLError_OwnerLacksEmail 783 // *CLError_WatchedByManyConfigGroups_ 784 // *CLError_WatchedByManyProjects_ 785 // *CLError_InvalidDeps_ 786 // *CLError_UnsupportedMode 787 // *CLError_SelfCqDepend 788 // *CLError_CorruptGerritMetadata 789 // *CLError_ReusedTrigger_ 790 // *CLError_CommitBlocked 791 // *CLError_TriggerDeps_ 792 // *CLError_DepRunFailed 793 Kind isCLError_Kind `protobuf_oneof:"kind"` 794 } 795 796 func (x *CLError) Reset() { 797 *x = CLError{} 798 if protoimpl.UnsafeEnabled { 799 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7] 800 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 801 ms.StoreMessageInfo(mi) 802 } 803 } 804 805 func (x *CLError) String() string { 806 return protoimpl.X.MessageStringOf(x) 807 } 808 809 func (*CLError) ProtoMessage() {} 810 811 func (x *CLError) ProtoReflect() protoreflect.Message { 812 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7] 813 if protoimpl.UnsafeEnabled && x != nil { 814 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 815 if ms.LoadMessageInfo() == nil { 816 ms.StoreMessageInfo(mi) 817 } 818 return ms 819 } 820 return mi.MessageOf(x) 821 } 822 823 // Deprecated: Use CLError.ProtoReflect.Descriptor instead. 824 func (*CLError) Descriptor() ([]byte, []int) { 825 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7} 826 } 827 828 func (m *CLError) GetKind() isCLError_Kind { 829 if m != nil { 830 return m.Kind 831 } 832 return nil 833 } 834 835 func (x *CLError) GetOwnerLacksEmail() bool { 836 if x, ok := x.GetKind().(*CLError_OwnerLacksEmail); ok { 837 return x.OwnerLacksEmail 838 } 839 return false 840 } 841 842 func (x *CLError) GetWatchedByManyConfigGroups() *CLError_WatchedByManyConfigGroups { 843 if x, ok := x.GetKind().(*CLError_WatchedByManyConfigGroups_); ok { 844 return x.WatchedByManyConfigGroups 845 } 846 return nil 847 } 848 849 func (x *CLError) GetWatchedByManyProjects() *CLError_WatchedByManyProjects { 850 if x, ok := x.GetKind().(*CLError_WatchedByManyProjects_); ok { 851 return x.WatchedByManyProjects 852 } 853 return nil 854 } 855 856 func (x *CLError) GetInvalidDeps() *CLError_InvalidDeps { 857 if x, ok := x.GetKind().(*CLError_InvalidDeps_); ok { 858 return x.InvalidDeps 859 } 860 return nil 861 } 862 863 func (x *CLError) GetUnsupportedMode() string { 864 if x, ok := x.GetKind().(*CLError_UnsupportedMode); ok { 865 return x.UnsupportedMode 866 } 867 return "" 868 } 869 870 func (x *CLError) GetSelfCqDepend() bool { 871 if x, ok := x.GetKind().(*CLError_SelfCqDepend); ok { 872 return x.SelfCqDepend 873 } 874 return false 875 } 876 877 func (x *CLError) GetCorruptGerritMetadata() string { 878 if x, ok := x.GetKind().(*CLError_CorruptGerritMetadata); ok { 879 return x.CorruptGerritMetadata 880 } 881 return "" 882 } 883 884 func (x *CLError) GetReusedTrigger() *CLError_ReusedTrigger { 885 if x, ok := x.GetKind().(*CLError_ReusedTrigger_); ok { 886 return x.ReusedTrigger 887 } 888 return nil 889 } 890 891 func (x *CLError) GetCommitBlocked() bool { 892 if x, ok := x.GetKind().(*CLError_CommitBlocked); ok { 893 return x.CommitBlocked 894 } 895 return false 896 } 897 898 func (x *CLError) GetTriggerDeps() *CLError_TriggerDeps { 899 if x, ok := x.GetKind().(*CLError_TriggerDeps_); ok { 900 return x.TriggerDeps 901 } 902 return nil 903 } 904 905 func (x *CLError) GetDepRunFailed() int64 { 906 if x, ok := x.GetKind().(*CLError_DepRunFailed); ok { 907 return x.DepRunFailed 908 } 909 return 0 910 } 911 912 type isCLError_Kind interface { 913 isCLError_Kind() 914 } 915 916 type CLError_OwnerLacksEmail struct { 917 OwnerLacksEmail bool `protobuf:"varint,1,opt,name=owner_lacks_email,json=ownerLacksEmail,proto3,oneof"` 918 } 919 920 type CLError_WatchedByManyConfigGroups_ struct { 921 WatchedByManyConfigGroups *CLError_WatchedByManyConfigGroups `protobuf:"bytes,2,opt,name=watched_by_many_config_groups,json=watchedByManyConfigGroups,proto3,oneof"` 922 } 923 924 type CLError_WatchedByManyProjects_ struct { 925 WatchedByManyProjects *CLError_WatchedByManyProjects `protobuf:"bytes,8,opt,name=watched_by_many_projects,json=watchedByManyProjects,proto3,oneof"` 926 } 927 928 type CLError_InvalidDeps_ struct { 929 InvalidDeps *CLError_InvalidDeps `protobuf:"bytes,3,opt,name=invalid_deps,json=invalidDeps,proto3,oneof"` 930 } 931 932 type CLError_UnsupportedMode struct { 933 UnsupportedMode string `protobuf:"bytes,4,opt,name=unsupported_mode,json=unsupportedMode,proto3,oneof"` 934 } 935 936 type CLError_SelfCqDepend struct { 937 SelfCqDepend bool `protobuf:"varint,5,opt,name=self_cq_depend,json=selfCqDepend,proto3,oneof"` 938 } 939 940 type CLError_CorruptGerritMetadata struct { 941 CorruptGerritMetadata string `protobuf:"bytes,6,opt,name=corrupt_gerrit_metadata,json=corruptGerritMetadata,proto3,oneof"` 942 } 943 944 type CLError_ReusedTrigger_ struct { 945 ReusedTrigger *CLError_ReusedTrigger `protobuf:"bytes,7,opt,name=reused_trigger,json=reusedTrigger,proto3,oneof"` 946 } 947 948 type CLError_CommitBlocked struct { 949 // Set to true when the footer "Commit: false" is present. 950 CommitBlocked bool `protobuf:"varint,9,opt,name=commit_blocked,json=commitBlocked,proto3,oneof"` 951 } 952 953 type CLError_TriggerDeps_ struct { 954 TriggerDeps *CLError_TriggerDeps `protobuf:"bytes,10,opt,name=trigger_deps,json=triggerDeps,proto3,oneof"` 955 } 956 957 type CLError_DepRunFailed struct { 958 // Set with the CL ID of a failed Run, if the purge-requested-CL depends on 959 // the CL. 960 DepRunFailed int64 `protobuf:"varint,11,opt,name=dep_run_failed,json=depRunFailed,proto3,oneof"` 961 } 962 963 func (*CLError_OwnerLacksEmail) isCLError_Kind() {} 964 965 func (*CLError_WatchedByManyConfigGroups_) isCLError_Kind() {} 966 967 func (*CLError_WatchedByManyProjects_) isCLError_Kind() {} 968 969 func (*CLError_InvalidDeps_) isCLError_Kind() {} 970 971 func (*CLError_UnsupportedMode) isCLError_Kind() {} 972 973 func (*CLError_SelfCqDepend) isCLError_Kind() {} 974 975 func (*CLError_CorruptGerritMetadata) isCLError_Kind() {} 976 977 func (*CLError_ReusedTrigger_) isCLError_Kind() {} 978 979 func (*CLError_CommitBlocked) isCLError_Kind() {} 980 981 func (*CLError_TriggerDeps_) isCLError_Kind() {} 982 983 func (*CLError_DepRunFailed) isCLError_Kind() {} 984 985 // CLUpdatedEvent is just a CL ID pinned to its latest known EVersion. 986 type CLUpdatedEvent struct { 987 state protoimpl.MessageState 988 sizeCache protoimpl.SizeCache 989 unknownFields protoimpl.UnknownFields 990 991 Clid int64 `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"` 992 Eversion int64 `protobuf:"varint,2,opt,name=eversion,proto3" json:"eversion,omitempty"` 993 } 994 995 func (x *CLUpdatedEvent) Reset() { 996 *x = CLUpdatedEvent{} 997 if protoimpl.UnsafeEnabled { 998 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8] 999 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1000 ms.StoreMessageInfo(mi) 1001 } 1002 } 1003 1004 func (x *CLUpdatedEvent) String() string { 1005 return protoimpl.X.MessageStringOf(x) 1006 } 1007 1008 func (*CLUpdatedEvent) ProtoMessage() {} 1009 1010 func (x *CLUpdatedEvent) ProtoReflect() protoreflect.Message { 1011 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8] 1012 if protoimpl.UnsafeEnabled && x != nil { 1013 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1014 if ms.LoadMessageInfo() == nil { 1015 ms.StoreMessageInfo(mi) 1016 } 1017 return ms 1018 } 1019 return mi.MessageOf(x) 1020 } 1021 1022 // Deprecated: Use CLUpdatedEvent.ProtoReflect.Descriptor instead. 1023 func (*CLUpdatedEvent) Descriptor() ([]byte, []int) { 1024 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{8} 1025 } 1026 1027 func (x *CLUpdatedEvent) GetClid() int64 { 1028 if x != nil { 1029 return x.Clid 1030 } 1031 return 0 1032 } 1033 1034 func (x *CLUpdatedEvent) GetEversion() int64 { 1035 if x != nil { 1036 return x.Eversion 1037 } 1038 return 0 1039 } 1040 1041 // CLUpdatedEvents is a batch of CLUpdatedEvents. 1042 type CLUpdatedEvents struct { 1043 state protoimpl.MessageState 1044 sizeCache protoimpl.SizeCache 1045 unknownFields protoimpl.UnknownFields 1046 1047 Events []*CLUpdatedEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` 1048 } 1049 1050 func (x *CLUpdatedEvents) Reset() { 1051 *x = CLUpdatedEvents{} 1052 if protoimpl.UnsafeEnabled { 1053 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9] 1054 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1055 ms.StoreMessageInfo(mi) 1056 } 1057 } 1058 1059 func (x *CLUpdatedEvents) String() string { 1060 return protoimpl.X.MessageStringOf(x) 1061 } 1062 1063 func (*CLUpdatedEvents) ProtoMessage() {} 1064 1065 func (x *CLUpdatedEvents) ProtoReflect() protoreflect.Message { 1066 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9] 1067 if protoimpl.UnsafeEnabled && x != nil { 1068 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1069 if ms.LoadMessageInfo() == nil { 1070 ms.StoreMessageInfo(mi) 1071 } 1072 return ms 1073 } 1074 return mi.MessageOf(x) 1075 } 1076 1077 // Deprecated: Use CLUpdatedEvents.ProtoReflect.Descriptor instead. 1078 func (*CLUpdatedEvents) Descriptor() ([]byte, []int) { 1079 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{9} 1080 } 1081 1082 func (x *CLUpdatedEvents) GetEvents() []*CLUpdatedEvent { 1083 if x != nil { 1084 return x.Events 1085 } 1086 return nil 1087 } 1088 1089 // A string key-value pair. 1090 type StringPair struct { 1091 state protoimpl.MessageState 1092 sizeCache protoimpl.SizeCache 1093 unknownFields protoimpl.UnknownFields 1094 1095 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 1096 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 1097 } 1098 1099 func (x *StringPair) Reset() { 1100 *x = StringPair{} 1101 if protoimpl.UnsafeEnabled { 1102 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10] 1103 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1104 ms.StoreMessageInfo(mi) 1105 } 1106 } 1107 1108 func (x *StringPair) String() string { 1109 return protoimpl.X.MessageStringOf(x) 1110 } 1111 1112 func (*StringPair) ProtoMessage() {} 1113 1114 func (x *StringPair) ProtoReflect() protoreflect.Message { 1115 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10] 1116 if protoimpl.UnsafeEnabled && x != nil { 1117 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1118 if ms.LoadMessageInfo() == nil { 1119 ms.StoreMessageInfo(mi) 1120 } 1121 return ms 1122 } 1123 return mi.MessageOf(x) 1124 } 1125 1126 // Deprecated: Use StringPair.ProtoReflect.Descriptor instead. 1127 func (*StringPair) Descriptor() ([]byte, []int) { 1128 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{10} 1129 } 1130 1131 func (x *StringPair) GetKey() string { 1132 if x != nil { 1133 return x.Key 1134 } 1135 return "" 1136 } 1137 1138 func (x *StringPair) GetValue() string { 1139 if x != nil { 1140 return x.Value 1141 } 1142 return "" 1143 } 1144 1145 // Outdated establishes conditions for refreshing Snapshot after CV mutations. 1146 type Snapshot_Outdated struct { 1147 state protoimpl.MessageState 1148 sizeCache protoimpl.SizeCache 1149 unknownFields protoimpl.UnknownFields 1150 } 1151 1152 func (x *Snapshot_Outdated) Reset() { 1153 *x = Snapshot_Outdated{} 1154 if protoimpl.UnsafeEnabled { 1155 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11] 1156 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1157 ms.StoreMessageInfo(mi) 1158 } 1159 } 1160 1161 func (x *Snapshot_Outdated) String() string { 1162 return protoimpl.X.MessageStringOf(x) 1163 } 1164 1165 func (*Snapshot_Outdated) ProtoMessage() {} 1166 1167 func (x *Snapshot_Outdated) ProtoReflect() protoreflect.Message { 1168 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11] 1169 if protoimpl.UnsafeEnabled && x != nil { 1170 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1171 if ms.LoadMessageInfo() == nil { 1172 ms.StoreMessageInfo(mi) 1173 } 1174 return ms 1175 } 1176 return mi.MessageOf(x) 1177 } 1178 1179 // Deprecated: Use Snapshot_Outdated.ProtoReflect.Descriptor instead. 1180 func (*Snapshot_Outdated) Descriptor() ([]byte, []int) { 1181 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0, 0} 1182 } 1183 1184 type ApplicableConfig_Project struct { 1185 state protoimpl.MessageState 1186 sizeCache protoimpl.SizeCache 1187 unknownFields protoimpl.UnknownFields 1188 1189 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1190 // ID of the specific ConfigGroup. See cv/internal/config.ConfigGroupID. 1191 // 1192 // The referenced version may no longer be available to datastore, 1193 // commonly happening if CL wasn't active for a long time. 1194 ConfigGroupIds []string `protobuf:"bytes,2,rep,name=config_group_ids,json=configGroupIds,proto3" json:"config_group_ids,omitempty"` 1195 } 1196 1197 func (x *ApplicableConfig_Project) Reset() { 1198 *x = ApplicableConfig_Project{} 1199 if protoimpl.UnsafeEnabled { 1200 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12] 1201 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1202 ms.StoreMessageInfo(mi) 1203 } 1204 } 1205 1206 func (x *ApplicableConfig_Project) String() string { 1207 return protoimpl.X.MessageStringOf(x) 1208 } 1209 1210 func (*ApplicableConfig_Project) ProtoMessage() {} 1211 1212 func (x *ApplicableConfig_Project) ProtoReflect() protoreflect.Message { 1213 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12] 1214 if protoimpl.UnsafeEnabled && x != nil { 1215 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1216 if ms.LoadMessageInfo() == nil { 1217 ms.StoreMessageInfo(mi) 1218 } 1219 return ms 1220 } 1221 return mi.MessageOf(x) 1222 } 1223 1224 // Deprecated: Use ApplicableConfig_Project.ProtoReflect.Descriptor instead. 1225 func (*ApplicableConfig_Project) Descriptor() ([]byte, []int) { 1226 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{5, 0} 1227 } 1228 1229 func (x *ApplicableConfig_Project) GetName() string { 1230 if x != nil { 1231 return x.Name 1232 } 1233 return "" 1234 } 1235 1236 func (x *ApplicableConfig_Project) GetConfigGroupIds() []string { 1237 if x != nil { 1238 return x.ConfigGroupIds 1239 } 1240 return nil 1241 } 1242 1243 type Access_Project struct { 1244 state protoimpl.MessageState 1245 sizeCache protoimpl.SizeCache 1246 unknownFields protoimpl.UnknownFields 1247 1248 // Deprecated. Use no_access_time instead. 1249 NoAccess bool `protobuf:"varint,1,opt,name=no_access,json=noAccess,proto3" json:"no_access,omitempty"` 1250 // The time when this was last re-confirmed. 1251 UpdateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` 1252 // The time after which CV should consider lack of access stable. 1253 // 1254 // TODO(crbug/1216630): may be unset until backfil is done, 1255 // in which case use `no_access` field. 1256 NoAccessTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=no_access_time,json=noAccessTime,proto3" json:"no_access_time,omitempty"` 1257 } 1258 1259 func (x *Access_Project) Reset() { 1260 *x = Access_Project{} 1261 if protoimpl.UnsafeEnabled { 1262 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13] 1263 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1264 ms.StoreMessageInfo(mi) 1265 } 1266 } 1267 1268 func (x *Access_Project) String() string { 1269 return protoimpl.X.MessageStringOf(x) 1270 } 1271 1272 func (*Access_Project) ProtoMessage() {} 1273 1274 func (x *Access_Project) ProtoReflect() protoreflect.Message { 1275 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13] 1276 if protoimpl.UnsafeEnabled && x != nil { 1277 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1278 if ms.LoadMessageInfo() == nil { 1279 ms.StoreMessageInfo(mi) 1280 } 1281 return ms 1282 } 1283 return mi.MessageOf(x) 1284 } 1285 1286 // Deprecated: Use Access_Project.ProtoReflect.Descriptor instead. 1287 func (*Access_Project) Descriptor() ([]byte, []int) { 1288 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{6, 0} 1289 } 1290 1291 func (x *Access_Project) GetNoAccess() bool { 1292 if x != nil { 1293 return x.NoAccess 1294 } 1295 return false 1296 } 1297 1298 func (x *Access_Project) GetUpdateTime() *timestamppb.Timestamp { 1299 if x != nil { 1300 return x.UpdateTime 1301 } 1302 return nil 1303 } 1304 1305 func (x *Access_Project) GetNoAccessTime() *timestamppb.Timestamp { 1306 if x != nil { 1307 return x.NoAccessTime 1308 } 1309 return nil 1310 } 1311 1312 type CLError_WatchedByManyConfigGroups struct { 1313 state protoimpl.MessageState 1314 sizeCache protoimpl.SizeCache 1315 unknownFields protoimpl.UnknownFields 1316 1317 // Config group names without LUCI project prefix. 1318 ConfigGroups []string `protobuf:"bytes,1,rep,name=config_groups,json=configGroups,proto3" json:"config_groups,omitempty"` 1319 } 1320 1321 func (x *CLError_WatchedByManyConfigGroups) Reset() { 1322 *x = CLError_WatchedByManyConfigGroups{} 1323 if protoimpl.UnsafeEnabled { 1324 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15] 1325 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1326 ms.StoreMessageInfo(mi) 1327 } 1328 } 1329 1330 func (x *CLError_WatchedByManyConfigGroups) String() string { 1331 return protoimpl.X.MessageStringOf(x) 1332 } 1333 1334 func (*CLError_WatchedByManyConfigGroups) ProtoMessage() {} 1335 1336 func (x *CLError_WatchedByManyConfigGroups) ProtoReflect() protoreflect.Message { 1337 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15] 1338 if protoimpl.UnsafeEnabled && x != nil { 1339 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1340 if ms.LoadMessageInfo() == nil { 1341 ms.StoreMessageInfo(mi) 1342 } 1343 return ms 1344 } 1345 return mi.MessageOf(x) 1346 } 1347 1348 // Deprecated: Use CLError_WatchedByManyConfigGroups.ProtoReflect.Descriptor instead. 1349 func (*CLError_WatchedByManyConfigGroups) Descriptor() ([]byte, []int) { 1350 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 0} 1351 } 1352 1353 func (x *CLError_WatchedByManyConfigGroups) GetConfigGroups() []string { 1354 if x != nil { 1355 return x.ConfigGroups 1356 } 1357 return nil 1358 } 1359 1360 type CLError_WatchedByManyProjects struct { 1361 state protoimpl.MessageState 1362 sizeCache protoimpl.SizeCache 1363 unknownFields protoimpl.UnknownFields 1364 1365 Projects []string `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` 1366 } 1367 1368 func (x *CLError_WatchedByManyProjects) Reset() { 1369 *x = CLError_WatchedByManyProjects{} 1370 if protoimpl.UnsafeEnabled { 1371 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16] 1372 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1373 ms.StoreMessageInfo(mi) 1374 } 1375 } 1376 1377 func (x *CLError_WatchedByManyProjects) String() string { 1378 return protoimpl.X.MessageStringOf(x) 1379 } 1380 1381 func (*CLError_WatchedByManyProjects) ProtoMessage() {} 1382 1383 func (x *CLError_WatchedByManyProjects) ProtoReflect() protoreflect.Message { 1384 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16] 1385 if protoimpl.UnsafeEnabled && x != nil { 1386 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1387 if ms.LoadMessageInfo() == nil { 1388 ms.StoreMessageInfo(mi) 1389 } 1390 return ms 1391 } 1392 return mi.MessageOf(x) 1393 } 1394 1395 // Deprecated: Use CLError_WatchedByManyProjects.ProtoReflect.Descriptor instead. 1396 func (*CLError_WatchedByManyProjects) Descriptor() ([]byte, []int) { 1397 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 1} 1398 } 1399 1400 func (x *CLError_WatchedByManyProjects) GetProjects() []string { 1401 if x != nil { 1402 return x.Projects 1403 } 1404 return nil 1405 } 1406 1407 type CLError_InvalidDeps struct { 1408 state protoimpl.MessageState 1409 sizeCache protoimpl.SizeCache 1410 unknownFields protoimpl.UnknownFields 1411 1412 // Deps not watched by the same LUCI project as the dependent. 1413 Unwatched []*Dep `protobuf:"bytes,1,rep,name=unwatched,proto3" json:"unwatched,omitempty"` 1414 // Deps watched by the same LUCI project but different config group. 1415 WrongConfigGroup []*Dep `protobuf:"bytes,2,rep,name=wrong_config_group,json=wrongConfigGroup,proto3" json:"wrong_config_group,omitempty"` 1416 // Not yet submitted deps of a full run in non-combinable mode. 1417 SingleFullDeps []*Dep `protobuf:"bytes,3,rep,name=single_full_deps,json=singleFullDeps,proto3" json:"single_full_deps,omitempty"` 1418 // Not yet CQ-ed deps of a Run in combinable mode. 1419 CombinableUntriggered []*Dep `protobuf:"bytes,4,rep,name=combinable_untriggered,json=combinableUntriggered,proto3" json:"combinable_untriggered,omitempty"` 1420 // CQ-ed deps of a different mode. 1421 CombinableMismatchedMode []*Dep `protobuf:"bytes,5,rep,name=combinable_mismatched_mode,json=combinableMismatchedMode,proto3" json:"combinable_mismatched_mode,omitempty"` 1422 // There are more non-submitted deps than is supported by CV. 1423 TooMany *CLError_InvalidDeps_TooMany `protobuf:"bytes,6,opt,name=too_many,json=tooMany,proto3" json:"too_many,omitempty"` 1424 } 1425 1426 func (x *CLError_InvalidDeps) Reset() { 1427 *x = CLError_InvalidDeps{} 1428 if protoimpl.UnsafeEnabled { 1429 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17] 1430 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1431 ms.StoreMessageInfo(mi) 1432 } 1433 } 1434 1435 func (x *CLError_InvalidDeps) String() string { 1436 return protoimpl.X.MessageStringOf(x) 1437 } 1438 1439 func (*CLError_InvalidDeps) ProtoMessage() {} 1440 1441 func (x *CLError_InvalidDeps) ProtoReflect() protoreflect.Message { 1442 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17] 1443 if protoimpl.UnsafeEnabled && x != nil { 1444 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1445 if ms.LoadMessageInfo() == nil { 1446 ms.StoreMessageInfo(mi) 1447 } 1448 return ms 1449 } 1450 return mi.MessageOf(x) 1451 } 1452 1453 // Deprecated: Use CLError_InvalidDeps.ProtoReflect.Descriptor instead. 1454 func (*CLError_InvalidDeps) Descriptor() ([]byte, []int) { 1455 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 2} 1456 } 1457 1458 func (x *CLError_InvalidDeps) GetUnwatched() []*Dep { 1459 if x != nil { 1460 return x.Unwatched 1461 } 1462 return nil 1463 } 1464 1465 func (x *CLError_InvalidDeps) GetWrongConfigGroup() []*Dep { 1466 if x != nil { 1467 return x.WrongConfigGroup 1468 } 1469 return nil 1470 } 1471 1472 func (x *CLError_InvalidDeps) GetSingleFullDeps() []*Dep { 1473 if x != nil { 1474 return x.SingleFullDeps 1475 } 1476 return nil 1477 } 1478 1479 func (x *CLError_InvalidDeps) GetCombinableUntriggered() []*Dep { 1480 if x != nil { 1481 return x.CombinableUntriggered 1482 } 1483 return nil 1484 } 1485 1486 func (x *CLError_InvalidDeps) GetCombinableMismatchedMode() []*Dep { 1487 if x != nil { 1488 return x.CombinableMismatchedMode 1489 } 1490 return nil 1491 } 1492 1493 func (x *CLError_InvalidDeps) GetTooMany() *CLError_InvalidDeps_TooMany { 1494 if x != nil { 1495 return x.TooMany 1496 } 1497 return nil 1498 } 1499 1500 // ReusedTrigger means a CL trigger (e.g. CQ+1 vote) has already resulted in 1501 // a CQ Run which was finalized. 1502 // 1503 // Two known cases when this happens with a Gerrit CL: 1504 // 1. A user uploads a CL on ref A, then votes CQ+1. 1505 // Before the Dry Run completes, the CL is moved to ref B, while 1506 // preserving the CQ+1 vote. 1507 // The old Run is finalized, but the new Run has the exact same trigger, 1508 // which in CQDaemon-compatible mode means the new Run's ID is exactly the 1509 // same as the old one, so CV can't create a new Run. 1510 // TODO(crbug/1223349): after CQDaemon is deleted, the Run ID generation scheme 1511 // can take into account the ref of a CL, and this use case can be allowed. 1512 // 2. The same as above but instead of moving CL between refs, abandon and 1513 // restore the CL. 1514 type CLError_ReusedTrigger struct { 1515 state protoimpl.MessageState 1516 sizeCache protoimpl.SizeCache 1517 unknownFields protoimpl.UnknownFields 1518 1519 // ID of the finalized Run. 1520 Run string `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"` 1521 } 1522 1523 func (x *CLError_ReusedTrigger) Reset() { 1524 *x = CLError_ReusedTrigger{} 1525 if protoimpl.UnsafeEnabled { 1526 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18] 1527 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1528 ms.StoreMessageInfo(mi) 1529 } 1530 } 1531 1532 func (x *CLError_ReusedTrigger) String() string { 1533 return protoimpl.X.MessageStringOf(x) 1534 } 1535 1536 func (*CLError_ReusedTrigger) ProtoMessage() {} 1537 1538 func (x *CLError_ReusedTrigger) ProtoReflect() protoreflect.Message { 1539 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18] 1540 if protoimpl.UnsafeEnabled && x != nil { 1541 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1542 if ms.LoadMessageInfo() == nil { 1543 ms.StoreMessageInfo(mi) 1544 } 1545 return ms 1546 } 1547 return mi.MessageOf(x) 1548 } 1549 1550 // Deprecated: Use CLError_ReusedTrigger.ProtoReflect.Descriptor instead. 1551 func (*CLError_ReusedTrigger) Descriptor() ([]byte, []int) { 1552 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 3} 1553 } 1554 1555 func (x *CLError_ReusedTrigger) GetRun() string { 1556 if x != nil { 1557 return x.Run 1558 } 1559 return "" 1560 } 1561 1562 // TriggerDeps indicates failures for triggering deps. 1563 type CLError_TriggerDeps struct { 1564 state protoimpl.MessageState 1565 sizeCache protoimpl.SizeCache 1566 unknownFields protoimpl.UnknownFields 1567 1568 // IDs of CLs for which trigger attempts failed due to permission denied. 1569 PermissionDenied []*CLError_TriggerDeps_PermissionDenied `protobuf:"bytes,1,rep,name=permission_denied,json=permissionDenied,proto3" json:"permission_denied,omitempty"` 1570 // IDs of CLs for which trigger attempts failed because they were not found 1571 // in Gerrit. 1572 NotFound []int64 `protobuf:"varint,2,rep,packed,name=not_found,json=notFound,proto3" json:"not_found,omitempty"` 1573 // IDs of CLs for which trigger attempts failed due to internal Gerrit 1574 // error. 1575 InternalGerritError []int64 `protobuf:"varint,3,rep,packed,name=internal_gerrit_error,json=internalGerritError,proto3" json:"internal_gerrit_error,omitempty"` 1576 } 1577 1578 func (x *CLError_TriggerDeps) Reset() { 1579 *x = CLError_TriggerDeps{} 1580 if protoimpl.UnsafeEnabled { 1581 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19] 1582 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1583 ms.StoreMessageInfo(mi) 1584 } 1585 } 1586 1587 func (x *CLError_TriggerDeps) String() string { 1588 return protoimpl.X.MessageStringOf(x) 1589 } 1590 1591 func (*CLError_TriggerDeps) ProtoMessage() {} 1592 1593 func (x *CLError_TriggerDeps) ProtoReflect() protoreflect.Message { 1594 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19] 1595 if protoimpl.UnsafeEnabled && x != nil { 1596 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1597 if ms.LoadMessageInfo() == nil { 1598 ms.StoreMessageInfo(mi) 1599 } 1600 return ms 1601 } 1602 return mi.MessageOf(x) 1603 } 1604 1605 // Deprecated: Use CLError_TriggerDeps.ProtoReflect.Descriptor instead. 1606 func (*CLError_TriggerDeps) Descriptor() ([]byte, []int) { 1607 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 4} 1608 } 1609 1610 func (x *CLError_TriggerDeps) GetPermissionDenied() []*CLError_TriggerDeps_PermissionDenied { 1611 if x != nil { 1612 return x.PermissionDenied 1613 } 1614 return nil 1615 } 1616 1617 func (x *CLError_TriggerDeps) GetNotFound() []int64 { 1618 if x != nil { 1619 return x.NotFound 1620 } 1621 return nil 1622 } 1623 1624 func (x *CLError_TriggerDeps) GetInternalGerritError() []int64 { 1625 if x != nil { 1626 return x.InternalGerritError 1627 } 1628 return nil 1629 } 1630 1631 type CLError_InvalidDeps_TooMany struct { 1632 state protoimpl.MessageState 1633 sizeCache protoimpl.SizeCache 1634 unknownFields protoimpl.UnknownFields 1635 1636 Actual int32 `protobuf:"varint,1,opt,name=actual,proto3" json:"actual,omitempty"` 1637 MaxAllowed int32 `protobuf:"varint,2,opt,name=max_allowed,json=maxAllowed,proto3" json:"max_allowed,omitempty"` 1638 } 1639 1640 func (x *CLError_InvalidDeps_TooMany) Reset() { 1641 *x = CLError_InvalidDeps_TooMany{} 1642 if protoimpl.UnsafeEnabled { 1643 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[20] 1644 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1645 ms.StoreMessageInfo(mi) 1646 } 1647 } 1648 1649 func (x *CLError_InvalidDeps_TooMany) String() string { 1650 return protoimpl.X.MessageStringOf(x) 1651 } 1652 1653 func (*CLError_InvalidDeps_TooMany) ProtoMessage() {} 1654 1655 func (x *CLError_InvalidDeps_TooMany) ProtoReflect() protoreflect.Message { 1656 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[20] 1657 if protoimpl.UnsafeEnabled && x != nil { 1658 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1659 if ms.LoadMessageInfo() == nil { 1660 ms.StoreMessageInfo(mi) 1661 } 1662 return ms 1663 } 1664 return mi.MessageOf(x) 1665 } 1666 1667 // Deprecated: Use CLError_InvalidDeps_TooMany.ProtoReflect.Descriptor instead. 1668 func (*CLError_InvalidDeps_TooMany) Descriptor() ([]byte, []int) { 1669 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 2, 0} 1670 } 1671 1672 func (x *CLError_InvalidDeps_TooMany) GetActual() int32 { 1673 if x != nil { 1674 return x.Actual 1675 } 1676 return 0 1677 } 1678 1679 func (x *CLError_InvalidDeps_TooMany) GetMaxAllowed() int32 { 1680 if x != nil { 1681 return x.MaxAllowed 1682 } 1683 return 0 1684 } 1685 1686 type CLError_TriggerDeps_PermissionDenied struct { 1687 state protoimpl.MessageState 1688 sizeCache protoimpl.SizeCache 1689 unknownFields protoimpl.UnknownFields 1690 1691 Clid int64 `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"` 1692 // If set, the vote was attempted on behalf of the Gerrit user. 1693 Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` 1694 } 1695 1696 func (x *CLError_TriggerDeps_PermissionDenied) Reset() { 1697 *x = CLError_TriggerDeps_PermissionDenied{} 1698 if protoimpl.UnsafeEnabled { 1699 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[21] 1700 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1701 ms.StoreMessageInfo(mi) 1702 } 1703 } 1704 1705 func (x *CLError_TriggerDeps_PermissionDenied) String() string { 1706 return protoimpl.X.MessageStringOf(x) 1707 } 1708 1709 func (*CLError_TriggerDeps_PermissionDenied) ProtoMessage() {} 1710 1711 func (x *CLError_TriggerDeps_PermissionDenied) ProtoReflect() protoreflect.Message { 1712 mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[21] 1713 if protoimpl.UnsafeEnabled && x != nil { 1714 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1715 if ms.LoadMessageInfo() == nil { 1716 ms.StoreMessageInfo(mi) 1717 } 1718 return ms 1719 } 1720 return mi.MessageOf(x) 1721 } 1722 1723 // Deprecated: Use CLError_TriggerDeps_PermissionDenied.ProtoReflect.Descriptor instead. 1724 func (*CLError_TriggerDeps_PermissionDenied) Descriptor() ([]byte, []int) { 1725 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 4, 0} 1726 } 1727 1728 func (x *CLError_TriggerDeps_PermissionDenied) GetClid() int64 { 1729 if x != nil { 1730 return x.Clid 1731 } 1732 return 0 1733 } 1734 1735 func (x *CLError_TriggerDeps_PermissionDenied) GetEmail() string { 1736 if x != nil { 1737 return x.Email 1738 } 1739 return "" 1740 } 1741 1742 var File_go_chromium_org_luci_cv_internal_changelist_storage_proto protoreflect.FileDescriptor 1743 1744 var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc = []byte{ 1745 0x0a, 0x39, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 1746 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x76, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 1747 0x61, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x73, 0x74, 1748 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x63, 0x76, 0x2e, 1749 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 1750 0x69, 0x73, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 1751 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 1752 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 1753 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 1754 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x2f, 0x67, 1755 0x65, 0x72, 0x72, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x04, 0x0a, 0x08, 1756 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x4c, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65, 1757 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 1758 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 1759 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 1760 0x6d, 0x70, 0x52, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 1761 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x75, 0x63, 0x69, 0x5f, 0x70, 1762 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x75, 1763 0x63, 0x69, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x65, 0x70, 1764 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 1765 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 1766 0x2e, 0x44, 0x65, 0x70, 0x52, 0x04, 0x64, 0x65, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 1767 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 1768 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x71, 1769 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 1770 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x45, 0x71, 0x75, 0x69, 1771 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x37, 1772 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 1773 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 1774 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 1775 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x64, 0x61, 1776 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x76, 0x2e, 0x69, 1777 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 1778 0x73, 0x74, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x64, 1779 0x61, 0x74, 0x65, 0x64, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3e, 1780 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 1781 0x32, 0x22, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 1782 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 1783 0x50, 0x61, 0x69, 0x72, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 1784 0x0a, 0x06, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 1785 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 1786 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x48, 0x00, 1787 0x52, 0x06, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x4f, 0x75, 0x74, 0x64, 1788 0x61, 0x74, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x4e, 0x0a, 0x03, 1789 0x44, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 1790 0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 1791 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 1792 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 1793 0x65, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xdf, 0x01, 0x0a, 1794 0x06, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 1795 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x69, 1796 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x65, 0x72, 0x72, 1797 0x69, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 1798 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 1799 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x08, 0x67, 0x69, 0x74, 1800 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x76, 1801 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 1802 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x47, 0x69, 0x74, 0x44, 0x65, 1803 0x70, 0x52, 0x07, 0x67, 0x69, 0x74, 0x44, 0x65, 0x70, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x73, 0x6f, 1804 0x66, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 1805 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 1806 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, 0x6f, 0x66, 1807 0x74, 0x44, 0x65, 0x70, 0x52, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x70, 0x73, 0x22, 0x44, 1808 0x0a, 0x0c, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x47, 0x69, 0x74, 0x44, 0x65, 0x70, 0x12, 0x16, 1809 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 1810 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 1811 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6d, 0x6d, 0x65, 0x64, 1812 0x69, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x0d, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, 0x6f, 1813 0x66, 0x74, 0x44, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 1814 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 1815 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 1816 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 1817 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 1818 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 1819 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 1820 0x74, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 1821 0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 1822 0x65, 0x63, 0x74, 0x73, 0x1a, 0x47, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 1823 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 1824 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 1825 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 1826 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x22, 0xe4, 0x02, 1827 0x0a, 0x06, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x62, 0x79, 0x5f, 0x70, 1828 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 1829 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 1830 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2e, 0x42, 0x79, 0x50, 1831 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x62, 0x79, 0x50, 1832 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0xa5, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 1833 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 1834 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 1835 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 1836 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 1837 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 1838 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0e, 1839 0x6e, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 1840 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 1841 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 1842 0x52, 0x0c, 0x6e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x64, 1843 0x0a, 0x0e, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 1844 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 1845 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 1846 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 1847 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 1848 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 1849 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd0, 0x0d, 0x0a, 0x07, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 1850 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x5f, 1851 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x6f, 1852 0x77, 0x6e, 0x65, 0x72, 0x4c, 0x61, 0x63, 0x6b, 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x7d, 1853 0x0a, 0x1d, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 1854 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 1855 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 1856 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 1857 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 1858 0x4d, 0x61, 0x6e, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 1859 0x48, 0x00, 0x52, 0x19, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 1860 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x70, 0x0a, 1861 0x18, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x79, 1862 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 1863 0x35, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 1864 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 1865 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72, 1866 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x48, 0x00, 0x52, 0x15, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 1867 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 1868 0x50, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 1869 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 1870 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 1871 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 1872 0x70, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 0x70, 1873 0x73, 0x12, 0x2b, 0x0a, 0x10, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 1874 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x75, 1875 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26, 1876 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x63, 0x71, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 1877 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x43, 0x71, 1878 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x17, 0x63, 0x6f, 0x72, 0x72, 0x75, 0x70, 1879 0x74, 0x5f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 1880 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x72, 0x72, 0x75, 1881 0x70, 0x74, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 1882 0x12, 0x56, 0x0a, 0x0e, 0x72, 0x65, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 1883 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 1884 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 1885 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x75, 0x73, 0x65, 0x64, 1886 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x75, 0x73, 0x65, 1887 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 1888 0x69, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 1889 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 1890 0x64, 0x12, 0x50, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 1891 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 1892 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 1893 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 1894 0x44, 0x65, 0x70, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 1895 0x65, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x66, 1896 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x64, 1897 0x65, 0x70, 0x52, 0x75, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x1a, 0x40, 0x0a, 0x19, 0x57, 1898 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x43, 0x6f, 0x6e, 0x66, 1899 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 1900 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 1901 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x33, 0x0a, 1902 0x15, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72, 1903 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 1904 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 1905 0x74, 0x73, 0x1a, 0x9d, 0x04, 0x0a, 0x0b, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 1906 0x70, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x75, 0x6e, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x18, 1907 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 1908 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 1909 0x65, 0x70, 0x52, 0x09, 0x75, 0x6e, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x12, 0x49, 0x0a, 1910 0x12, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 1911 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 1912 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 1913 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x10, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 1914 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x45, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 1915 0x6c, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 1916 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 1917 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 1918 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x65, 0x70, 0x73, 0x12, 1919 0x52, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x6e, 1920 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 1921 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 1922 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x15, 0x63, 0x6f, 1923 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x6e, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 1924 0x72, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 1925 0x65, 0x5f, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 1926 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 1927 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 1928 0x2e, 0x44, 0x65, 0x70, 0x52, 0x18, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 1929 0x4d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4e, 1930 0x0a, 0x08, 0x74, 0x6f, 0x6f, 0x5f, 0x6d, 0x61, 0x6e, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 1931 0x32, 0x33, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 1932 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 1933 0x72, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 0x70, 0x73, 0x2e, 0x54, 0x6f, 1934 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x1a, 0x42, 1935 0x0a, 0x07, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 1936 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x75, 0x61, 1937 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 1938 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 1939 0x65, 0x64, 0x1a, 0x21, 0x0a, 0x0d, 0x52, 0x65, 0x75, 0x73, 0x65, 0x64, 0x54, 0x72, 0x69, 0x67, 1940 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 1941 0x52, 0x03, 0x72, 0x75, 0x6e, 0x1a, 0x87, 0x02, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 1942 0x72, 0x44, 0x65, 0x70, 0x73, 0x12, 0x69, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 1943 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 1944 0x32, 0x3c, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 1945 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 1946 0x72, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x70, 0x73, 0x2e, 0x50, 0x65, 1947 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x52, 0x10, 1948 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 1949 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 1950 0x03, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x32, 0x0a, 1951 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 1952 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x13, 0x69, 0x6e, 1953 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 1954 0x72, 0x1a, 0x3c, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 1955 0x65, 0x6e, 0x69, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 1956 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 1957 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x42, 1958 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x43, 0x4c, 0x55, 0x70, 0x64, 1959 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69, 1960 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x1a, 0x0a, 1961 0x08, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 1962 0x08, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x0f, 0x43, 0x4c, 0x55, 1963 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x06, 1964 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 1965 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 1966 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 1967 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x0a, 1968 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 1969 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 1970 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 1971 0x75, 0x65, 0x2a, 0x37, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 1972 0x14, 0x44, 0x45, 0x50, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 1973 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x41, 0x52, 0x44, 0x10, 1974 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x02, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 1975 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 1976 0x75, 0x63, 0x69, 0x2f, 0x63, 0x76, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 1977 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 1978 0x6f, 0x33, 1979 } 1980 1981 var ( 1982 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescOnce sync.Once 1983 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData = file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc 1984 ) 1985 1986 func file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP() []byte { 1987 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescOnce.Do(func() { 1988 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) 1989 }) 1990 return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData 1991 } 1992 1993 var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 1994 var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 22) 1995 var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes = []interface{}{ 1996 (DepKind)(0), // 0: cv.internal.changelist.DepKind 1997 (*Snapshot)(nil), // 1: cv.internal.changelist.Snapshot 1998 (*Dep)(nil), // 2: cv.internal.changelist.Dep 1999 (*Gerrit)(nil), // 3: cv.internal.changelist.Gerrit 2000 (*GerritGitDep)(nil), // 4: cv.internal.changelist.GerritGitDep 2001 (*GerritSoftDep)(nil), // 5: cv.internal.changelist.GerritSoftDep 2002 (*ApplicableConfig)(nil), // 6: cv.internal.changelist.ApplicableConfig 2003 (*Access)(nil), // 7: cv.internal.changelist.Access 2004 (*CLError)(nil), // 8: cv.internal.changelist.CLError 2005 (*CLUpdatedEvent)(nil), // 9: cv.internal.changelist.CLUpdatedEvent 2006 (*CLUpdatedEvents)(nil), // 10: cv.internal.changelist.CLUpdatedEvents 2007 (*StringPair)(nil), // 11: cv.internal.changelist.StringPair 2008 (*Snapshot_Outdated)(nil), // 12: cv.internal.changelist.Snapshot.Outdated 2009 (*ApplicableConfig_Project)(nil), // 13: cv.internal.changelist.ApplicableConfig.Project 2010 (*Access_Project)(nil), // 14: cv.internal.changelist.Access.Project 2011 nil, // 15: cv.internal.changelist.Access.ByProjectEntry 2012 (*CLError_WatchedByManyConfigGroups)(nil), // 16: cv.internal.changelist.CLError.WatchedByManyConfigGroups 2013 (*CLError_WatchedByManyProjects)(nil), // 17: cv.internal.changelist.CLError.WatchedByManyProjects 2014 (*CLError_InvalidDeps)(nil), // 18: cv.internal.changelist.CLError.InvalidDeps 2015 (*CLError_ReusedTrigger)(nil), // 19: cv.internal.changelist.CLError.ReusedTrigger 2016 (*CLError_TriggerDeps)(nil), // 20: cv.internal.changelist.CLError.TriggerDeps 2017 (*CLError_InvalidDeps_TooMany)(nil), // 21: cv.internal.changelist.CLError.InvalidDeps.TooMany 2018 (*CLError_TriggerDeps_PermissionDenied)(nil), // 22: cv.internal.changelist.CLError.TriggerDeps.PermissionDenied 2019 (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp 2020 (*gerrit.ChangeInfo)(nil), // 24: gerrit.ChangeInfo 2021 } 2022 var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs = []int32{ 2023 23, // 0: cv.internal.changelist.Snapshot.external_update_time:type_name -> google.protobuf.Timestamp 2024 2, // 1: cv.internal.changelist.Snapshot.deps:type_name -> cv.internal.changelist.Dep 2025 8, // 2: cv.internal.changelist.Snapshot.errors:type_name -> cv.internal.changelist.CLError 2026 12, // 3: cv.internal.changelist.Snapshot.outdated:type_name -> cv.internal.changelist.Snapshot.Outdated 2027 11, // 4: cv.internal.changelist.Snapshot.metadata:type_name -> cv.internal.changelist.StringPair 2028 3, // 5: cv.internal.changelist.Snapshot.gerrit:type_name -> cv.internal.changelist.Gerrit 2029 0, // 6: cv.internal.changelist.Dep.kind:type_name -> cv.internal.changelist.DepKind 2030 24, // 7: cv.internal.changelist.Gerrit.info:type_name -> gerrit.ChangeInfo 2031 4, // 8: cv.internal.changelist.Gerrit.git_deps:type_name -> cv.internal.changelist.GerritGitDep 2032 5, // 9: cv.internal.changelist.Gerrit.soft_deps:type_name -> cv.internal.changelist.GerritSoftDep 2033 13, // 10: cv.internal.changelist.ApplicableConfig.projects:type_name -> cv.internal.changelist.ApplicableConfig.Project 2034 15, // 11: cv.internal.changelist.Access.by_project:type_name -> cv.internal.changelist.Access.ByProjectEntry 2035 16, // 12: cv.internal.changelist.CLError.watched_by_many_config_groups:type_name -> cv.internal.changelist.CLError.WatchedByManyConfigGroups 2036 17, // 13: cv.internal.changelist.CLError.watched_by_many_projects:type_name -> cv.internal.changelist.CLError.WatchedByManyProjects 2037 18, // 14: cv.internal.changelist.CLError.invalid_deps:type_name -> cv.internal.changelist.CLError.InvalidDeps 2038 19, // 15: cv.internal.changelist.CLError.reused_trigger:type_name -> cv.internal.changelist.CLError.ReusedTrigger 2039 20, // 16: cv.internal.changelist.CLError.trigger_deps:type_name -> cv.internal.changelist.CLError.TriggerDeps 2040 9, // 17: cv.internal.changelist.CLUpdatedEvents.events:type_name -> cv.internal.changelist.CLUpdatedEvent 2041 23, // 18: cv.internal.changelist.Access.Project.update_time:type_name -> google.protobuf.Timestamp 2042 23, // 19: cv.internal.changelist.Access.Project.no_access_time:type_name -> google.protobuf.Timestamp 2043 14, // 20: cv.internal.changelist.Access.ByProjectEntry.value:type_name -> cv.internal.changelist.Access.Project 2044 2, // 21: cv.internal.changelist.CLError.InvalidDeps.unwatched:type_name -> cv.internal.changelist.Dep 2045 2, // 22: cv.internal.changelist.CLError.InvalidDeps.wrong_config_group:type_name -> cv.internal.changelist.Dep 2046 2, // 23: cv.internal.changelist.CLError.InvalidDeps.single_full_deps:type_name -> cv.internal.changelist.Dep 2047 2, // 24: cv.internal.changelist.CLError.InvalidDeps.combinable_untriggered:type_name -> cv.internal.changelist.Dep 2048 2, // 25: cv.internal.changelist.CLError.InvalidDeps.combinable_mismatched_mode:type_name -> cv.internal.changelist.Dep 2049 21, // 26: cv.internal.changelist.CLError.InvalidDeps.too_many:type_name -> cv.internal.changelist.CLError.InvalidDeps.TooMany 2050 22, // 27: cv.internal.changelist.CLError.TriggerDeps.permission_denied:type_name -> cv.internal.changelist.CLError.TriggerDeps.PermissionDenied 2051 28, // [28:28] is the sub-list for method output_type 2052 28, // [28:28] is the sub-list for method input_type 2053 28, // [28:28] is the sub-list for extension type_name 2054 28, // [28:28] is the sub-list for extension extendee 2055 0, // [0:28] is the sub-list for field type_name 2056 } 2057 2058 func init() { file_go_chromium_org_luci_cv_internal_changelist_storage_proto_init() } 2059 func file_go_chromium_org_luci_cv_internal_changelist_storage_proto_init() { 2060 if File_go_chromium_org_luci_cv_internal_changelist_storage_proto != nil { 2061 return 2062 } 2063 if !protoimpl.UnsafeEnabled { 2064 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2065 switch v := v.(*Snapshot); i { 2066 case 0: 2067 return &v.state 2068 case 1: 2069 return &v.sizeCache 2070 case 2: 2071 return &v.unknownFields 2072 default: 2073 return nil 2074 } 2075 } 2076 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2077 switch v := v.(*Dep); i { 2078 case 0: 2079 return &v.state 2080 case 1: 2081 return &v.sizeCache 2082 case 2: 2083 return &v.unknownFields 2084 default: 2085 return nil 2086 } 2087 } 2088 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2089 switch v := v.(*Gerrit); i { 2090 case 0: 2091 return &v.state 2092 case 1: 2093 return &v.sizeCache 2094 case 2: 2095 return &v.unknownFields 2096 default: 2097 return nil 2098 } 2099 } 2100 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2101 switch v := v.(*GerritGitDep); i { 2102 case 0: 2103 return &v.state 2104 case 1: 2105 return &v.sizeCache 2106 case 2: 2107 return &v.unknownFields 2108 default: 2109 return nil 2110 } 2111 } 2112 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2113 switch v := v.(*GerritSoftDep); i { 2114 case 0: 2115 return &v.state 2116 case 1: 2117 return &v.sizeCache 2118 case 2: 2119 return &v.unknownFields 2120 default: 2121 return nil 2122 } 2123 } 2124 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2125 switch v := v.(*ApplicableConfig); i { 2126 case 0: 2127 return &v.state 2128 case 1: 2129 return &v.sizeCache 2130 case 2: 2131 return &v.unknownFields 2132 default: 2133 return nil 2134 } 2135 } 2136 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2137 switch v := v.(*Access); i { 2138 case 0: 2139 return &v.state 2140 case 1: 2141 return &v.sizeCache 2142 case 2: 2143 return &v.unknownFields 2144 default: 2145 return nil 2146 } 2147 } 2148 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2149 switch v := v.(*CLError); i { 2150 case 0: 2151 return &v.state 2152 case 1: 2153 return &v.sizeCache 2154 case 2: 2155 return &v.unknownFields 2156 default: 2157 return nil 2158 } 2159 } 2160 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2161 switch v := v.(*CLUpdatedEvent); i { 2162 case 0: 2163 return &v.state 2164 case 1: 2165 return &v.sizeCache 2166 case 2: 2167 return &v.unknownFields 2168 default: 2169 return nil 2170 } 2171 } 2172 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2173 switch v := v.(*CLUpdatedEvents); i { 2174 case 0: 2175 return &v.state 2176 case 1: 2177 return &v.sizeCache 2178 case 2: 2179 return &v.unknownFields 2180 default: 2181 return nil 2182 } 2183 } 2184 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2185 switch v := v.(*StringPair); i { 2186 case 0: 2187 return &v.state 2188 case 1: 2189 return &v.sizeCache 2190 case 2: 2191 return &v.unknownFields 2192 default: 2193 return nil 2194 } 2195 } 2196 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2197 switch v := v.(*Snapshot_Outdated); i { 2198 case 0: 2199 return &v.state 2200 case 1: 2201 return &v.sizeCache 2202 case 2: 2203 return &v.unknownFields 2204 default: 2205 return nil 2206 } 2207 } 2208 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 2209 switch v := v.(*ApplicableConfig_Project); i { 2210 case 0: 2211 return &v.state 2212 case 1: 2213 return &v.sizeCache 2214 case 2: 2215 return &v.unknownFields 2216 default: 2217 return nil 2218 } 2219 } 2220 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 2221 switch v := v.(*Access_Project); i { 2222 case 0: 2223 return &v.state 2224 case 1: 2225 return &v.sizeCache 2226 case 2: 2227 return &v.unknownFields 2228 default: 2229 return nil 2230 } 2231 } 2232 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 2233 switch v := v.(*CLError_WatchedByManyConfigGroups); i { 2234 case 0: 2235 return &v.state 2236 case 1: 2237 return &v.sizeCache 2238 case 2: 2239 return &v.unknownFields 2240 default: 2241 return nil 2242 } 2243 } 2244 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 2245 switch v := v.(*CLError_WatchedByManyProjects); i { 2246 case 0: 2247 return &v.state 2248 case 1: 2249 return &v.sizeCache 2250 case 2: 2251 return &v.unknownFields 2252 default: 2253 return nil 2254 } 2255 } 2256 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 2257 switch v := v.(*CLError_InvalidDeps); i { 2258 case 0: 2259 return &v.state 2260 case 1: 2261 return &v.sizeCache 2262 case 2: 2263 return &v.unknownFields 2264 default: 2265 return nil 2266 } 2267 } 2268 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 2269 switch v := v.(*CLError_ReusedTrigger); i { 2270 case 0: 2271 return &v.state 2272 case 1: 2273 return &v.sizeCache 2274 case 2: 2275 return &v.unknownFields 2276 default: 2277 return nil 2278 } 2279 } 2280 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 2281 switch v := v.(*CLError_TriggerDeps); i { 2282 case 0: 2283 return &v.state 2284 case 1: 2285 return &v.sizeCache 2286 case 2: 2287 return &v.unknownFields 2288 default: 2289 return nil 2290 } 2291 } 2292 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 2293 switch v := v.(*CLError_InvalidDeps_TooMany); i { 2294 case 0: 2295 return &v.state 2296 case 1: 2297 return &v.sizeCache 2298 case 2: 2299 return &v.unknownFields 2300 default: 2301 return nil 2302 } 2303 } 2304 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 2305 switch v := v.(*CLError_TriggerDeps_PermissionDenied); i { 2306 case 0: 2307 return &v.state 2308 case 1: 2309 return &v.sizeCache 2310 case 2: 2311 return &v.unknownFields 2312 default: 2313 return nil 2314 } 2315 } 2316 } 2317 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0].OneofWrappers = []interface{}{ 2318 (*Snapshot_Gerrit)(nil), 2319 } 2320 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7].OneofWrappers = []interface{}{ 2321 (*CLError_OwnerLacksEmail)(nil), 2322 (*CLError_WatchedByManyConfigGroups_)(nil), 2323 (*CLError_WatchedByManyProjects_)(nil), 2324 (*CLError_InvalidDeps_)(nil), 2325 (*CLError_UnsupportedMode)(nil), 2326 (*CLError_SelfCqDepend)(nil), 2327 (*CLError_CorruptGerritMetadata)(nil), 2328 (*CLError_ReusedTrigger_)(nil), 2329 (*CLError_CommitBlocked)(nil), 2330 (*CLError_TriggerDeps_)(nil), 2331 (*CLError_DepRunFailed)(nil), 2332 } 2333 type x struct{} 2334 out := protoimpl.TypeBuilder{ 2335 File: protoimpl.DescBuilder{ 2336 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2337 RawDescriptor: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc, 2338 NumEnums: 1, 2339 NumMessages: 22, 2340 NumExtensions: 0, 2341 NumServices: 0, 2342 }, 2343 GoTypes: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes, 2344 DependencyIndexes: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs, 2345 EnumInfos: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes, 2346 MessageInfos: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes, 2347 }.Build() 2348 File_go_chromium_org_luci_cv_internal_changelist_storage_proto = out.File 2349 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc = nil 2350 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes = nil 2351 file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs = nil 2352 }