go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/proto/v1/projects.pb.go (about) 1 // Copyright 2022 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.32.0 18 // protoc v3.21.7 19 // source: go.chromium.org/luci/analysis/proto/v1/projects.proto 20 21 package analysispb 22 23 import prpc "go.chromium.org/luci/grpc/prpc" 24 25 import ( 26 context "context" 27 grpc "google.golang.org/grpc" 28 codes "google.golang.org/grpc/codes" 29 status "google.golang.org/grpc/status" 30 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 31 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 32 reflect "reflect" 33 sync "sync" 34 ) 35 36 const ( 37 // Verify that this generated code is sufficiently up-to-date. 38 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 39 // Verify that runtime/protoimpl is sufficiently up-to-date. 40 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 41 ) 42 43 // This enum represents the Buganizer priorities. 44 // It is equivalent to the one in Buganizer API. 45 type BuganizerPriority int32 46 47 const ( 48 // Priority unspecified; do not use this value. 49 BuganizerPriority_BUGANIZER_PRIORITY_UNSPECIFIED BuganizerPriority = 0 50 // P0, Highest priority. 51 BuganizerPriority_P0 BuganizerPriority = 1 52 BuganizerPriority_P1 BuganizerPriority = 2 53 BuganizerPriority_P2 BuganizerPriority = 3 54 BuganizerPriority_P3 BuganizerPriority = 4 55 BuganizerPriority_P4 BuganizerPriority = 5 56 ) 57 58 // Enum value maps for BuganizerPriority. 59 var ( 60 BuganizerPriority_name = map[int32]string{ 61 0: "BUGANIZER_PRIORITY_UNSPECIFIED", 62 1: "P0", 63 2: "P1", 64 3: "P2", 65 4: "P3", 66 5: "P4", 67 } 68 BuganizerPriority_value = map[string]int32{ 69 "BUGANIZER_PRIORITY_UNSPECIFIED": 0, 70 "P0": 1, 71 "P1": 2, 72 "P2": 3, 73 "P3": 4, 74 "P4": 5, 75 } 76 ) 77 78 func (x BuganizerPriority) Enum() *BuganizerPriority { 79 p := new(BuganizerPriority) 80 *p = x 81 return p 82 } 83 84 func (x BuganizerPriority) String() string { 85 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 86 } 87 88 func (BuganizerPriority) Descriptor() protoreflect.EnumDescriptor { 89 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_enumTypes[0].Descriptor() 90 } 91 92 func (BuganizerPriority) Type() protoreflect.EnumType { 93 return &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_enumTypes[0] 94 } 95 96 func (x BuganizerPriority) Number() protoreflect.EnumNumber { 97 return protoreflect.EnumNumber(x) 98 } 99 100 // Deprecated: Use BuganizerPriority.Descriptor instead. 101 func (BuganizerPriority) EnumDescriptor() ([]byte, []int) { 102 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{0} 103 } 104 105 // A request object with data to fetch the list of projects configured 106 // in LUCI Analysis. 107 type ListProjectsRequest struct { 108 state protoimpl.MessageState 109 sizeCache protoimpl.SizeCache 110 unknownFields protoimpl.UnknownFields 111 } 112 113 func (x *ListProjectsRequest) Reset() { 114 *x = ListProjectsRequest{} 115 if protoimpl.UnsafeEnabled { 116 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[0] 117 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 118 ms.StoreMessageInfo(mi) 119 } 120 } 121 122 func (x *ListProjectsRequest) String() string { 123 return protoimpl.X.MessageStringOf(x) 124 } 125 126 func (*ListProjectsRequest) ProtoMessage() {} 127 128 func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { 129 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[0] 130 if protoimpl.UnsafeEnabled && x != nil { 131 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 132 if ms.LoadMessageInfo() == nil { 133 ms.StoreMessageInfo(mi) 134 } 135 return ms 136 } 137 return mi.MessageOf(x) 138 } 139 140 // Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. 141 func (*ListProjectsRequest) Descriptor() ([]byte, []int) { 142 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{0} 143 } 144 145 // A response containing the list of projects which are are using 146 // LUCI Analysis. 147 type ListProjectsResponse struct { 148 state protoimpl.MessageState 149 sizeCache protoimpl.SizeCache 150 unknownFields protoimpl.UnknownFields 151 152 // The list of projects using LUCI Analysis. 153 Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` 154 } 155 156 func (x *ListProjectsResponse) Reset() { 157 *x = ListProjectsResponse{} 158 if protoimpl.UnsafeEnabled { 159 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[1] 160 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 161 ms.StoreMessageInfo(mi) 162 } 163 } 164 165 func (x *ListProjectsResponse) String() string { 166 return protoimpl.X.MessageStringOf(x) 167 } 168 169 func (*ListProjectsResponse) ProtoMessage() {} 170 171 func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { 172 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[1] 173 if protoimpl.UnsafeEnabled && x != nil { 174 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 175 if ms.LoadMessageInfo() == nil { 176 ms.StoreMessageInfo(mi) 177 } 178 return ms 179 } 180 return mi.MessageOf(x) 181 } 182 183 // Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. 184 func (*ListProjectsResponse) Descriptor() ([]byte, []int) { 185 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{1} 186 } 187 188 func (x *ListProjectsResponse) GetProjects() []*Project { 189 if x != nil { 190 return x.Projects 191 } 192 return nil 193 } 194 195 type GetProjectConfigRequest struct { 196 state protoimpl.MessageState 197 sizeCache protoimpl.SizeCache 198 unknownFields protoimpl.UnknownFields 199 200 // The name of the project configuration to retrieve. 201 // Format: projects/{project}/config. 202 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 203 } 204 205 func (x *GetProjectConfigRequest) Reset() { 206 *x = GetProjectConfigRequest{} 207 if protoimpl.UnsafeEnabled { 208 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[2] 209 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 210 ms.StoreMessageInfo(mi) 211 } 212 } 213 214 func (x *GetProjectConfigRequest) String() string { 215 return protoimpl.X.MessageStringOf(x) 216 } 217 218 func (*GetProjectConfigRequest) ProtoMessage() {} 219 220 func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { 221 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[2] 222 if protoimpl.UnsafeEnabled && x != nil { 223 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 224 if ms.LoadMessageInfo() == nil { 225 ms.StoreMessageInfo(mi) 226 } 227 return ms 228 } 229 return mi.MessageOf(x) 230 } 231 232 // Deprecated: Use GetProjectConfigRequest.ProtoReflect.Descriptor instead. 233 func (*GetProjectConfigRequest) Descriptor() ([]byte, []int) { 234 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{2} 235 } 236 237 func (x *GetProjectConfigRequest) GetName() string { 238 if x != nil { 239 return x.Name 240 } 241 return "" 242 } 243 244 type ProjectConfig struct { 245 state protoimpl.MessageState 246 sizeCache protoimpl.SizeCache 247 unknownFields protoimpl.UnknownFields 248 249 // Resource name of the project configuration. 250 // Format: projects/{project}/config. 251 // See also https://google.aip.dev/122. 252 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 253 // Configuration for automatic bug management. 254 BugManagement *BugManagement `protobuf:"bytes,6,opt,name=bug_management,json=bugManagement,proto3" json:"bug_management,omitempty"` 255 } 256 257 func (x *ProjectConfig) Reset() { 258 *x = ProjectConfig{} 259 if protoimpl.UnsafeEnabled { 260 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[3] 261 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 262 ms.StoreMessageInfo(mi) 263 } 264 } 265 266 func (x *ProjectConfig) String() string { 267 return protoimpl.X.MessageStringOf(x) 268 } 269 270 func (*ProjectConfig) ProtoMessage() {} 271 272 func (x *ProjectConfig) ProtoReflect() protoreflect.Message { 273 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[3] 274 if protoimpl.UnsafeEnabled && x != nil { 275 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 276 if ms.LoadMessageInfo() == nil { 277 ms.StoreMessageInfo(mi) 278 } 279 return ms 280 } 281 return mi.MessageOf(x) 282 } 283 284 // Deprecated: Use ProjectConfig.ProtoReflect.Descriptor instead. 285 func (*ProjectConfig) Descriptor() ([]byte, []int) { 286 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{3} 287 } 288 289 func (x *ProjectConfig) GetName() string { 290 if x != nil { 291 return x.Name 292 } 293 return "" 294 } 295 296 func (x *ProjectConfig) GetBugManagement() *BugManagement { 297 if x != nil { 298 return x.BugManagement 299 } 300 return nil 301 } 302 303 // Settings related to bug management. 304 type BugManagement struct { 305 state protoimpl.MessageState 306 sizeCache protoimpl.SizeCache 307 unknownFields protoimpl.UnknownFields 308 309 // The set of policies which control the (re-)opening, closure and 310 // prioritization of bugs under the control of LUCI Analysis. 311 Policies []*BugManagementPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` 312 // Monorail-specific bug filing configuration. 313 Monorail *MonorailProject `protobuf:"bytes,2,opt,name=monorail,proto3" json:"monorail,omitempty"` 314 } 315 316 func (x *BugManagement) Reset() { 317 *x = BugManagement{} 318 if protoimpl.UnsafeEnabled { 319 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[4] 320 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 321 ms.StoreMessageInfo(mi) 322 } 323 } 324 325 func (x *BugManagement) String() string { 326 return protoimpl.X.MessageStringOf(x) 327 } 328 329 func (*BugManagement) ProtoMessage() {} 330 331 func (x *BugManagement) ProtoReflect() protoreflect.Message { 332 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[4] 333 if protoimpl.UnsafeEnabled && x != nil { 334 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 335 if ms.LoadMessageInfo() == nil { 336 ms.StoreMessageInfo(mi) 337 } 338 return ms 339 } 340 return mi.MessageOf(x) 341 } 342 343 // Deprecated: Use BugManagement.ProtoReflect.Descriptor instead. 344 func (*BugManagement) Descriptor() ([]byte, []int) { 345 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{4} 346 } 347 348 func (x *BugManagement) GetPolicies() []*BugManagementPolicy { 349 if x != nil { 350 return x.Policies 351 } 352 return nil 353 } 354 355 func (x *BugManagement) GetMonorail() *MonorailProject { 356 if x != nil { 357 return x.Monorail 358 } 359 return nil 360 } 361 362 // A bug management policy in LUCI Analysis. 363 // 364 // Bug management policies control when and how bugs are automatically 365 // opened, prioritised, and verified as fixed. Each policy has a user-visible 366 // identity in the UI and can post custom instructions on the bug. 367 // 368 // LUCI Analysis avoids filing multiple bugs for the same failures by 369 // allowing multiple policies to activate on the same failure association 370 // rule. The bug associated with a rule will only be verified if all policies 371 // have de-activated. 372 type BugManagementPolicy struct { 373 state protoimpl.MessageState 374 sizeCache protoimpl.SizeCache 375 unknownFields protoimpl.UnknownFields 376 377 // A unique identifier for the bug management policy. 378 // 379 // Policies are stateful in that LUCI Analysis tracks which bugs have met the 380 // activation condition on the policy (and not since met the deactivation 381 // condition). 382 // 383 // Changing this value changes the identity of the policy and hence results in 384 // the activation state for the policy being lost for all bugs. 385 // 386 // Valid syntax: ^[a-z]([a-z0-9-]{0,62}[a-z0-9])?$. (Syntax designed to comply 387 // with google.aip.dev/122 for resource IDs.) 388 Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` 389 // The owners of the policy, who can be contacted if there are issues/concerns 390 // about the policy. Each item in the list should be an @google.com email 391 // address. At least one owner (preferably a group) is required. 392 Owners []string `protobuf:"bytes,6,rep,name=owners,proto3" json:"owners,omitempty"` 393 // A short one-line description for the problem the policy identifies, which 394 // will appear on the UI and in bugs comments. This is a sentence fragment 395 // and not a sentence, so please do NOT include a full stop and or starting 396 // capital letter. 397 // 398 // For example, "test variant(s) are being exonerated in presubmit". 399 HumanReadableName string `protobuf:"bytes,2,opt,name=human_readable_name,json=humanReadableName,proto3" json:"human_readable_name,omitempty"` 400 // The priority of the problem this policy defines. 401 // 402 // If: 403 // - the priority of the bug associated with a rule 404 // differs from this priority, and 405 // - the policy is activate on the rule (see `metrics`), and 406 // - LUCI Analysis is controlling the priority of the bug 407 // (the "Update bug priority" switch on the rule is enabled), 408 // 409 // the priority of the bug will be updated to match this priority. 410 // 411 // Where are there multiple policies active on the same rule, 412 // the highest priority (of all active policies) will be used. 413 // 414 // For monorail projects, the buganizer priority will be converted to the 415 // equivalent monorail priority (P0 is converted to Pri-0, P1 to Pri-1, 416 // P2 to Pri-2, etc.) until monorail is turned down. 417 Priority BuganizerPriority `protobuf:"varint,3,opt,name=priority,proto3,enum=luci.analysis.v1.BuganizerPriority" json:"priority,omitempty"` 418 // The set of metrics which will control activation of the bug-filing policy. 419 // If a policy activates on a suggested cluster, a new bug will be filed. 420 // If a policy activates on an existing rule cluster, the bug will be 421 // updated. 422 // 423 // The policy will activate if the activation threshold is met on *ANY* 424 // metric, and will de-activate only if the deactivation threshold is met 425 // on *ALL* metrics. 426 // 427 // Activation on suggested clusters will be based on the metric values after 428 // excluding failures for which a bug has already been filed. This is to 429 // avoid duplicate bug filing. 430 Metrics []*BugManagementPolicy_Metric `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"` 431 // Expanatory text of the problem the policy identified, shown on the 432 // user interface when the user requests more information. Required. 433 Explanation *BugManagementPolicy_Explanation `protobuf:"bytes,5,opt,name=explanation,proto3" json:"explanation,omitempty"` 434 } 435 436 func (x *BugManagementPolicy) Reset() { 437 *x = BugManagementPolicy{} 438 if protoimpl.UnsafeEnabled { 439 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[5] 440 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 441 ms.StoreMessageInfo(mi) 442 } 443 } 444 445 func (x *BugManagementPolicy) String() string { 446 return protoimpl.X.MessageStringOf(x) 447 } 448 449 func (*BugManagementPolicy) ProtoMessage() {} 450 451 func (x *BugManagementPolicy) ProtoReflect() protoreflect.Message { 452 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[5] 453 if protoimpl.UnsafeEnabled && x != nil { 454 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 455 if ms.LoadMessageInfo() == nil { 456 ms.StoreMessageInfo(mi) 457 } 458 return ms 459 } 460 return mi.MessageOf(x) 461 } 462 463 // Deprecated: Use BugManagementPolicy.ProtoReflect.Descriptor instead. 464 func (*BugManagementPolicy) Descriptor() ([]byte, []int) { 465 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{5} 466 } 467 468 func (x *BugManagementPolicy) GetId() string { 469 if x != nil { 470 return x.Id 471 } 472 return "" 473 } 474 475 func (x *BugManagementPolicy) GetOwners() []string { 476 if x != nil { 477 return x.Owners 478 } 479 return nil 480 } 481 482 func (x *BugManagementPolicy) GetHumanReadableName() string { 483 if x != nil { 484 return x.HumanReadableName 485 } 486 return "" 487 } 488 489 func (x *BugManagementPolicy) GetPriority() BuganizerPriority { 490 if x != nil { 491 return x.Priority 492 } 493 return BuganizerPriority_BUGANIZER_PRIORITY_UNSPECIFIED 494 } 495 496 func (x *BugManagementPolicy) GetMetrics() []*BugManagementPolicy_Metric { 497 if x != nil { 498 return x.Metrics 499 } 500 return nil 501 } 502 503 func (x *BugManagementPolicy) GetExplanation() *BugManagementPolicy_Explanation { 504 if x != nil { 505 return x.Explanation 506 } 507 return nil 508 } 509 510 // MonorailProject describes the configuration to use when filing bugs 511 // into a given monorail project. 512 type MonorailProject struct { 513 state protoimpl.MessageState 514 sizeCache protoimpl.SizeCache 515 unknownFields protoimpl.UnknownFields 516 517 // The monorail project being described. 518 // E.g. "chromium". 519 Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` 520 // The prefix that should appear when displaying bugs from the 521 // given bug tracking system. E.g. "crbug.com" or "fxbug.dev". 522 // If no prefix is specified, only the bug number will appear. 523 // Otherwise, the supplifed prefix will appear, followed by a 524 // forward slash ("/"), followed by the bug number. 525 // Valid prefixes match `^[a-z0-9\-.]{0,64}$`. 526 DisplayPrefix string `protobuf:"bytes,2,opt,name=display_prefix,json=displayPrefix,proto3" json:"display_prefix,omitempty"` 527 } 528 529 func (x *MonorailProject) Reset() { 530 *x = MonorailProject{} 531 if protoimpl.UnsafeEnabled { 532 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[6] 533 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 534 ms.StoreMessageInfo(mi) 535 } 536 } 537 538 func (x *MonorailProject) String() string { 539 return protoimpl.X.MessageStringOf(x) 540 } 541 542 func (*MonorailProject) ProtoMessage() {} 543 544 func (x *MonorailProject) ProtoReflect() protoreflect.Message { 545 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[6] 546 if protoimpl.UnsafeEnabled && x != nil { 547 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 548 if ms.LoadMessageInfo() == nil { 549 ms.StoreMessageInfo(mi) 550 } 551 return ms 552 } 553 return mi.MessageOf(x) 554 } 555 556 // Deprecated: Use MonorailProject.ProtoReflect.Descriptor instead. 557 func (*MonorailProject) Descriptor() ([]byte, []int) { 558 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{6} 559 } 560 561 func (x *MonorailProject) GetProject() string { 562 if x != nil { 563 return x.Project 564 } 565 return "" 566 } 567 568 func (x *MonorailProject) GetDisplayPrefix() string { 569 if x != nil { 570 return x.DisplayPrefix 571 } 572 return "" 573 } 574 575 // MetricThreshold specifies thresholds for a particular metric. 576 // The threshold is considered satisfied if any of the individual metric 577 // thresholds is met or exceeded (i.e. if multiple thresholds are set, they 578 // are combined using an OR-semantic). If no threshold is set, the threshold 579 // as a whole is unsatisfiable. 580 type MetricThreshold struct { 581 state protoimpl.MessageState 582 sizeCache protoimpl.SizeCache 583 unknownFields protoimpl.UnknownFields 584 585 // The threshold for one day. 586 OneDay *int64 `protobuf:"varint,1,opt,name=one_day,json=oneDay,proto3,oneof" json:"one_day,omitempty"` 587 // The threshold for three day. 588 ThreeDay *int64 `protobuf:"varint,2,opt,name=three_day,json=threeDay,proto3,oneof" json:"three_day,omitempty"` 589 // The threshold for seven days. 590 SevenDay *int64 `protobuf:"varint,3,opt,name=seven_day,json=sevenDay,proto3,oneof" json:"seven_day,omitempty"` 591 } 592 593 func (x *MetricThreshold) Reset() { 594 *x = MetricThreshold{} 595 if protoimpl.UnsafeEnabled { 596 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[7] 597 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 598 ms.StoreMessageInfo(mi) 599 } 600 } 601 602 func (x *MetricThreshold) String() string { 603 return protoimpl.X.MessageStringOf(x) 604 } 605 606 func (*MetricThreshold) ProtoMessage() {} 607 608 func (x *MetricThreshold) ProtoReflect() protoreflect.Message { 609 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[7] 610 if protoimpl.UnsafeEnabled && x != nil { 611 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 612 if ms.LoadMessageInfo() == nil { 613 ms.StoreMessageInfo(mi) 614 } 615 return ms 616 } 617 return mi.MessageOf(x) 618 } 619 620 // Deprecated: Use MetricThreshold.ProtoReflect.Descriptor instead. 621 func (*MetricThreshold) Descriptor() ([]byte, []int) { 622 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{7} 623 } 624 625 func (x *MetricThreshold) GetOneDay() int64 { 626 if x != nil && x.OneDay != nil { 627 return *x.OneDay 628 } 629 return 0 630 } 631 632 func (x *MetricThreshold) GetThreeDay() int64 { 633 if x != nil && x.ThreeDay != nil { 634 return *x.ThreeDay 635 } 636 return 0 637 } 638 639 func (x *MetricThreshold) GetSevenDay() int64 { 640 if x != nil && x.SevenDay != nil { 641 return *x.SevenDay 642 } 643 return 0 644 } 645 646 // A metric used to control activation of a bug-filing policy. 647 type BugManagementPolicy_Metric struct { 648 state protoimpl.MessageState 649 sizeCache protoimpl.SizeCache 650 unknownFields protoimpl.UnknownFields 651 652 // The identifier of the metric. 653 // 654 // Full list of available metrics here: 655 // https://source.chromium.org/chromium/infra/infra/+/main:go/src/go.chromium.org/luci/analysis/internal/analysis/metrics/metrics.go 656 MetricId string `protobuf:"bytes,1,opt,name=metric_id,json=metricId,proto3" json:"metric_id,omitempty"` 657 // The level at which the policy activates. Activation occurs if the 658 // cluster impact meets or exceeds this threshold. 659 // MUST imply deactivation_threshold. 660 ActivationThreshold *MetricThreshold `protobuf:"bytes,2,opt,name=activation_threshold,json=activationThreshold,proto3" json:"activation_threshold,omitempty"` 661 // The minimum metric level at which the policy remains active. 662 // Deactivation occcurs if the cluster impact is below the de-activation 663 // threshold. Deactivation_threshold should be set significantly lower 664 // than activation_threshold to prevent policies repeatedly activating 665 // and deactivating due to noise in the data, e.g. less tests executed 666 // on weekends. 667 DeactivationThreshold *MetricThreshold `protobuf:"bytes,3,opt,name=deactivation_threshold,json=deactivationThreshold,proto3" json:"deactivation_threshold,omitempty"` 668 } 669 670 func (x *BugManagementPolicy_Metric) Reset() { 671 *x = BugManagementPolicy_Metric{} 672 if protoimpl.UnsafeEnabled { 673 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[8] 674 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 675 ms.StoreMessageInfo(mi) 676 } 677 } 678 679 func (x *BugManagementPolicy_Metric) String() string { 680 return protoimpl.X.MessageStringOf(x) 681 } 682 683 func (*BugManagementPolicy_Metric) ProtoMessage() {} 684 685 func (x *BugManagementPolicy_Metric) ProtoReflect() protoreflect.Message { 686 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[8] 687 if protoimpl.UnsafeEnabled && x != nil { 688 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 689 if ms.LoadMessageInfo() == nil { 690 ms.StoreMessageInfo(mi) 691 } 692 return ms 693 } 694 return mi.MessageOf(x) 695 } 696 697 // Deprecated: Use BugManagementPolicy_Metric.ProtoReflect.Descriptor instead. 698 func (*BugManagementPolicy_Metric) Descriptor() ([]byte, []int) { 699 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{5, 0} 700 } 701 702 func (x *BugManagementPolicy_Metric) GetMetricId() string { 703 if x != nil { 704 return x.MetricId 705 } 706 return "" 707 } 708 709 func (x *BugManagementPolicy_Metric) GetActivationThreshold() *MetricThreshold { 710 if x != nil { 711 return x.ActivationThreshold 712 } 713 return nil 714 } 715 716 func (x *BugManagementPolicy_Metric) GetDeactivationThreshold() *MetricThreshold { 717 if x != nil { 718 return x.DeactivationThreshold 719 } 720 return nil 721 } 722 723 // Content displayed on the user interface, to explain the problem and 724 // guide a developer to fix it. 725 type BugManagementPolicy_Explanation struct { 726 state protoimpl.MessageState 727 sizeCache protoimpl.SizeCache 728 unknownFields protoimpl.UnknownFields 729 730 // A longer human-readable description of the problem this policy 731 // has identified, in HTML. 732 // 733 // For example, "Test variant(s) in this cluster are being exonerated 734 // (ignored) in presubmit because they are too flaky or failing. This 735 // means they are no longer effective at preventing the breakage of 736 // the functionality the test(s) cover.". 737 // 738 // MUST be sanitised by UI before rendering. Sanitisation is only 739 // required to support simple uses of the following tags: ul, li, a. 740 ProblemHtml string `protobuf:"bytes,1,opt,name=problem_html,json=problemHtml,proto3" json:"problem_html,omitempty"` 741 // A description of how a human should go about trying to fix the 742 // problem, in HTML. 743 // 744 // For example, "<ul> 745 // <li>View recent failures</li> 746 // <li><a href="http://goto.google.com/demote-from-cq">Demote</a> the test from CQ</li> 747 // </ul>" 748 // 749 // MUST be sanitised by UI before rendering. Sanitisation is only 750 // required to support simple uses of the following tags: ul, li, a. 751 ActionHtml string `protobuf:"bytes,2,opt,name=action_html,json=actionHtml,proto3" json:"action_html,omitempty"` 752 } 753 754 func (x *BugManagementPolicy_Explanation) Reset() { 755 *x = BugManagementPolicy_Explanation{} 756 if protoimpl.UnsafeEnabled { 757 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[9] 758 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 759 ms.StoreMessageInfo(mi) 760 } 761 } 762 763 func (x *BugManagementPolicy_Explanation) String() string { 764 return protoimpl.X.MessageStringOf(x) 765 } 766 767 func (*BugManagementPolicy_Explanation) ProtoMessage() {} 768 769 func (x *BugManagementPolicy_Explanation) ProtoReflect() protoreflect.Message { 770 mi := &file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[9] 771 if protoimpl.UnsafeEnabled && x != nil { 772 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 773 if ms.LoadMessageInfo() == nil { 774 ms.StoreMessageInfo(mi) 775 } 776 return ms 777 } 778 return mi.MessageOf(x) 779 } 780 781 // Deprecated: Use BugManagementPolicy_Explanation.ProtoReflect.Descriptor instead. 782 func (*BugManagementPolicy_Explanation) Descriptor() ([]byte, []int) { 783 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP(), []int{5, 1} 784 } 785 786 func (x *BugManagementPolicy_Explanation) GetProblemHtml() string { 787 if x != nil { 788 return x.ProblemHtml 789 } 790 return "" 791 } 792 793 func (x *BugManagementPolicy_Explanation) GetActionHtml() string { 794 if x != nil { 795 return x.ActionHtml 796 } 797 return "" 798 } 799 800 var File_go_chromium_org_luci_analysis_proto_v1_projects_proto protoreflect.FileDescriptor 801 802 var file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDesc = []byte{ 803 0x0a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 804 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 805 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 806 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 807 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 808 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 809 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 810 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 811 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 812 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 813 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 814 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 815 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 816 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 817 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x2d, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 818 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 819 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 820 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 821 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 822 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x62, 0x75, 823 0x67, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 824 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 825 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 826 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x62, 0x75, 0x67, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 827 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 828 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x91, 0x01, 0x0a, 0x0d, 0x42, 829 0x75, 0x67, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x08, 830 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 831 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 832 0x31, 0x2e, 0x42, 0x75, 0x67, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 833 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 834 0x3d, 0x0a, 0x08, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 835 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 836 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x50, 0x72, 0x6f, 837 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x22, 0xf6, 838 0x04, 0x0a, 0x13, 0x42, 0x75, 0x67, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 839 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 840 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 841 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2e, 842 0x0a, 0x13, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 843 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x68, 0x75, 0x6d, 844 0x61, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 845 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 846 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 847 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x50, 0x72, 0x69, 848 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 849 0x46, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 850 0x32, 0x2c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 851 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 852 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 853 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 854 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 855 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 856 0x42, 0x75, 0x67, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 857 0x69, 0x63, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 858 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xd5, 0x01, 0x0a, 859 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x72, 0x69, 860 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x72, 861 0x69, 0x63, 0x49, 0x64, 0x12, 0x54, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 862 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 863 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 864 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 865 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 866 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x58, 0x0a, 0x16, 0x64, 0x65, 867 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 868 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 869 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 870 0x74, 0x72, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x15, 0x64, 871 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 872 0x68, 0x6f, 0x6c, 0x64, 0x1a, 0x51, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 873 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x68, 874 0x74, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x6c, 875 0x65, 0x6d, 0x48, 0x74, 0x6d, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 876 0x5f, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74, 877 0x69, 0x6f, 0x6e, 0x48, 0x74, 0x6d, 0x6c, 0x22, 0x58, 0x0a, 0x0f, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 878 0x61, 0x69, 0x6c, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 879 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 880 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 881 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 882 0x73, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4a, 0x04, 0x08, 0x03, 0x10, 883 0x04, 0x22, 0x9b, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 884 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x65, 0x5f, 0x64, 0x61, 0x79, 885 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x6e, 0x65, 0x44, 0x61, 0x79, 886 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x65, 0x5f, 0x64, 0x61, 0x79, 887 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x08, 0x74, 0x68, 0x72, 0x65, 0x65, 0x44, 888 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x5f, 0x64, 889 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 890 0x6e, 0x44, 0x61, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 891 0x64, 0x61, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x65, 0x5f, 0x64, 0x61, 892 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x2a, 893 0x5f, 0x0a, 0x11, 0x42, 0x75, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6f, 894 0x72, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x45, 895 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 896 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x30, 0x10, 0x01, 897 0x12, 0x06, 0x0a, 0x02, 0x50, 0x31, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x32, 0x10, 0x03, 898 0x12, 0x06, 0x0a, 0x02, 0x50, 0x33, 0x10, 0x04, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x34, 0x10, 0x05, 899 0x32, 0xbe, 0x01, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x59, 0x0a, 900 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x6c, 0x75, 0x63, 901 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 902 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 903 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 904 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 905 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 906 0x12, 0x25, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 907 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 908 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 909 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 910 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 911 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 912 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 913 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x6e, 0x61, 0x6c, 914 0x79, 0x73, 0x69, 0x73, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 915 } 916 917 var ( 918 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescOnce sync.Once 919 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescData = file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDesc 920 ) 921 922 func file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescGZIP() []byte { 923 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescOnce.Do(func() { 924 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescData) 925 }) 926 return file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDescData 927 } 928 929 var file_go_chromium_org_luci_analysis_proto_v1_projects_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 930 var file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes = make([]protoimpl.MessageInfo, 10) 931 var file_go_chromium_org_luci_analysis_proto_v1_projects_proto_goTypes = []interface{}{ 932 (BuganizerPriority)(0), // 0: luci.analysis.v1.BuganizerPriority 933 (*ListProjectsRequest)(nil), // 1: luci.analysis.v1.ListProjectsRequest 934 (*ListProjectsResponse)(nil), // 2: luci.analysis.v1.ListProjectsResponse 935 (*GetProjectConfigRequest)(nil), // 3: luci.analysis.v1.GetProjectConfigRequest 936 (*ProjectConfig)(nil), // 4: luci.analysis.v1.ProjectConfig 937 (*BugManagement)(nil), // 5: luci.analysis.v1.BugManagement 938 (*BugManagementPolicy)(nil), // 6: luci.analysis.v1.BugManagementPolicy 939 (*MonorailProject)(nil), // 7: luci.analysis.v1.MonorailProject 940 (*MetricThreshold)(nil), // 8: luci.analysis.v1.MetricThreshold 941 (*BugManagementPolicy_Metric)(nil), // 9: luci.analysis.v1.BugManagementPolicy.Metric 942 (*BugManagementPolicy_Explanation)(nil), // 10: luci.analysis.v1.BugManagementPolicy.Explanation 943 (*Project)(nil), // 11: luci.analysis.v1.Project 944 } 945 var file_go_chromium_org_luci_analysis_proto_v1_projects_proto_depIdxs = []int32{ 946 11, // 0: luci.analysis.v1.ListProjectsResponse.projects:type_name -> luci.analysis.v1.Project 947 5, // 1: luci.analysis.v1.ProjectConfig.bug_management:type_name -> luci.analysis.v1.BugManagement 948 6, // 2: luci.analysis.v1.BugManagement.policies:type_name -> luci.analysis.v1.BugManagementPolicy 949 7, // 3: luci.analysis.v1.BugManagement.monorail:type_name -> luci.analysis.v1.MonorailProject 950 0, // 4: luci.analysis.v1.BugManagementPolicy.priority:type_name -> luci.analysis.v1.BuganizerPriority 951 9, // 5: luci.analysis.v1.BugManagementPolicy.metrics:type_name -> luci.analysis.v1.BugManagementPolicy.Metric 952 10, // 6: luci.analysis.v1.BugManagementPolicy.explanation:type_name -> luci.analysis.v1.BugManagementPolicy.Explanation 953 8, // 7: luci.analysis.v1.BugManagementPolicy.Metric.activation_threshold:type_name -> luci.analysis.v1.MetricThreshold 954 8, // 8: luci.analysis.v1.BugManagementPolicy.Metric.deactivation_threshold:type_name -> luci.analysis.v1.MetricThreshold 955 3, // 9: luci.analysis.v1.Projects.GetConfig:input_type -> luci.analysis.v1.GetProjectConfigRequest 956 1, // 10: luci.analysis.v1.Projects.List:input_type -> luci.analysis.v1.ListProjectsRequest 957 4, // 11: luci.analysis.v1.Projects.GetConfig:output_type -> luci.analysis.v1.ProjectConfig 958 2, // 12: luci.analysis.v1.Projects.List:output_type -> luci.analysis.v1.ListProjectsResponse 959 11, // [11:13] is the sub-list for method output_type 960 9, // [9:11] is the sub-list for method input_type 961 9, // [9:9] is the sub-list for extension type_name 962 9, // [9:9] is the sub-list for extension extendee 963 0, // [0:9] is the sub-list for field type_name 964 } 965 966 func init() { file_go_chromium_org_luci_analysis_proto_v1_projects_proto_init() } 967 func file_go_chromium_org_luci_analysis_proto_v1_projects_proto_init() { 968 if File_go_chromium_org_luci_analysis_proto_v1_projects_proto != nil { 969 return 970 } 971 file_go_chromium_org_luci_analysis_proto_v1_project_proto_init() 972 if !protoimpl.UnsafeEnabled { 973 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 974 switch v := v.(*ListProjectsRequest); i { 975 case 0: 976 return &v.state 977 case 1: 978 return &v.sizeCache 979 case 2: 980 return &v.unknownFields 981 default: 982 return nil 983 } 984 } 985 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 986 switch v := v.(*ListProjectsResponse); i { 987 case 0: 988 return &v.state 989 case 1: 990 return &v.sizeCache 991 case 2: 992 return &v.unknownFields 993 default: 994 return nil 995 } 996 } 997 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 998 switch v := v.(*GetProjectConfigRequest); i { 999 case 0: 1000 return &v.state 1001 case 1: 1002 return &v.sizeCache 1003 case 2: 1004 return &v.unknownFields 1005 default: 1006 return nil 1007 } 1008 } 1009 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 1010 switch v := v.(*ProjectConfig); i { 1011 case 0: 1012 return &v.state 1013 case 1: 1014 return &v.sizeCache 1015 case 2: 1016 return &v.unknownFields 1017 default: 1018 return nil 1019 } 1020 } 1021 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 1022 switch v := v.(*BugManagement); i { 1023 case 0: 1024 return &v.state 1025 case 1: 1026 return &v.sizeCache 1027 case 2: 1028 return &v.unknownFields 1029 default: 1030 return nil 1031 } 1032 } 1033 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 1034 switch v := v.(*BugManagementPolicy); i { 1035 case 0: 1036 return &v.state 1037 case 1: 1038 return &v.sizeCache 1039 case 2: 1040 return &v.unknownFields 1041 default: 1042 return nil 1043 } 1044 } 1045 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 1046 switch v := v.(*MonorailProject); i { 1047 case 0: 1048 return &v.state 1049 case 1: 1050 return &v.sizeCache 1051 case 2: 1052 return &v.unknownFields 1053 default: 1054 return nil 1055 } 1056 } 1057 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 1058 switch v := v.(*MetricThreshold); i { 1059 case 0: 1060 return &v.state 1061 case 1: 1062 return &v.sizeCache 1063 case 2: 1064 return &v.unknownFields 1065 default: 1066 return nil 1067 } 1068 } 1069 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 1070 switch v := v.(*BugManagementPolicy_Metric); i { 1071 case 0: 1072 return &v.state 1073 case 1: 1074 return &v.sizeCache 1075 case 2: 1076 return &v.unknownFields 1077 default: 1078 return nil 1079 } 1080 } 1081 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 1082 switch v := v.(*BugManagementPolicy_Explanation); i { 1083 case 0: 1084 return &v.state 1085 case 1: 1086 return &v.sizeCache 1087 case 2: 1088 return &v.unknownFields 1089 default: 1090 return nil 1091 } 1092 } 1093 } 1094 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes[7].OneofWrappers = []interface{}{} 1095 type x struct{} 1096 out := protoimpl.TypeBuilder{ 1097 File: protoimpl.DescBuilder{ 1098 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 1099 RawDescriptor: file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDesc, 1100 NumEnums: 1, 1101 NumMessages: 10, 1102 NumExtensions: 0, 1103 NumServices: 1, 1104 }, 1105 GoTypes: file_go_chromium_org_luci_analysis_proto_v1_projects_proto_goTypes, 1106 DependencyIndexes: file_go_chromium_org_luci_analysis_proto_v1_projects_proto_depIdxs, 1107 EnumInfos: file_go_chromium_org_luci_analysis_proto_v1_projects_proto_enumTypes, 1108 MessageInfos: file_go_chromium_org_luci_analysis_proto_v1_projects_proto_msgTypes, 1109 }.Build() 1110 File_go_chromium_org_luci_analysis_proto_v1_projects_proto = out.File 1111 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_rawDesc = nil 1112 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_goTypes = nil 1113 file_go_chromium_org_luci_analysis_proto_v1_projects_proto_depIdxs = nil 1114 } 1115 1116 // Reference imports to suppress errors if they are not otherwise used. 1117 var _ context.Context 1118 var _ grpc.ClientConnInterface 1119 1120 // This is a compile-time assertion to ensure that this generated file 1121 // is compatible with the grpc package it is being compiled against. 1122 const _ = grpc.SupportPackageIsVersion6 1123 1124 // ProjectsClient is the client API for Projects service. 1125 // 1126 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 1127 type ProjectsClient interface { 1128 // Gets LUCI Analysis configuration for a LUCI Project. 1129 // 1130 // RPC desigend to comply with https://google.aip.dev/131. 1131 GetConfig(ctx context.Context, in *GetProjectConfigRequest, opts ...grpc.CallOption) (*ProjectConfig, error) 1132 // Lists LUCI Projects visible to the user. 1133 // 1134 // RPC compliant with https://google.aip.dev/132. 1135 // This RPC is incomplete. Future breaking changes are 1136 // expressly flagged. 1137 List(ctx context.Context, in *ListProjectsRequest, opts ...grpc.CallOption) (*ListProjectsResponse, error) 1138 } 1139 type projectsPRPCClient struct { 1140 client *prpc.Client 1141 } 1142 1143 func NewProjectsPRPCClient(client *prpc.Client) ProjectsClient { 1144 return &projectsPRPCClient{client} 1145 } 1146 1147 func (c *projectsPRPCClient) GetConfig(ctx context.Context, in *GetProjectConfigRequest, opts ...grpc.CallOption) (*ProjectConfig, error) { 1148 out := new(ProjectConfig) 1149 err := c.client.Call(ctx, "luci.analysis.v1.Projects", "GetConfig", in, out, opts...) 1150 if err != nil { 1151 return nil, err 1152 } 1153 return out, nil 1154 } 1155 1156 func (c *projectsPRPCClient) List(ctx context.Context, in *ListProjectsRequest, opts ...grpc.CallOption) (*ListProjectsResponse, error) { 1157 out := new(ListProjectsResponse) 1158 err := c.client.Call(ctx, "luci.analysis.v1.Projects", "List", in, out, opts...) 1159 if err != nil { 1160 return nil, err 1161 } 1162 return out, nil 1163 } 1164 1165 type projectsClient struct { 1166 cc grpc.ClientConnInterface 1167 } 1168 1169 func NewProjectsClient(cc grpc.ClientConnInterface) ProjectsClient { 1170 return &projectsClient{cc} 1171 } 1172 1173 func (c *projectsClient) GetConfig(ctx context.Context, in *GetProjectConfigRequest, opts ...grpc.CallOption) (*ProjectConfig, error) { 1174 out := new(ProjectConfig) 1175 err := c.cc.Invoke(ctx, "/luci.analysis.v1.Projects/GetConfig", in, out, opts...) 1176 if err != nil { 1177 return nil, err 1178 } 1179 return out, nil 1180 } 1181 1182 func (c *projectsClient) List(ctx context.Context, in *ListProjectsRequest, opts ...grpc.CallOption) (*ListProjectsResponse, error) { 1183 out := new(ListProjectsResponse) 1184 err := c.cc.Invoke(ctx, "/luci.analysis.v1.Projects/List", in, out, opts...) 1185 if err != nil { 1186 return nil, err 1187 } 1188 return out, nil 1189 } 1190 1191 // ProjectsServer is the server API for Projects service. 1192 type ProjectsServer interface { 1193 // Gets LUCI Analysis configuration for a LUCI Project. 1194 // 1195 // RPC desigend to comply with https://google.aip.dev/131. 1196 GetConfig(context.Context, *GetProjectConfigRequest) (*ProjectConfig, error) 1197 // Lists LUCI Projects visible to the user. 1198 // 1199 // RPC compliant with https://google.aip.dev/132. 1200 // This RPC is incomplete. Future breaking changes are 1201 // expressly flagged. 1202 List(context.Context, *ListProjectsRequest) (*ListProjectsResponse, error) 1203 } 1204 1205 // UnimplementedProjectsServer can be embedded to have forward compatible implementations. 1206 type UnimplementedProjectsServer struct { 1207 } 1208 1209 func (*UnimplementedProjectsServer) GetConfig(context.Context, *GetProjectConfigRequest) (*ProjectConfig, error) { 1210 return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") 1211 } 1212 func (*UnimplementedProjectsServer) List(context.Context, *ListProjectsRequest) (*ListProjectsResponse, error) { 1213 return nil, status.Errorf(codes.Unimplemented, "method List not implemented") 1214 } 1215 1216 func RegisterProjectsServer(s prpc.Registrar, srv ProjectsServer) { 1217 s.RegisterService(&_Projects_serviceDesc, srv) 1218 } 1219 1220 func _Projects_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 1221 in := new(GetProjectConfigRequest) 1222 if err := dec(in); err != nil { 1223 return nil, err 1224 } 1225 if interceptor == nil { 1226 return srv.(ProjectsServer).GetConfig(ctx, in) 1227 } 1228 info := &grpc.UnaryServerInfo{ 1229 Server: srv, 1230 FullMethod: "/luci.analysis.v1.Projects/GetConfig", 1231 } 1232 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 1233 return srv.(ProjectsServer).GetConfig(ctx, req.(*GetProjectConfigRequest)) 1234 } 1235 return interceptor(ctx, in, info, handler) 1236 } 1237 1238 func _Projects_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 1239 in := new(ListProjectsRequest) 1240 if err := dec(in); err != nil { 1241 return nil, err 1242 } 1243 if interceptor == nil { 1244 return srv.(ProjectsServer).List(ctx, in) 1245 } 1246 info := &grpc.UnaryServerInfo{ 1247 Server: srv, 1248 FullMethod: "/luci.analysis.v1.Projects/List", 1249 } 1250 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 1251 return srv.(ProjectsServer).List(ctx, req.(*ListProjectsRequest)) 1252 } 1253 return interceptor(ctx, in, info, handler) 1254 } 1255 1256 var _Projects_serviceDesc = grpc.ServiceDesc{ 1257 ServiceName: "luci.analysis.v1.Projects", 1258 HandlerType: (*ProjectsServer)(nil), 1259 Methods: []grpc.MethodDesc{ 1260 { 1261 MethodName: "GetConfig", 1262 Handler: _Projects_GetConfig_Handler, 1263 }, 1264 { 1265 MethodName: "List", 1266 Handler: _Projects_List_Handler, 1267 }, 1268 }, 1269 Streams: []grpc.StreamDesc{}, 1270 Metadata: "go.chromium.org/luci/analysis/proto/v1/projects.proto", 1271 }