| // Copyright 2018 The LUCI Authors. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // Code generated by protoc-gen-go. DO NOT EDIT. |
| // versions: |
| // protoc-gen-go v1.28.1 |
| // protoc v3.21.7 |
| // source: go.chromium.org/luci/cv/api/config/v2/config.proto |
| |
| package cfgpb |
| |
| import ( |
| _ "github.com/envoyproxy/protoc-gen-validate/validate" |
| _ "go.chromium.org/luci/common/proto" |
| v1 "go.chromium.org/luci/cv/api/v1" |
| protoreflect "google.golang.org/protobuf/reflect/protoreflect" |
| protoimpl "google.golang.org/protobuf/runtime/protoimpl" |
| durationpb "google.golang.org/protobuf/types/known/durationpb" |
| reflect "reflect" |
| sync "sync" |
| ) |
| |
| const ( |
| // Verify that this generated code is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) |
| // Verify that runtime/protoimpl is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) |
| ) |
| |
| // Determines how visible the results of a build for this builder are in Gerrit |
| // comments. |
| // |
| // This doesn't affect the buildbucket plugin (green/red chips). |
| type CommentLevel int32 |
| |
| const ( |
| // Currently default to full visibility. |
| CommentLevel_COMMENT_LEVEL_UNSET CommentLevel = 0 |
| // The CQ reports the summary markdown and a link to the buildbucket build id |
| // in Milo with the builder name in the URL in a Gerrit comment. |
| CommentLevel_COMMENT_LEVEL_FULL CommentLevel = 1 |
| // The CQ reports a generic "Build failed: https://ci.chromium.org/b/1234" |
| // with no summary markdown. |
| CommentLevel_COMMENT_LEVEL_RESTRICTED CommentLevel = 2 |
| ) |
| |
| // Enum value maps for CommentLevel. |
| var ( |
| CommentLevel_name = map[int32]string{ |
| 0: "COMMENT_LEVEL_UNSET", |
| 1: "COMMENT_LEVEL_FULL", |
| 2: "COMMENT_LEVEL_RESTRICTED", |
| } |
| CommentLevel_value = map[string]int32{ |
| "COMMENT_LEVEL_UNSET": 0, |
| "COMMENT_LEVEL_FULL": 1, |
| "COMMENT_LEVEL_RESTRICTED": 2, |
| } |
| ) |
| |
| func (x CommentLevel) Enum() *CommentLevel { |
| p := new(CommentLevel) |
| *p = x |
| return p |
| } |
| |
| func (x CommentLevel) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (CommentLevel) Descriptor() protoreflect.EnumDescriptor { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes[0].Descriptor() |
| } |
| |
| func (CommentLevel) Type() protoreflect.EnumType { |
| return &file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes[0] |
| } |
| |
| func (x CommentLevel) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use CommentLevel.Descriptor instead. |
| func (CommentLevel) EnumDescriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{0} |
| } |
| |
| // A boolean with an "unset" default value. |
| type Toggle int32 |
| |
| const ( |
| Toggle_UNSET Toggle = 0 |
| Toggle_YES Toggle = 1 |
| Toggle_NO Toggle = 2 |
| ) |
| |
| // Enum value maps for Toggle. |
| var ( |
| Toggle_name = map[int32]string{ |
| 0: "UNSET", |
| 1: "YES", |
| 2: "NO", |
| } |
| Toggle_value = map[string]int32{ |
| "UNSET": 0, |
| "YES": 1, |
| "NO": 2, |
| } |
| ) |
| |
| func (x Toggle) Enum() *Toggle { |
| p := new(Toggle) |
| *p = x |
| return p |
| } |
| |
| func (x Toggle) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Toggle) Descriptor() protoreflect.EnumDescriptor { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes[1].Descriptor() |
| } |
| |
| func (Toggle) Type() protoreflect.EnumType { |
| return &file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes[1] |
| } |
| |
| func (x Toggle) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Toggle.Descriptor instead. |
| func (Toggle) EnumDescriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1} |
| } |
| |
| // See `allow_owner_if_submittable` doc below. |
| type Verifiers_GerritCQAbility_CQAction int32 |
| |
| const ( |
| Verifiers_GerritCQAbility_UNSET Verifiers_GerritCQAbility_CQAction = 0 |
| Verifiers_GerritCQAbility_DRY_RUN Verifiers_GerritCQAbility_CQAction = 1 |
| // COMMIT implies ability to trigger dry run as well. |
| Verifiers_GerritCQAbility_COMMIT Verifiers_GerritCQAbility_CQAction = 2 |
| ) |
| |
| // Enum value maps for Verifiers_GerritCQAbility_CQAction. |
| var ( |
| Verifiers_GerritCQAbility_CQAction_name = map[int32]string{ |
| 0: "UNSET", |
| 1: "DRY_RUN", |
| 2: "COMMIT", |
| } |
| Verifiers_GerritCQAbility_CQAction_value = map[string]int32{ |
| "UNSET": 0, |
| "DRY_RUN": 1, |
| "COMMIT": 2, |
| } |
| ) |
| |
| func (x Verifiers_GerritCQAbility_CQAction) Enum() *Verifiers_GerritCQAbility_CQAction { |
| p := new(Verifiers_GerritCQAbility_CQAction) |
| *p = x |
| return p |
| } |
| |
| func (x Verifiers_GerritCQAbility_CQAction) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Verifiers_GerritCQAbility_CQAction) Descriptor() protoreflect.EnumDescriptor { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes[2].Descriptor() |
| } |
| |
| func (Verifiers_GerritCQAbility_CQAction) Type() protoreflect.EnumType { |
| return &file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes[2] |
| } |
| |
| func (x Verifiers_GerritCQAbility_CQAction) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Verifiers_GerritCQAbility_CQAction.Descriptor instead. |
| func (Verifiers_GerritCQAbility_CQAction) EnumDescriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 0, 0} |
| } |
| |
| // This message describes a CQ configuration. |
| // |
| // The config file commit-queue.cfg should be stored in the config directory of |
| // your project, alongside cr-buildbucket.cfg. |
| // |
| // Pro-tip: a command line tool exists to validate a locally generated .cfg |
| // file and verify that it matches arbitrary given CLs as expected. |
| // See https://chromium.googlesource.com/infra/luci/luci-go/+/refs/heads/main/cv/#luci-cv-command-line-utils |
| type Config struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Deprecated. Ignored. Do not use. |
| // See also https://crbug.com/1208569 to implement an alternative. |
| // |
| // Deprecated: Do not use. |
| DrainingStartTime string `protobuf:"bytes,1,opt,name=draining_start_time,json=drainingStartTime,proto3" json:"draining_start_time,omitempty"` |
| // Optional. |
| // |
| // Originally, this was used to specify the URL of the CQ status app where |
| // users have access to their Run details. Currently, with the migration |
| // from CQ to LUCI CV, this field no longer serves as the same meaning, |
| // but is used to decide the visibility of the Run details via LUCI CV UI at |
| // https://luci-change-verifier.appspot.com/ui/recents |
| // |
| // This field accepts the following values: |
| // - "chromium-cq-status.appspot.com": all Runs in this Project are public. |
| // - "internal-cq-status.appspot.com": all Runs in this Project are visible |
| // to Googler only. |
| // |
| // Note that the Run details page contains the name of the builders launched |
| // to verify CL(s). Therefore, if this Project launches internal builders for |
| // public repos and the builder names are confidential, please don't |
| // use public host. |
| // |
| // Deprecated: Do not use. |
| CqStatusHost string `protobuf:"bytes,2,opt,name=cq_status_host,json=cqStatusHost,proto3" json:"cq_status_host,omitempty"` |
| // Optional options for how CLs should be submitted. |
| SubmitOptions *SubmitOptions `protobuf:"bytes,3,opt,name=submit_options,json=submitOptions,proto3" json:"submit_options,omitempty"` |
| // At least 1 ConfigGroup is required. |
| ConfigGroups []*ConfigGroup `protobuf:"bytes,4,rep,name=config_groups,json=configGroups,proto3" json:"config_groups,omitempty"` |
| // Deprecated. Ignored. Do not use. |
| // |
| // Deprecated: Do not use. |
| ProjectScopedAccount Toggle `protobuf:"varint,5,opt,name=project_scoped_account,json=projectScopedAccount,proto3,enum=cv.config.Toggle" json:"project_scoped_account,omitempty"` |
| } |
| |
| func (x *Config) Reset() { |
| *x = Config{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[0] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Config) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Config) ProtoMessage() {} |
| |
| func (x *Config) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[0] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Config.ProtoReflect.Descriptor instead. |
| func (*Config) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{0} |
| } |
| |
| // Deprecated: Do not use. |
| func (x *Config) GetDrainingStartTime() string { |
| if x != nil { |
| return x.DrainingStartTime |
| } |
| return "" |
| } |
| |
| // Deprecated: Do not use. |
| func (x *Config) GetCqStatusHost() string { |
| if x != nil { |
| return x.CqStatusHost |
| } |
| return "" |
| } |
| |
| func (x *Config) GetSubmitOptions() *SubmitOptions { |
| if x != nil { |
| return x.SubmitOptions |
| } |
| return nil |
| } |
| |
| func (x *Config) GetConfigGroups() []*ConfigGroup { |
| if x != nil { |
| return x.ConfigGroups |
| } |
| return nil |
| } |
| |
| // Deprecated: Do not use. |
| func (x *Config) GetProjectScopedAccount() Toggle { |
| if x != nil { |
| return x.ProjectScopedAccount |
| } |
| return Toggle_UNSET |
| } |
| |
| // ConfigGroup allows one to share single verifiers config across a set of |
| // Gerrit repositories, which may be in different Gerrit installations. |
| type ConfigGroup struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The human- and machine-readable name (unique within this project) of this |
| // config group. This is used in messages posted to users and in monitoring |
| // data. Must match regex "^[a-zA-Z][a-zA-Z0-9_-]*$". |
| Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` |
| // At least 1 Gerrit instance with repositories to work with is required. |
| Gerrit []*ConfigGroup_Gerrit `protobuf:"bytes,1,rep,name=gerrit,proto3" json:"gerrit,omitempty"` |
| // Optional. If specified, CQ will consider sets of dependent CLs to test and |
| // submit at the same time. |
| // |
| // Typical use-case is testing & submitting changes to multiple repos at the |
| // same time, in which case all such repos must be declared up-front in |
| // `Gerrit` part of this config_group. |
| // |
| // Not allowed to be used together with |
| // submit_options.allow_submit_with_open_deps=true. |
| CombineCls *CombineCLs `protobuf:"bytes,4,opt,name=combine_cls,json=combineCls,proto3" json:"combine_cls,omitempty"` |
| // Defines how to verify a CL before submitting it. Required. |
| Verifiers *Verifiers `protobuf:"bytes,2,opt,name=verifiers,proto3" json:"verifiers,omitempty"` |
| // If set, this ConfigGroup will be used if no other ConfigGroup matches. |
| // |
| // At most 1 config_group can be YES. |
| // |
| // Example use is to define specific config_group for refs/heads/main, |
| // and fallback one for refs/heads/* which will pick up all CLs on |
| // non-main branches. |
| // |
| // TODO(crbug/966115): provide a better solution. |
| Fallback Toggle `protobuf:"varint,5,opt,name=fallback,proto3,enum=cv.config.Toggle" json:"fallback,omitempty"` |
| // Optional. Additional run modes supported besides standard DRY_RUN and |
| // FULL_RUN. |
| // |
| // If specified, the order matters. CQ will create the Run with the first |
| // mode for which triggering conditions are fulfilled. If there is no such |
| // mode, CQ will fallback to standard DRY_RUN or FULL_RUN. |
| // |
| // All the mode names must be unique. |
| // |
| // **NOTE**: As of Jan 2023, this field may be given either 1 or 0 mode, and |
| // the name must be "QUICK_DRY_RUN", if provided. |
| AdditionalModes []*Mode `protobuf:"bytes,7,rep,name=additional_modes,json=additionalModes,proto3" json:"additional_modes,omitempty"` |
| // Per-user limits. |
| // |
| // At the time of a Run creation, CV will iterate `user_limits` and apply the |
| // first applicable limit to the Run. If none of the limit(s) are applicable, |
| // CV will apply `user_limits_default` to the run. |
| UserLimits []*UserLimit `protobuf:"bytes,8,rep,name=user_limits,json=userLimits,proto3" json:"user_limits,omitempty"` |
| // Default per-user limit. |
| // |
| // If CV couldn't find an applicable limit from `user_limits`, this limit |
| // will be applied. |
| UserLimitDefault *UserLimit `protobuf:"bytes,9,opt,name=user_limit_default,json=userLimitDefault,proto3" json:"user_limit_default,omitempty"` |
| // PostAction to be performed on a Run completion. |
| // |
| // On a Run completion, all the post actions with matching conditions will |
| // be executed. |
| // |
| // All actions must have a unique name in the list. |
| PostActions []*ConfigGroup_PostAction `protobuf:"bytes,10,rep,name=post_actions,json=postActions,proto3" json:"post_actions,omitempty"` |
| } |
| |
| func (x *ConfigGroup) Reset() { |
| *x = ConfigGroup{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[1] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ConfigGroup) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ConfigGroup) ProtoMessage() {} |
| |
| func (x *ConfigGroup) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[1] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ConfigGroup.ProtoReflect.Descriptor instead. |
| func (*ConfigGroup) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1} |
| } |
| |
| func (x *ConfigGroup) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *ConfigGroup) GetGerrit() []*ConfigGroup_Gerrit { |
| if x != nil { |
| return x.Gerrit |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup) GetCombineCls() *CombineCLs { |
| if x != nil { |
| return x.CombineCls |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup) GetVerifiers() *Verifiers { |
| if x != nil { |
| return x.Verifiers |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup) GetFallback() Toggle { |
| if x != nil { |
| return x.Fallback |
| } |
| return Toggle_UNSET |
| } |
| |
| func (x *ConfigGroup) GetAdditionalModes() []*Mode { |
| if x != nil { |
| return x.AdditionalModes |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup) GetUserLimits() []*UserLimit { |
| if x != nil { |
| return x.UserLimits |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup) GetUserLimitDefault() *UserLimit { |
| if x != nil { |
| return x.UserLimitDefault |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup) GetPostActions() []*ConfigGroup_PostAction { |
| if x != nil { |
| return x.PostActions |
| } |
| return nil |
| } |
| |
| // SubmitOptions control how CQ submits CLs. |
| type SubmitOptions struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Optional. Maximum number of successful CQ attempts completed by submitting |
| // corresponding Gerrit CL(s) before waiting burst_delay. |
| // |
| // This feature today applies to all attempts processed by this CQ, across all |
| // config_groups. |
| // |
| // Must be >0 to take effect. Requires burst_delay to be set, too. |
| MaxBurst int32 `protobuf:"varint,1,opt,name=max_burst,json=maxBurst,proto3" json:"max_burst,omitempty"` |
| // Optional. Delay between bursts of submissions of CQ attempts. |
| // See max_burst for more info. |
| // |
| // Must be >0 to take effect. Requires max_burst to be set, too. |
| BurstDelay *durationpb.Duration `protobuf:"bytes,2,opt,name=burst_delay,json=burstDelay,proto3" json:"burst_delay,omitempty"` |
| } |
| |
| func (x *SubmitOptions) Reset() { |
| *x = SubmitOptions{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[2] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SubmitOptions) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SubmitOptions) ProtoMessage() {} |
| |
| func (x *SubmitOptions) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[2] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SubmitOptions.ProtoReflect.Descriptor instead. |
| func (*SubmitOptions) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{2} |
| } |
| |
| func (x *SubmitOptions) GetMaxBurst() int32 { |
| if x != nil { |
| return x.MaxBurst |
| } |
| return 0 |
| } |
| |
| func (x *SubmitOptions) GetBurstDelay() *durationpb.Duration { |
| if x != nil { |
| return x.BurstDelay |
| } |
| return nil |
| } |
| |
| // Mode defines a CQ Run mode and how it can be triggered. |
| type Mode struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Name of the mode. |
| // |
| // Must match regex "^[a-zA-Z][a-zA-Z0-9_-]{0,39}$". |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Value of Commit-Queue label that triggers a CQ Run in the mode. |
| // |
| // Must be either 1 or 2. |
| CqLabelValue int32 `protobuf:"varint,2,opt,name=cq_label_value,json=cqLabelValue,proto3" json:"cq_label_value,omitempty"` |
| // Label that MUST also be voted with `triggering_value` in addition to |
| // "Commit-Queue" label to trigger a CQ Run in the mode. |
| // |
| // Must not be "Commit-Queue" |
| TriggeringLabel string `protobuf:"bytes,3,opt,name=triggering_label,json=triggeringLabel,proto3" json:"triggering_label,omitempty"` |
| // Value of the `trigerring_label` that triggers a CQ Run in the mode. |
| // |
| // Must be > 0 |
| TriggeringValue int32 `protobuf:"varint,4,opt,name=triggering_value,json=triggeringValue,proto3" json:"triggering_value,omitempty"` |
| } |
| |
| func (x *Mode) Reset() { |
| *x = Mode{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[3] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Mode) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Mode) ProtoMessage() {} |
| |
| func (x *Mode) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[3] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Mode.ProtoReflect.Descriptor instead. |
| func (*Mode) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{3} |
| } |
| |
| func (x *Mode) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *Mode) GetCqLabelValue() int32 { |
| if x != nil { |
| return x.CqLabelValue |
| } |
| return 0 |
| } |
| |
| func (x *Mode) GetTriggeringLabel() string { |
| if x != nil { |
| return x.TriggeringLabel |
| } |
| return "" |
| } |
| |
| func (x *Mode) GetTriggeringValue() int32 { |
| if x != nil { |
| return x.TriggeringValue |
| } |
| return 0 |
| } |
| |
| // CombineCLs defines how CQ works with >1 CL per attempt. |
| // |
| // Dependencies between CLs are either implicit via Git child->parent |
| // relationship (e.g. stacked CLs in Gerrit) or explicit via "CQ-Depend:" |
| // footer in CL description (next to Change-Id:). "CQ-Depend" may span |
| // across repositories and even Gerrit hosts. For example, a CL on |
| // https://pdfium-review.googlesource.com may declare dependency on |
| // https://chromium-review.googlesource.com/1111111 by adding this footer: |
| // |
| // CQ-Depend: chromium:1111111 |
| // |
| // The "chromium" part means that 1111111 is on the |
| // chromium-review.googlesource.com host. It can be omitted if dependency |
| // is on the same host as the CL depending on it. |
| // |
| // CQ-Depend alone or with Git dependencies may form cycles, which is useful |
| // to require CQ to test & submit all CLs in a cycle at the same time, never |
| // alone. |
| // |
| // A user must vote on CQ label on **each CL** individually. Since it can't be |
| // instantaneous, `stabilization_delay` controls how long CQ waits for all |
| // CQ+1/2 votes before computing maximal expanded set of CLs and starting the |
| // attempt. |
| // |
| // For any CL with CQ+1/2 vote, each of its dependency must have the same CQ |
| // vote and be configured for CQ **in the same config group**, else CQ would |
| // abort the attempt with appropriate error message. |
| // |
| // Each tryjob CQ triggers via Buildbucket will be associated with each CL of |
| // the attempt via `gerrit_changes` parameter of Buildbucket. These changes are |
| // then available to a build as it is being executed. If ran via recipes, |
| // the `ordered_gerrit_changes` property of |
| // https://chromium.googlesource.com/infra/luci/recipes-py/+/HEAD/README.recipes.md#class-cqapi_recipeapi |
| // can be used to CLs in the right order. |
| // |
| // WARNING: When submitting CLs, CQ can not do so atomically (all submitted or |
| // none submitted) because Gerrit doesn't support this even for the same repo. |
| type CombineCLs struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Roughly, how long CQ waits for CQ to be triggered on each of the related |
| // CLs. |
| // |
| // Must be greater than 10s. |
| // 30s is recommended. |
| // |
| // Technically precise definition is time to wait since the latest CL among |
| // related ones receives CQ+1/2 vote before starting actual attempt. |
| // |
| // For example, during this delay, a CQ vote may be added on another CL |
| // which depends on previously CQ-ed CL in this not-yet-started attempt. Then, |
| // CQ would extend the attempt with additional CL and reset the waiting |
| // counter. |
| // |
| // Additional implication is that a standalone CL w/o any other relations to |
| // other CLs will need to wait this much time before CQ would start processing |
| // it (i.e., before it triggers first tryjob). |
| StabilizationDelay *durationpb.Duration `protobuf:"bytes,1,opt,name=stabilization_delay,json=stabilizationDelay,proto3" json:"stabilization_delay,omitempty"` |
| } |
| |
| func (x *CombineCLs) Reset() { |
| *x = CombineCLs{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[4] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *CombineCLs) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*CombineCLs) ProtoMessage() {} |
| |
| func (x *CombineCLs) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[4] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use CombineCLs.ProtoReflect.Descriptor instead. |
| func (*CombineCLs) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{4} |
| } |
| |
| func (x *CombineCLs) GetStabilizationDelay() *durationpb.Duration { |
| if x != nil { |
| return x.StabilizationDelay |
| } |
| return nil |
| } |
| |
| // Verifiers are various types of checks that a Commit Queue performs on a CL. |
| // All verifiers must pass in order for a CL to be submitted. Configuration file |
| // describes types of verifiers that should be applied to each CL and their |
| // parameters. |
| type Verifiers struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. GerritCQAbility ensures that a user who triggered |
| // this CQ attempt actually has rights to do so based on 3 factors: |
| // - membership of the user in committers & dryrunners group, |
| // - the state of CL/patchset on which CQ is triggered, |
| // - relationship of the user to the CL. |
| GerritCqAbility *Verifiers_GerritCQAbility `protobuf:"bytes,1,opt,name=gerrit_cq_ability,json=gerritCqAbility,proto3" json:"gerrit_cq_ability,omitempty"` |
| // This verifier is used to check tree status before committing a CL. If the |
| // tree is closed, then the verifier will wait until it is reopened. |
| TreeStatus *Verifiers_TreeStatus `protobuf:"bytes,2,opt,name=tree_status,json=treeStatus,proto3" json:"tree_status,omitempty"` |
| // This verifier triggers a set of builds through Buildbucket. |
| // |
| // CQ automatically retries failed tryjobs and only allows CL to land if each |
| // builder has succeeded in the latest retry. |
| // If a given tryjob result is too old (>1 day) it is ignored. |
| // |
| // Typically, builds from Buildbucket are executed on LUCI stack, however, CQ |
| // is agnostic to how and where builds are executed. |
| Tryjob *Verifiers_Tryjob `protobuf:"bytes,3,opt,name=tryjob,proto3" json:"tryjob,omitempty"` |
| // CQLinter is for internal CQ use only. DO NOT USE IN YOUR cq.cfg. |
| Cqlinter *Verifiers_CQLinter `protobuf:"bytes,4,opt,name=cqlinter,proto3" json:"cqlinter,omitempty"` |
| // Fake is for internal CQ use only. DO NOT USE IN YOUR cq.cfg. |
| Fake *Verifiers_Fake `protobuf:"bytes,5,opt,name=fake,proto3" json:"fake,omitempty"` |
| } |
| |
| func (x *Verifiers) Reset() { |
| *x = Verifiers{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[5] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers) ProtoMessage() {} |
| |
| func (x *Verifiers) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[5] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers.ProtoReflect.Descriptor instead. |
| func (*Verifiers) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5} |
| } |
| |
| func (x *Verifiers) GetGerritCqAbility() *Verifiers_GerritCQAbility { |
| if x != nil { |
| return x.GerritCqAbility |
| } |
| return nil |
| } |
| |
| func (x *Verifiers) GetTreeStatus() *Verifiers_TreeStatus { |
| if x != nil { |
| return x.TreeStatus |
| } |
| return nil |
| } |
| |
| func (x *Verifiers) GetTryjob() *Verifiers_Tryjob { |
| if x != nil { |
| return x.Tryjob |
| } |
| return nil |
| } |
| |
| func (x *Verifiers) GetCqlinter() *Verifiers_CQLinter { |
| if x != nil { |
| return x.Cqlinter |
| } |
| return nil |
| } |
| |
| func (x *Verifiers) GetFake() *Verifiers_Fake { |
| if x != nil { |
| return x.Fake |
| } |
| return nil |
| } |
| |
| // UserLimit specifies Run and Tryjob limits per user. |
| type UserLimit struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Name of the limit. Must be unique across all the policies |
| // with the LUCI project. |
| // |
| // Required. Must match regex '^[0-9A-Za-z][0-9A-Za-z\.\-@_+]{0,511}$' |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Principals to apply the limits to. |
| // |
| // Each entry can be either an identity string "user:<email>" |
| // or a LUCI group reference "group:<name>" |
| Principals []string `protobuf:"bytes,2,rep,name=principals,proto3" json:"principals,omitempty"` |
| // Run limits. Required. |
| Run *UserLimit_Run `protobuf:"bytes,5,opt,name=run,proto3" json:"run,omitempty"` |
| // Tryjob limits. Required |
| Tryjob *UserLimit_Tryjob `protobuf:"bytes,6,opt,name=tryjob,proto3" json:"tryjob,omitempty"` |
| } |
| |
| func (x *UserLimit) Reset() { |
| *x = UserLimit{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[6] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *UserLimit) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*UserLimit) ProtoMessage() {} |
| |
| func (x *UserLimit) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[6] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use UserLimit.ProtoReflect.Descriptor instead. |
| func (*UserLimit) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{6} |
| } |
| |
| func (x *UserLimit) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *UserLimit) GetPrincipals() []string { |
| if x != nil { |
| return x.Principals |
| } |
| return nil |
| } |
| |
| func (x *UserLimit) GetRun() *UserLimit_Run { |
| if x != nil { |
| return x.Run |
| } |
| return nil |
| } |
| |
| func (x *UserLimit) GetTryjob() *UserLimit_Tryjob { |
| if x != nil { |
| return x.Tryjob |
| } |
| return nil |
| } |
| |
| // Enumerates repositories on a Gerrit instance for which CQ should work. |
| type ConfigGroup_Gerrit struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Gerrit URL, e.g., https://chromium-review.googlesource.com. |
| // No trailing slashes allowed. |
| Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` |
| // Gerrit projects of this Gerrit instance to work with. |
| // |
| // At least 1 required. |
| Projects []*ConfigGroup_Gerrit_Project `protobuf:"bytes,2,rep,name=projects,proto3" json:"projects,omitempty"` |
| } |
| |
| func (x *ConfigGroup_Gerrit) Reset() { |
| *x = ConfigGroup_Gerrit{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[7] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ConfigGroup_Gerrit) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ConfigGroup_Gerrit) ProtoMessage() {} |
| |
| func (x *ConfigGroup_Gerrit) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[7] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ConfigGroup_Gerrit.ProtoReflect.Descriptor instead. |
| func (*ConfigGroup_Gerrit) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1, 0} |
| } |
| |
| func (x *ConfigGroup_Gerrit) GetUrl() string { |
| if x != nil { |
| return x.Url |
| } |
| return "" |
| } |
| |
| func (x *ConfigGroup_Gerrit) GetProjects() []*ConfigGroup_Gerrit_Project { |
| if x != nil { |
| return x.Projects |
| } |
| return nil |
| } |
| |
| // Action to be performed on a Run completion. |
| type ConfigGroup_PostAction struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Name of the post action. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // If at least one of the conditions is met, |
| // the action will be triggered on a Run completion. |
| Conditions []*ConfigGroup_PostAction_TriggeringCondition `protobuf:"bytes,2,rep,name=conditions,proto3" json:"conditions,omitempty"` |
| // Types that are assignable to Action: |
| // |
| // *ConfigGroup_PostAction_VoteGerritLabels_ |
| Action isConfigGroup_PostAction_Action `protobuf_oneof:"action"` |
| } |
| |
| func (x *ConfigGroup_PostAction) Reset() { |
| *x = ConfigGroup_PostAction{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[8] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ConfigGroup_PostAction) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ConfigGroup_PostAction) ProtoMessage() {} |
| |
| func (x *ConfigGroup_PostAction) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[8] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ConfigGroup_PostAction.ProtoReflect.Descriptor instead. |
| func (*ConfigGroup_PostAction) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1, 1} |
| } |
| |
| func (x *ConfigGroup_PostAction) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *ConfigGroup_PostAction) GetConditions() []*ConfigGroup_PostAction_TriggeringCondition { |
| if x != nil { |
| return x.Conditions |
| } |
| return nil |
| } |
| |
| func (m *ConfigGroup_PostAction) GetAction() isConfigGroup_PostAction_Action { |
| if m != nil { |
| return m.Action |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup_PostAction) GetVoteGerritLabels() *ConfigGroup_PostAction_VoteGerritLabels { |
| if x, ok := x.GetAction().(*ConfigGroup_PostAction_VoteGerritLabels_); ok { |
| return x.VoteGerritLabels |
| } |
| return nil |
| } |
| |
| type isConfigGroup_PostAction_Action interface { |
| isConfigGroup_PostAction_Action() |
| } |
| |
| type ConfigGroup_PostAction_VoteGerritLabels_ struct { |
| VoteGerritLabels *ConfigGroup_PostAction_VoteGerritLabels `protobuf:"bytes,3,opt,name=vote_gerrit_labels,json=voteGerritLabels,proto3,oneof"` |
| } |
| |
| func (*ConfigGroup_PostAction_VoteGerritLabels_) isConfigGroup_PostAction_Action() {} |
| |
| type ConfigGroup_Gerrit_Project struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Repository name inside Gerrit host. Required. |
| // |
| // No leading or trailing slashes allowed, no '.git' at the end. |
| // 'a/' prefix is also not allowed (it's used on *.googlesource.com for |
| // forcing authentication). |
| // |
| // Examples on https://chromium-review.googlesource.com: |
| // |
| // catapult |
| // chromium/src |
| // chromium/tools/depot_tools |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Limit CLs in this repo to only these refs. Required. |
| // |
| // If not specified, defaults to "refs/heads/master". |
| // |
| // NOTE: your Gerrit admin must configure Gerrit ACLs such that CQ has |
| // read access to these refs, otherwise your users will be waiting for CQ |
| // to act on their CLs forever. |
| // |
| // Regular expression is validated by https://github.com/google/re2 library. |
| // |
| // NOTE: Git globs aren't supported. Convert them to a regular expression, |
| // e.g., Git glob "refs/heads/*" should be "refs/heads/[^/]+". |
| // However, users typically expect "refs/heads/.+", since expectation is |
| // that every typical Git branch to be CQ-able, including |
| // "refs/heads/experimental/foobar". |
| RefRegexp []string `protobuf:"bytes,2,rep,name=ref_regexp,json=refRegexp,proto3" json:"ref_regexp,omitempty"` |
| // Exclude matching refs in this repo. Optional. |
| // |
| // If a ref is matches at least one of the ref_regexp_exclude, |
| // then it is ignored by this config group regardless of ref_regexp. |
| // |
| // The syntax is the same as for ref_regexp. |
| RefRegexpExclude []string `protobuf:"bytes,3,rep,name=ref_regexp_exclude,json=refRegexpExclude,proto3" json:"ref_regexp_exclude,omitempty"` |
| } |
| |
| func (x *ConfigGroup_Gerrit_Project) Reset() { |
| *x = ConfigGroup_Gerrit_Project{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[9] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ConfigGroup_Gerrit_Project) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ConfigGroup_Gerrit_Project) ProtoMessage() {} |
| |
| func (x *ConfigGroup_Gerrit_Project) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[9] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ConfigGroup_Gerrit_Project.ProtoReflect.Descriptor instead. |
| func (*ConfigGroup_Gerrit_Project) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1, 0, 0} |
| } |
| |
| func (x *ConfigGroup_Gerrit_Project) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *ConfigGroup_Gerrit_Project) GetRefRegexp() []string { |
| if x != nil { |
| return x.RefRegexp |
| } |
| return nil |
| } |
| |
| func (x *ConfigGroup_Gerrit_Project) GetRefRegexpExclude() []string { |
| if x != nil { |
| return x.RefRegexpExclude |
| } |
| return nil |
| } |
| |
| // Condition to be met for the action to be triggered. |
| type ConfigGroup_PostAction_TriggeringCondition struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Name of the mode to be matched. |
| // |
| // Must be FULL_RUN, DRY_RUN, QUICK_DRY_RUN, NEW_PATCHSET_RUN, or one of |
| // the additional modes configured. |
| Mode string `protobuf:"bytes,1,opt,name=mode,proto3" json:"mode,omitempty"` |
| // Statuses to trigger the action on. |
| // |
| // Must be terminal statuses. |
| // Duplicates are not allowed. |
| Statuses []v1.Run_Status `protobuf:"varint,2,rep,packed,name=statuses,proto3,enum=cv.v1.Run_Status" json:"statuses,omitempty"` |
| } |
| |
| func (x *ConfigGroup_PostAction_TriggeringCondition) Reset() { |
| *x = ConfigGroup_PostAction_TriggeringCondition{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[10] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ConfigGroup_PostAction_TriggeringCondition) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ConfigGroup_PostAction_TriggeringCondition) ProtoMessage() {} |
| |
| func (x *ConfigGroup_PostAction_TriggeringCondition) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[10] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ConfigGroup_PostAction_TriggeringCondition.ProtoReflect.Descriptor instead. |
| func (*ConfigGroup_PostAction_TriggeringCondition) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1, 1, 0} |
| } |
| |
| func (x *ConfigGroup_PostAction_TriggeringCondition) GetMode() string { |
| if x != nil { |
| return x.Mode |
| } |
| return "" |
| } |
| |
| func (x *ConfigGroup_PostAction_TriggeringCondition) GetStatuses() []v1.Run_Status { |
| if x != nil { |
| return x.Statuses |
| } |
| return nil |
| } |
| |
| // Vote Gerrit labels with given values. |
| type ConfigGroup_PostAction_VoteGerritLabels struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // All label names must be unique. |
| Votes []*ConfigGroup_PostAction_VoteGerritLabels_Vote `protobuf:"bytes,1,rep,name=votes,proto3" json:"votes,omitempty"` |
| } |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels) Reset() { |
| *x = ConfigGroup_PostAction_VoteGerritLabels{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[11] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ConfigGroup_PostAction_VoteGerritLabels) ProtoMessage() {} |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[11] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ConfigGroup_PostAction_VoteGerritLabels.ProtoReflect.Descriptor instead. |
| func (*ConfigGroup_PostAction_VoteGerritLabels) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1, 1, 1} |
| } |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels) GetVotes() []*ConfigGroup_PostAction_VoteGerritLabels_Vote { |
| if x != nil { |
| return x.Votes |
| } |
| return nil |
| } |
| |
| type ConfigGroup_PostAction_VoteGerritLabels_Vote struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Gerrit label name |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Value to set on the label |
| Value int32 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` |
| } |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels_Vote) Reset() { |
| *x = ConfigGroup_PostAction_VoteGerritLabels_Vote{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[12] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels_Vote) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ConfigGroup_PostAction_VoteGerritLabels_Vote) ProtoMessage() {} |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels_Vote) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[12] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ConfigGroup_PostAction_VoteGerritLabels_Vote.ProtoReflect.Descriptor instead. |
| func (*ConfigGroup_PostAction_VoteGerritLabels_Vote) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{1, 1, 1, 0} |
| } |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels_Vote) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *ConfigGroup_PostAction_VoteGerritLabels_Vote) GetValue() int32 { |
| if x != nil { |
| return x.Value |
| } |
| return 0 |
| } |
| |
| // Next tag: 6. |
| type Verifiers_GerritCQAbility struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. List of chrome-infra-auth groups, whose members are authorized |
| // to trigger full CQ runs. |
| // |
| // Typically, such groups are named "project-<name>-committers". |
| CommitterList []string `protobuf:"bytes,1,rep,name=committer_list,json=committerList,proto3" json:"committer_list,omitempty"` |
| // Optional, but strongly recommended. List of chrome-infra-auth groups, |
| // whose members are authorized to trigger CQ dry run on Gerrit CLs they own |
| // (not to be confused with OWNER files) even if CL hasn't been approved. |
| // |
| // Typically, such groups are named "project-<name>-tryjob-access". |
| DryRunAccessList []string `protobuf:"bytes,2,rep,name=dry_run_access_list,json=dryRunAccessList,proto3" json:"dry_run_access_list,omitempty"` |
| // Optional, but required to use auto-triggered runs on new patchset upload, |
| // it defines a list of chrome-infra-auth groups whose members are |
| // authorized to trigger a new patchset runs. That is, CV will check the |
| // owner of the CL when a new patchset is uploaded against these. |
| NewPatchsetRunAccessList []string `protobuf:"bytes,5,rep,name=new_patchset_run_access_list,json=newPatchsetRunAccessList,proto3" json:"new_patchset_run_access_list,omitempty"` |
| // Optional. allow_submit_with_open_deps controls how CQ full run behaves |
| // when current Gerrit CL has open dependencies (not yet submitted CLs on |
| // which *this* CL depends). |
| // |
| // If set to false (default), CQ will abort full run attempt immediately if |
| // open dependencies are detected. |
| // |
| // If set to true, then CQ will not abort full run and upon passing all |
| // other verifiers, CQ will attempt to submit the CL regardless of open |
| // dependencies and whether CQ verified those open dependencies. |
| // In turn, if Gerrit project config allows this, Gerrit will execute submit |
| // of all dependent CLs first and then this CL. |
| AllowSubmitWithOpenDeps bool `protobuf:"varint,3,opt,name=allow_submit_with_open_deps,json=allowSubmitWithOpenDeps,proto3" json:"allow_submit_with_open_deps,omitempty"` |
| // Optional. Allow CL owner to trigger CQ dry or full run on their own CL, |
| // even if not a member of `committer_list` or `dry_run_access_list`. |
| // Defaults to no such allowance. |
| // |
| // WARNING: using this option is not recommended if you have sticky |
| // Code-Review label because this allows a malicious developer to upload |
| // an good looking patchset at first, get code review approval, |
| // and then upload a bad patchset and CQ it right away. |
| // |
| // CL owner is Gerrit user owning a CL, i.e., its first patchset uploader. |
| // not to be confused with OWNERS files. |
| AllowOwnerIfSubmittable Verifiers_GerritCQAbility_CQAction `protobuf:"varint,4,opt,name=allow_owner_if_submittable,json=allowOwnerIfSubmittable,proto3,enum=cv.config.Verifiers_GerritCQAbility_CQAction" json:"allow_owner_if_submittable,omitempty"` |
| } |
| |
| func (x *Verifiers_GerritCQAbility) Reset() { |
| *x = Verifiers_GerritCQAbility{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[13] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_GerritCQAbility) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_GerritCQAbility) ProtoMessage() {} |
| |
| func (x *Verifiers_GerritCQAbility) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[13] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_GerritCQAbility.ProtoReflect.Descriptor instead. |
| func (*Verifiers_GerritCQAbility) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 0} |
| } |
| |
| func (x *Verifiers_GerritCQAbility) GetCommitterList() []string { |
| if x != nil { |
| return x.CommitterList |
| } |
| return nil |
| } |
| |
| func (x *Verifiers_GerritCQAbility) GetDryRunAccessList() []string { |
| if x != nil { |
| return x.DryRunAccessList |
| } |
| return nil |
| } |
| |
| func (x *Verifiers_GerritCQAbility) GetNewPatchsetRunAccessList() []string { |
| if x != nil { |
| return x.NewPatchsetRunAccessList |
| } |
| return nil |
| } |
| |
| func (x *Verifiers_GerritCQAbility) GetAllowSubmitWithOpenDeps() bool { |
| if x != nil { |
| return x.AllowSubmitWithOpenDeps |
| } |
| return false |
| } |
| |
| func (x *Verifiers_GerritCQAbility) GetAllowOwnerIfSubmittable() Verifiers_GerritCQAbility_CQAction { |
| if x != nil { |
| return x.AllowOwnerIfSubmittable |
| } |
| return Verifiers_GerritCQAbility_UNSET |
| } |
| |
| type Verifiers_TreeStatus struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. URL of the project tree status app. |
| Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` |
| } |
| |
| func (x *Verifiers_TreeStatus) Reset() { |
| *x = Verifiers_TreeStatus{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[14] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_TreeStatus) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_TreeStatus) ProtoMessage() {} |
| |
| func (x *Verifiers_TreeStatus) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[14] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_TreeStatus.ProtoReflect.Descriptor instead. |
| func (*Verifiers_TreeStatus) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 1} |
| } |
| |
| func (x *Verifiers_TreeStatus) GetUrl() string { |
| if x != nil { |
| return x.Url |
| } |
| return "" |
| } |
| |
| // Tryjob configures builders which CQ may trigger and/or use to verify CL(s). |
| type Verifiers_Tryjob struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Builders on which tryjobs should be triggered. |
| // |
| // CQ won't allow adding any builder via `CQ-Include-Trybots:` in CL |
| // description except those in this list (including the equivalent |
| // builders). |
| Builders []*Verifiers_Tryjob_Builder `protobuf:"bytes,1,rep,name=builders,proto3" json:"builders,omitempty"` |
| // Optional, defaulting to no retries whatsoever. |
| RetryConfig *Verifiers_Tryjob_RetryConfig `protobuf:"bytes,2,opt,name=retry_config,json=retryConfig,proto3" json:"retry_config,omitempty"` |
| // DEPRECATED. Use per-builder `cancel_stale` instead. |
| // |
| // Deprecated: Do not use. |
| CancelStaleTryjobs Toggle `protobuf:"varint,3,opt,name=cancel_stale_tryjobs,json=cancelStaleTryjobs,proto3,enum=cv.config.Toggle" json:"cancel_stale_tryjobs,omitempty"` |
| } |
| |
| func (x *Verifiers_Tryjob) Reset() { |
| *x = Verifiers_Tryjob{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[15] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_Tryjob) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_Tryjob) ProtoMessage() {} |
| |
| func (x *Verifiers_Tryjob) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[15] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_Tryjob.ProtoReflect.Descriptor instead. |
| func (*Verifiers_Tryjob) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 2} |
| } |
| |
| func (x *Verifiers_Tryjob) GetBuilders() []*Verifiers_Tryjob_Builder { |
| if x != nil { |
| return x.Builders |
| } |
| return nil |
| } |
| |
| func (x *Verifiers_Tryjob) GetRetryConfig() *Verifiers_Tryjob_RetryConfig { |
| if x != nil { |
| return x.RetryConfig |
| } |
| return nil |
| } |
| |
| // Deprecated: Do not use. |
| func (x *Verifiers_Tryjob) GetCancelStaleTryjobs() Toggle { |
| if x != nil { |
| return x.CancelStaleTryjobs |
| } |
| return Toggle_UNSET |
| } |
| |
| // CQLinter is for internal use in CQ. |
| // |
| // Deprecated. Do not use. |
| // TODO(crbug/1127991): Remove after migration off CQDaemon is completed. |
| type Verifiers_CQLinter struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *Verifiers_CQLinter) Reset() { |
| *x = Verifiers_CQLinter{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[16] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_CQLinter) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_CQLinter) ProtoMessage() {} |
| |
| func (x *Verifiers_CQLinter) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[16] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_CQLinter.ProtoReflect.Descriptor instead. |
| func (*Verifiers_CQLinter) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 3} |
| } |
| |
| // Fake is for internal use in CQ. |
| // |
| // Deprecated. Do not use. |
| // TODO(crbug/1127991): Remove after migration off CQDaemon is completed. |
| type Verifiers_Fake struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| EventualState string `protobuf:"bytes,2,opt,name=eventual_state,json=eventualState,proto3" json:"eventual_state,omitempty"` |
| Delay int32 `protobuf:"varint,3,opt,name=delay,proto3" json:"delay,omitempty"` |
| } |
| |
| func (x *Verifiers_Fake) Reset() { |
| *x = Verifiers_Fake{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[17] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_Fake) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_Fake) ProtoMessage() {} |
| |
| func (x *Verifiers_Fake) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[17] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_Fake.ProtoReflect.Descriptor instead. |
| func (*Verifiers_Fake) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 4} |
| } |
| |
| func (x *Verifiers_Fake) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Fake) GetEventualState() string { |
| if x != nil { |
| return x.EventualState |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Fake) GetDelay() int32 { |
| if x != nil { |
| return x.Delay |
| } |
| return 0 |
| } |
| |
| type Verifiers_Tryjob_Builder struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The buildbucket host name. |
| // |
| // Optional. If empty, default to "cr-buildbucket.appspot.com". |
| Host string `protobuf:"bytes,16,opt,name=host,proto3" json:"host,omitempty"` |
| // Required. Name of the builder as <project>/<bucket>/<builder> |
| // |
| // Examples: |
| // |
| // "chromium/try/linux-tester" |
| // "other-project/try/shared-try-builder" |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // If true, this builder will only be used if specified via |
| // `CQ-Include-Trybots:` on CL description. |
| // |
| // If false, the builder may still be included via `CQ-Include-Trybots:` |
| // on CL description. |
| // |
| // This is useful if you want individual CLs to opt-in to this builder, |
| // e.g.: |
| // |
| // builder {name: "win-release"} # required for all. |
| // builder {name: "win-debug" includable_only: true} # opt in only. |
| // |
| // Not combinable with: |
| // - location_filters |
| // - experiment_percentage |
| IncludableOnly bool `protobuf:"varint,9,opt,name=includable_only,json=includableOnly,proto3" json:"includable_only,omitempty"` |
| // Determines how visible the results of a build for this builder are in |
| // Gerrit for this tryjob. |
| // |
| // This doesn't affect the buildbucket plugin (green/red chips). |
| ResultVisibility CommentLevel `protobuf:"varint,10,opt,name=result_visibility,json=resultVisibility,proto3,enum=cv.config.CommentLevel" json:"result_visibility,omitempty"` |
| // Optional. If true, a fresh build will be required for each CQ attempt. |
| // |
| // Default is false, meaning CQ may re-use a successful build |
| // triggered before current CQ attempt started. |
| // |
| // This option is typically used for builders which run depot_tools' |
| // PRESUBMIT scripts, which are supposed to be quick to run and provide |
| // additional OWNERS, lint, etc checks which are useful to run against |
| // the latest revision of the CL's target branch. |
| DisableReuse bool `protobuf:"varint,2,opt,name=disable_reuse,json=disableReuse,proto3" json:"disable_reuse,omitempty"` |
| // Optional. If YES (default), running or not-yet-started builds of this |
| // builder previously triggered by CQ will be cancelled as soon as |
| // a substantially different patchset is uploaded to a CL. |
| // |
| // The following paragraph is only applicable to LUCI Change Verifier ( |
| // The successor of legacy CQ). As of 09/2020, the implementation is |
| // still WIP. TODO(crbug/1127991): Remove after migration is done. |
| // |
| // CV will snapshot the value of this option when a Run is created |
| // and use it throughout the lifecycle of this Run. Therefore, |
| // modification on this option will only take effect on newly-created |
| // Runs after config change is propagated to CV. |
| CancelStale Toggle `protobuf:"varint,11,opt,name=cancel_stale,json=cancelStale,proto3,enum=cv.config.Toggle" json:"cancel_stale,omitempty"` |
| // Optional. When this field is present, it marks given builder as |
| // experimental. It is only triggered on a given percentage of the CLs |
| // and the outcome does not affect the decision of whether a CL can land |
| // or not. This is typically used to test new builders and estimate their |
| // capacity requirements. May be combined with location_filters. |
| ExperimentPercentage float32 `protobuf:"fixed32,4,opt,name=experiment_percentage,json=experimentPercentage,proto3" json:"experiment_percentage,omitempty"` |
| // Optionally specified alternative builder for CQ to choose instead. |
| // If provided, CQ will choose only one of the equivalent builders as |
| // required based purely on given CL and CL's owner and **regardless** of |
| // the possibly already completed tryjobs. |
| // |
| // Note: The equivalent builders can be included using |
| // `CQ-Include-Trybots:` footer. In this case, CQ will always try to |
| // trigger the equivalent builders regardless of the equivalent |
| // percentage. |
| EquivalentTo *Verifiers_Tryjob_EquivalentBuilder `protobuf:"bytes,5,opt,name=equivalent_to,json=equivalentTo,proto3" json:"equivalent_to,omitempty"` |
| LocationFilters []*Verifiers_Tryjob_Builder_LocationFilter `protobuf:"bytes,15,rep,name=location_filters,json=locationFilters,proto3" json:"location_filters,omitempty"` |
| // If set, this builder will only be triggered if the CL owner (who first |
| // uploaded the CL) is a member of at least one of these groups. |
| OwnerWhitelistGroup []string `protobuf:"bytes,8,rep,name=owner_whitelist_group,json=ownerWhitelistGroup,proto3" json:"owner_whitelist_group,omitempty"` |
| // If set, require this builder only if the Run mode matches |
| // one of the modes in this list. If unset, it implies that only FULL_RUN |
| // and DRY_RUN are allowed, and temporarily QUICK_DRY_RUN. Optional. |
| ModeAllowlist []string `protobuf:"bytes,14,rep,name=mode_allowlist,json=modeAllowlist,proto3" json:"mode_allowlist,omitempty"` |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) Reset() { |
| *x = Verifiers_Tryjob_Builder{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[18] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_Tryjob_Builder) ProtoMessage() {} |
| |
| func (x *Verifiers_Tryjob_Builder) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[18] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_Tryjob_Builder.ProtoReflect.Descriptor instead. |
| func (*Verifiers_Tryjob_Builder) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 2, 0} |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetHost() string { |
| if x != nil { |
| return x.Host |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetIncludableOnly() bool { |
| if x != nil { |
| return x.IncludableOnly |
| } |
| return false |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetResultVisibility() CommentLevel { |
| if x != nil { |
| return x.ResultVisibility |
| } |
| return CommentLevel_COMMENT_LEVEL_UNSET |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetDisableReuse() bool { |
| if x != nil { |
| return x.DisableReuse |
| } |
| return false |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetCancelStale() Toggle { |
| if x != nil { |
| return x.CancelStale |
| } |
| return Toggle_UNSET |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetExperimentPercentage() float32 { |
| if x != nil { |
| return x.ExperimentPercentage |
| } |
| return 0 |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetEquivalentTo() *Verifiers_Tryjob_EquivalentBuilder { |
| if x != nil { |
| return x.EquivalentTo |
| } |
| return nil |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetLocationFilters() []*Verifiers_Tryjob_Builder_LocationFilter { |
| if x != nil { |
| return x.LocationFilters |
| } |
| return nil |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetOwnerWhitelistGroup() []string { |
| if x != nil { |
| return x.OwnerWhitelistGroup |
| } |
| return nil |
| } |
| |
| func (x *Verifiers_Tryjob_Builder) GetModeAllowlist() []string { |
| if x != nil { |
| return x.ModeAllowlist |
| } |
| return nil |
| } |
| |
| type Verifiers_Tryjob_EquivalentBuilder struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Name of this builder. |
| // Format is the same in the same format as Builder.name. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Percentage expressing probability of CQ triggering this builder instead |
| // of the builder to which this builder is equivalent to. |
| // |
| // A choice itself is made deterministically based on CL alone, hereby |
| // all CQ attempts on all patchsets of a given CL will trigger the same |
| // builder, assuming CQ config doesn't change in the mean time. |
| // |
| // Note that if `owner_whitelist_group` is also specified, the choice over |
| // which of the two builders to trigger will be made only for CLs owned by |
| // whitelisted group. |
| // |
| // If not specified, defaults to 0, meaning this builder is never |
| // triggered by CQ, but an existing build can be re-used by CQ. |
| // |
| // To illustrate, suppose percentage=10. Then, |
| // |
| // Without owner_whitelist_group, |
| // ~10% of all CQ attempts will trigger this builder. |
| // With owner_whitelist_group set and, suppose, 1/5 of CQ attempts are |
| // ran on CLs owned by this group, then only ~(1/10)*(1/5) or |
| // ~2% of all CQ attempts will trigger this builder. |
| Percentage float32 `protobuf:"fixed32,2,opt,name=percentage,proto3" json:"percentage,omitempty"` |
| // If specified, limits the builder to CL owners in this group. |
| OwnerWhitelistGroup string `protobuf:"bytes,3,opt,name=owner_whitelist_group,json=ownerWhitelistGroup,proto3" json:"owner_whitelist_group,omitempty"` |
| } |
| |
| func (x *Verifiers_Tryjob_EquivalentBuilder) Reset() { |
| *x = Verifiers_Tryjob_EquivalentBuilder{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[19] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_Tryjob_EquivalentBuilder) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_Tryjob_EquivalentBuilder) ProtoMessage() {} |
| |
| func (x *Verifiers_Tryjob_EquivalentBuilder) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[19] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_Tryjob_EquivalentBuilder.ProtoReflect.Descriptor instead. |
| func (*Verifiers_Tryjob_EquivalentBuilder) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 2, 1} |
| } |
| |
| func (x *Verifiers_Tryjob_EquivalentBuilder) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Tryjob_EquivalentBuilder) GetPercentage() float32 { |
| if x != nil { |
| return x.Percentage |
| } |
| return 0 |
| } |
| |
| func (x *Verifiers_Tryjob_EquivalentBuilder) GetOwnerWhitelistGroup() string { |
| if x != nil { |
| return x.OwnerWhitelistGroup |
| } |
| return "" |
| } |
| |
| // Builder which can be included via `CQ-Include-Trybots:` in CL |
| // description. |
| type Verifiers_Tryjob_IncludableBuilder struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Name of this builder. |
| // Format is the same in the same format as Builder.name. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *Verifiers_Tryjob_IncludableBuilder) Reset() { |
| *x = Verifiers_Tryjob_IncludableBuilder{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[20] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_Tryjob_IncludableBuilder) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_Tryjob_IncludableBuilder) ProtoMessage() {} |
| |
| func (x *Verifiers_Tryjob_IncludableBuilder) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[20] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_Tryjob_IncludableBuilder.ProtoReflect.Descriptor instead. |
| func (*Verifiers_Tryjob_IncludableBuilder) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 2, 2} |
| } |
| |
| func (x *Verifiers_Tryjob_IncludableBuilder) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Collection of parameters for deciding whether to retry a single build. |
| // If parameter is not specified, its value defaults to 0 (per proto3). |
| // Thus, omitting all parameters means no retries of any kind. |
| // |
| // CQ's retry logic is as follows: |
| // All builds triggered during the lifetime of a CQ attempt for a tryjob are |
| // weighted according to the failure type, as described below. The resulting |
| // weights are then added together. Call this number W. If W > single_quota, |
| // then no more builds are scheduled for that tryjob. |
| // |
| // W for every tryjob is then summed up. If that result is strictly greater |
| // than global_quota, then the CQ attempt fails, and no more builds are |
| // scheduled for the attempt. |
| type Verifiers_Tryjob_RetryConfig struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Retry quota for a single tryjob. |
| SingleQuota int32 `protobuf:"varint,1,opt,name=single_quota,json=singleQuota,proto3" json:"single_quota,omitempty"` |
| // Retry quota for all tryjobs in a CL. |
| GlobalQuota int32 `protobuf:"varint,2,opt,name=global_quota,json=globalQuota,proto3" json:"global_quota,omitempty"` |
| // The weight assigned to each tryjob failure. A failure is as a |
| // buildbucket build whose result == 'FAILURE'. |
| FailureWeight int32 `protobuf:"varint,3,opt,name=failure_weight,json=failureWeight,proto3" json:"failure_weight,omitempty"` |
| // The weight assigned to each transient failure. A transient failure is a |
| // buildbucket build which has result == 'FAILURE' and 'failure_reason' in |
| // ('BUILDBUCKET_FAILURE', 'INFRA_FAILURE'). |
| TransientFailureWeight int32 `protobuf:"varint,4,opt,name=transient_failure_weight,json=transientFailureWeight,proto3" json:"transient_failure_weight,omitempty"` |
| // The weight assigned to tryjob timeouts. A tryjob timeout is as a |
| // buildbucket build with result == 'CANCELED' and cancelation_reason == |
| // 'TIMEOUT'. |
| TimeoutWeight int32 `protobuf:"varint,5,opt,name=timeout_weight,json=timeoutWeight,proto3" json:"timeout_weight,omitempty"` |
| } |
| |
| func (x *Verifiers_Tryjob_RetryConfig) Reset() { |
| *x = Verifiers_Tryjob_RetryConfig{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[21] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_Tryjob_RetryConfig) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_Tryjob_RetryConfig) ProtoMessage() {} |
| |
| func (x *Verifiers_Tryjob_RetryConfig) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[21] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_Tryjob_RetryConfig.ProtoReflect.Descriptor instead. |
| func (*Verifiers_Tryjob_RetryConfig) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 2, 3} |
| } |
| |
| func (x *Verifiers_Tryjob_RetryConfig) GetSingleQuota() int32 { |
| if x != nil { |
| return x.SingleQuota |
| } |
| return 0 |
| } |
| |
| func (x *Verifiers_Tryjob_RetryConfig) GetGlobalQuota() int32 { |
| if x != nil { |
| return x.GlobalQuota |
| } |
| return 0 |
| } |
| |
| func (x *Verifiers_Tryjob_RetryConfig) GetFailureWeight() int32 { |
| if x != nil { |
| return x.FailureWeight |
| } |
| return 0 |
| } |
| |
| func (x *Verifiers_Tryjob_RetryConfig) GetTransientFailureWeight() int32 { |
| if x != nil { |
| return x.TransientFailureWeight |
| } |
| return 0 |
| } |
| |
| func (x *Verifiers_Tryjob_RetryConfig) GetTimeoutWeight() int32 { |
| if x != nil { |
| return x.TimeoutWeight |
| } |
| return 0 |
| } |
| |
| // Optional. Require this builder only if a file in the CL is included |
| // by location_filters. |
| // |
| // location_filters is an ordered list of LocationFilter messages, where |
| // each message includes regular expressions for the matching Gerrit |
| // host, Gerrit project and file path, as well as a boolean field to |
| // specify whether the filter is an exclude filter or not. |
| // |
| // Files "in the CL" means all files touched, i.e. added, modified or |
| // deleted. |
| // |
| // The Gerrit host, Gerrit project and file path are matched against the |
| // respective patterns in the LocationFilter. The last LocationFilter |
| // that match all patterns (host, project, and path) determines whether |
| // the file is considered included, i.e. if the last matching |
| // LocationFilter has exclude set to false, then it's included; else |
| // included. |
| // |
| // If none of the LocationFilters match, then the file is considered |
| // included if the first rule is an exclude rule; else the file is |
| // excluded. |
| // |
| // If host, project or path are empty, then they will match anything |
| // (".*") by default. The comparison is a full match; the pattern is |
| // implicitly anchored with "^" and "$", so there is no need add them. |
| // The syntax for regular expressions is Google's re2 syntax for regexp, |
| // documented here: https://github.com/google/re2/wiki/Syntax. |
| // |
| // If location_filters is non-empty, and no file in a CL is included by |
| // location_filters, then this builder will not be triggered. If |
| // location_filters is empty or not specified, then the builder will be |
| // triggered by default, subject to other conditions, e.g. |
| // mode_allowlist. |
| // |
| // This option currently can not be combined with the |
| // `GerritCQAbility.allow_submit_with_open_deps` option. |
| // If you need to combine, please talk to LUCI CV owners. |
| // (https://chromium.googlesource.com/infra/luci/luci-go/+/HEAD/cv/OWNERS) |
| // |
| // Examples: |
| // |
| // location_filters: {path_regexp: "excluded/.+", exclude: true} |
| // location_filters: {path_regexp: "excluded/exception", exclude: false} |
| // |
| // Result: files outside of the "excluded" directory will be |
| // included, and so will "excluded/exception" will, but other files |
| // in the "excluded" directory will not match. |
| // |
| // location_filters: {path_regexp: ".*", exclude: false} // include all by default |
| // location_filters: {host_regexp: "example.com", |
| // project_regexp: "repo", |
| // exclude: true} |
| // location_filters: {host_regexp: "example.com", |
| // project_regexp: "repo", |
| // path_regexp: "all/one.txt", |
| // exclude: false} |
| // |
| // Result: files in the specified host and repo will not be included, |
| // except all/one.txt which will be included; files outside of the |
| // given host/repo will be included. |
| type Verifiers_Tryjob_Builder_LocationFilter struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Pattern to match Gerrit host. Does not include scheme, which is |
| // always assumed to be "https://". |
| GerritHostRegexp string `protobuf:"bytes,1,opt,name=gerrit_host_regexp,json=gerritHostRegexp,proto3" json:"gerrit_host_regexp,omitempty"` |
| // Pattern to match Gerrit project, e.g. "infra/luci/luci-go". |
| GerritProjectRegexp string `protobuf:"bytes,2,opt,name=gerrit_project_regexp,json=gerritProjectRegexp,proto3" json:"gerrit_project_regexp,omitempty"` |
| // Pattern to match file path. This is a relative path from repo root |
| // (no starting slash). |
| PathRegexp string `protobuf:"bytes,3,opt,name=path_regexp,json=pathRegexp,proto3" json:"path_regexp,omitempty"` |
| // If exclude is true, then if this filter matches a file, the file is |
| // considered not included. (If all files are not included, then the |
| // builder is not triggered.) |
| Exclude bool `protobuf:"varint,4,opt,name=exclude,proto3" json:"exclude,omitempty"` |
| } |
| |
| func (x *Verifiers_Tryjob_Builder_LocationFilter) Reset() { |
| *x = Verifiers_Tryjob_Builder_LocationFilter{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[22] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Verifiers_Tryjob_Builder_LocationFilter) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Verifiers_Tryjob_Builder_LocationFilter) ProtoMessage() {} |
| |
| func (x *Verifiers_Tryjob_Builder_LocationFilter) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[22] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Verifiers_Tryjob_Builder_LocationFilter.ProtoReflect.Descriptor instead. |
| func (*Verifiers_Tryjob_Builder_LocationFilter) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{5, 2, 0, 0} |
| } |
| |
| func (x *Verifiers_Tryjob_Builder_LocationFilter) GetGerritHostRegexp() string { |
| if x != nil { |
| return x.GerritHostRegexp |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Tryjob_Builder_LocationFilter) GetGerritProjectRegexp() string { |
| if x != nil { |
| return x.GerritProjectRegexp |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Tryjob_Builder_LocationFilter) GetPathRegexp() string { |
| if x != nil { |
| return x.PathRegexp |
| } |
| return "" |
| } |
| |
| func (x *Verifiers_Tryjob_Builder_LocationFilter) GetExclude() bool { |
| if x != nil { |
| return x.Exclude |
| } |
| return false |
| } |
| |
| type UserLimit_Limit struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. value must be > 0, unless unlimited is set to True. |
| // |
| // Types that are assignable to Limit: |
| // |
| // *UserLimit_Limit_Value |
| // *UserLimit_Limit_Unlimited |
| Limit isUserLimit_Limit_Limit `protobuf_oneof:"limit"` |
| } |
| |
| func (x *UserLimit_Limit) Reset() { |
| *x = UserLimit_Limit{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[23] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *UserLimit_Limit) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*UserLimit_Limit) ProtoMessage() {} |
| |
| func (x *UserLimit_Limit) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[23] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use UserLimit_Limit.ProtoReflect.Descriptor instead. |
| func (*UserLimit_Limit) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{6, 0} |
| } |
| |
| func (m *UserLimit_Limit) GetLimit() isUserLimit_Limit_Limit { |
| if m != nil { |
| return m.Limit |
| } |
| return nil |
| } |
| |
| func (x *UserLimit_Limit) GetValue() int64 { |
| if x, ok := x.GetLimit().(*UserLimit_Limit_Value); ok { |
| return x.Value |
| } |
| return 0 |
| } |
| |
| func (x *UserLimit_Limit) GetUnlimited() bool { |
| if x, ok := x.GetLimit().(*UserLimit_Limit_Unlimited); ok { |
| return x.Unlimited |
| } |
| return false |
| } |
| |
| type isUserLimit_Limit_Limit interface { |
| isUserLimit_Limit_Limit() |
| } |
| |
| type UserLimit_Limit_Value struct { |
| Value int64 `protobuf:"varint,1,opt,name=value,proto3,oneof"` |
| } |
| |
| type UserLimit_Limit_Unlimited struct { |
| Unlimited bool `protobuf:"varint,2,opt,name=unlimited,proto3,oneof"` |
| } |
| |
| func (*UserLimit_Limit_Value) isUserLimit_Limit_Limit() {} |
| |
| func (*UserLimit_Limit_Unlimited) isUserLimit_Limit_Limit() {} |
| |
| type UserLimit_Run struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Maximum number of active runs that the user can have at any moment. |
| // |
| // Required. Active Run is a Run that has started but not ended yet. |
| MaxActive *UserLimit_Limit `protobuf:"bytes,1,opt,name=max_active,json=maxActive,proto3" json:"max_active,omitempty"` |
| } |
| |
| func (x *UserLimit_Run) Reset() { |
| *x = UserLimit_Run{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[24] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *UserLimit_Run) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*UserLimit_Run) ProtoMessage() {} |
| |
| func (x *UserLimit_Run) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[24] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use UserLimit_Run.ProtoReflect.Descriptor instead. |
| func (*UserLimit_Run) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{6, 1} |
| } |
| |
| func (x *UserLimit_Run) GetMaxActive() *UserLimit_Limit { |
| if x != nil { |
| return x.MaxActive |
| } |
| return nil |
| } |
| |
| type UserLimit_Tryjob struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Maximum number of active tryjobs that the user can have at any |
| // moment. |
| // |
| // Active tryjob is a tryjob that CV has successfully launched, |
| // and has not ended yet from CV's point of view. Also, optional |
| // tryjobs, which are experimental tryjobs that were not explicitly |
| // requested via the git footer, are not counted as active tryjobs. |
| // |
| // Note that counting active tryjobs and launching tryjobs are not |
| // atomic operations. So, # of active tryjobs may not match # of |
| // the successfully launched tryjobs for a short period, but will |
| // match eventually. |
| // |
| // If not specified, an unlimited number of active Tryjobs are allowed. |
| MaxActive *UserLimit_Limit `protobuf:"bytes,1,opt,name=max_active,json=maxActive,proto3" json:"max_active,omitempty"` |
| } |
| |
| func (x *UserLimit_Tryjob) Reset() { |
| *x = UserLimit_Tryjob{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[25] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *UserLimit_Tryjob) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*UserLimit_Tryjob) ProtoMessage() {} |
| |
| func (x *UserLimit_Tryjob) ProtoReflect() protoreflect.Message { |
| mi := &file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[25] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use UserLimit_Tryjob.ProtoReflect.Descriptor instead. |
| func (*UserLimit_Tryjob) Descriptor() ([]byte, []int) { |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP(), []int{6, 2} |
| } |
| |
| func (x *UserLimit_Tryjob) GetMaxActive() *UserLimit_Limit { |
| if x != nil { |
| return x.MaxActive |
| } |
| return nil |
| } |
| |
| var File_go_chromium_org_luci_cv_api_config_v2_config_proto protoreflect.FileDescriptor |
| |
| var file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDesc = []byte{ |
| 0x0a, 0x32, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, |
| 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x76, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, |
| 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, |
| 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, |
| 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, |
| 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, |
| 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, |
| 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, |
| 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, |
| 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x74, 0x69, |
| 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x2e, 0x63, 0x68, |
| 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, |
| 0x63, 0x76, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x2e, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, |
| 0x0a, 0x13, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, |
| 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, |
| 0x11, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, |
| 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0e, 0x63, 0x71, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, |
| 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, |
| 0x63, 0x71, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0e, |
| 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, |
| 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, |
| 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, |
| 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, |
| 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, |
| 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, |
| 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x63, 0x6f, |
| 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x70, 0x72, |
| 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, |
| 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x63, 0x76, 0x2e, |
| 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x42, 0x02, 0x18, |
| 0x01, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x64, |
| 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf5, 0x09, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, |
| 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, |
| 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x67, |
| 0x65, 0x72, 0x72, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x76, |
| 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, |
| 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x52, 0x06, 0x67, 0x65, 0x72, 0x72, |
| 0x69, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6c, |
| 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, |
| 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x43, 0x4c, 0x73, 0x52, 0x0a, |
| 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x09, 0x76, 0x65, |
| 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, |
| 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, |
| 0x65, 0x72, 0x73, 0x52, 0x09, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2d, |
| 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, |
| 0x32, 0x11, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x6f, 0x67, |
| 0x67, 0x6c, 0x65, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x3a, 0x0a, |
| 0x10, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, |
| 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, |
| 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, |
| 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x75, 0x73, 0x65, |
| 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, |
| 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, |
| 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, |
| 0x12, 0x42, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x64, |
| 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, |
| 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6d, |
| 0x69, 0x74, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x65, 0x66, |
| 0x61, 0x75, 0x6c, 0x74, 0x12, 0x53, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x76, 0x2e, |
| 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, |
| 0x75, 0x70, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xfa, |
| 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x6f, |
| 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc9, 0x01, 0x0a, 0x06, 0x47, 0x65, |
| 0x72, 0x72, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, |
| 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, |
| 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, |
| 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, |
| 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, |
| 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x1a, 0x6a, 0x0a, 0x07, 0x50, 0x72, 0x6f, |
| 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x5f, |
| 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, |
| 0x66, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x5f, 0x72, |
| 0x65, 0x67, 0x65, 0x78, 0x70, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, |
| 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x45, 0x78, |
| 0x63, 0x6c, 0x75, 0x64, 0x65, 0x1a, 0xa1, 0x04, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x63, |
| 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, |
| 0x65, 0x12, 0x66, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, |
| 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, |
| 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x50, 0x6f, |
| 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, |
| 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0xfa, 0x42, |
| 0x0c, 0x92, 0x01, 0x09, 0x08, 0x01, 0x22, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63, |
| 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x12, 0x76, 0x6f, 0x74, |
| 0x65, 0x5f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, |
| 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, |
| 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x50, 0x6f, |
| 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x47, 0x65, 0x72, |
| 0x72, 0x69, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x76, 0x6f, 0x74, |
| 0x65, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x72, 0x0a, |
| 0x13, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, |
| 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6d, 0x6f, 0x64, |
| 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, |
| 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x63, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x2e, |
| 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x08, 0x01, |
| 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, |
| 0x73, 0x1a, 0xa6, 0x01, 0x0a, 0x10, 0x56, 0x6f, 0x74, 0x65, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, |
| 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x57, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, |
| 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, |
| 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x50, 0x6f, |
| 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x47, 0x65, 0x72, |
| 0x72, 0x69, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x42, 0x08, |
| 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x1a, |
| 0x39, 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, |
| 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, |
| 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x06, 0x61, 0x63, |
| 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, |
| 0x68, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, |
| 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x42, 0x75, 0x72, 0x73, 0x74, 0x12, 0x3a, 0x0a, |
| 0x0b, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, |
| 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, |
| 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x62, |
| 0x75, 0x72, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, 0xe9, 0x01, 0x0a, 0x04, 0x4d, 0x6f, |
| 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, |
| 0x42, 0x26, 0xfa, 0x42, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, |
| 0x5a, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x39, 0x5f, 0x2d, |
| 0x5d, 0x7b, 0x30, 0x2c, 0x33, 0x39, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, |
| 0x0a, 0x0e, 0x63, 0x71, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, |
| 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x1a, 0x04, 0x30, 0x01, 0x30, |
| 0x02, 0x52, 0x0c, 0x63, 0x71, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, |
| 0x40, 0x0a, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, |
| 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x15, 0xfa, 0x42, 0x12, 0x72, 0x10, |
| 0x10, 0x01, 0x5a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x2d, 0x51, 0x75, 0x65, 0x75, 0x65, |
| 0x52, 0x0f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x61, 0x62, 0x65, |
| 0x6c, 0x12, 0x32, 0x0a, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, |
| 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xfa, 0x42, 0x04, |
| 0x1a, 0x02, 0x20, 0x00, 0x52, 0x0f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, |
| 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x58, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, |
| 0x43, 0x4c, 0x73, 0x12, 0x4a, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, |
| 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, |
| 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x74, 0x61, |
| 0x62, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, |
| 0xaf, 0x11, 0x0a, 0x09, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, |
| 0x11, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x5f, 0x63, 0x71, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, |
| 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, |
| 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x47, |
| 0x65, 0x72, 0x72, 0x69, 0x74, 0x43, 0x51, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0f, |
| 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x43, 0x71, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, |
| 0x40, 0x0a, 0x0b, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, |
| 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, |
| 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x53, |
| 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x74, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, |
| 0x73, 0x12, 0x33, 0x0a, 0x06, 0x74, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, |
| 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, |
| 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x52, 0x06, |
| 0x74, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x12, 0x39, 0x0a, 0x08, 0x63, 0x71, 0x6c, 0x69, 0x6e, 0x74, |
| 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, |
| 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x43, |
| 0x51, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x08, 0x63, 0x71, 0x6c, 0x69, 0x6e, 0x74, 0x65, |
| 0x72, 0x12, 0x2d, 0x0a, 0x04, 0x66, 0x61, 0x6b, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x19, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, |
| 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x52, 0x04, 0x66, 0x61, 0x6b, 0x65, |
| 0x1a, 0x81, 0x03, 0x0a, 0x0f, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x43, 0x51, 0x41, 0x62, 0x69, |
| 0x6c, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, |
| 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, |
| 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x64, |
| 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, |
| 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, |
| 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x1c, 0x6e, 0x65, |
| 0x77, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x61, |
| 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, |
| 0x52, 0x18, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x52, 0x75, 0x6e, |
| 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x1b, 0x61, 0x6c, |
| 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, |
| 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, |
| 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, |
| 0x4f, 0x70, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x73, 0x12, 0x6a, 0x0a, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, |
| 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x66, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, |
| 0x74, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x63, |
| 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, |
| 0x72, 0x73, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x43, 0x51, 0x41, 0x62, 0x69, 0x6c, 0x69, |
| 0x74, 0x79, 0x2e, 0x43, 0x51, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x61, 0x6c, 0x6c, |
| 0x6f, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x66, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, |
| 0x61, 0x62, 0x6c, 0x65, 0x22, 0x2e, 0x0a, 0x08, 0x43, 0x51, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, |
| 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, |
| 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4d, 0x4d, |
| 0x49, 0x54, 0x10, 0x02, 0x1a, 0x1e, 0x0a, 0x0a, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, |
| 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x03, 0x75, 0x72, 0x6c, 0x1a, 0xe5, 0x0a, 0x0a, 0x06, 0x54, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x12, |
| 0x3f, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, |
| 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, |
| 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x2e, 0x42, |
| 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, |
| 0x12, 0x4a, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, |
| 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, |
| 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x72, 0x79, |
| 0x6a, 0x6f, 0x62, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, |
| 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x14, |
| 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x79, |
| 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x63, 0x76, 0x2e, |
| 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x42, 0x02, 0x18, |
| 0x01, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x6c, 0x65, 0x54, 0x72, |
| 0x79, 0x6a, 0x6f, 0x62, 0x73, 0x1a, 0x80, 0x06, 0x0a, 0x07, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, |
| 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, |
| 0x6c, 0x75, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, |
| 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x6e, |
| 0x6c, 0x79, 0x12, 0x44, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x73, |
| 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, |
| 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, |
| 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x56, 0x69, |
| 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x61, |
| 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, |
| 0x0c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x75, 0x73, 0x65, 0x12, 0x34, 0x0a, |
| 0x0c, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x18, 0x0b, 0x20, |
| 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, |
| 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x74, |
| 0x61, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, |
| 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, |
| 0x28, 0x02, 0x52, 0x14, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x65, |
| 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x65, 0x71, 0x75, 0x69, |
| 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x2d, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, |
| 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x2e, 0x45, 0x71, 0x75, |
| 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0c, |
| 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x12, 0x5d, 0x0a, 0x10, |
| 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, |
| 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, |
| 0x69, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x72, 0x79, |
| 0x6a, 0x6f, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6f, |
| 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x67, |
| 0x72, 0x6f, 0x75, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x77, 0x6e, 0x65, |
| 0x72, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, |
| 0x25, 0x0a, 0x0e, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, |
| 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, |
| 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0xad, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x67, 0x65, 0x72, |
| 0x72, 0x69, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x48, 0x6f, 0x73, |
| 0x74, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x65, 0x72, 0x72, 0x69, |
| 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, |
| 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x50, 0x72, |
| 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x70, |
| 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x18, 0x0a, 0x07, |
| 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, |
| 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x0c, |
| 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x1a, 0x7b, 0x0a, 0x11, 0x45, 0x71, 0x75, 0x69, |
| 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, |
| 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, |
| 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, |
| 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, |
| 0x65, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, |
| 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x13, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, |
| 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x27, 0x0a, 0x11, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x61, |
| 0x62, 0x6c, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, |
| 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xdb, |
| 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, |
| 0x0a, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x01, |
| 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x51, 0x75, 0x6f, 0x74, |
| 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x6f, 0x74, |
| 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x51, |
| 0x75, 0x6f, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, |
| 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x61, |
| 0x69, 0x6c, 0x75, 0x72, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x74, |
| 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, |
| 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x74, |
| 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x57, |
| 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, |
| 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, |
| 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x1a, 0x0a, 0x0a, 0x08, |
| 0x43, 0x51, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x1a, 0x57, 0x0a, 0x04, 0x46, 0x61, 0x6b, 0x65, |
| 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, |
| 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, |
| 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x76, |
| 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, |
| 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, |
| 0x79, 0x22, 0xf1, 0x02, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, |
| 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, |
| 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, |
| 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, |
| 0x61, 0x6c, 0x73, 0x12, 0x2a, 0x0a, 0x03, 0x72, 0x75, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, |
| 0x32, 0x18, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, |
| 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x03, 0x72, 0x75, 0x6e, 0x12, |
| 0x33, 0x0a, 0x06, 0x74, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, |
| 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x52, 0x06, 0x74, 0x72, |
| 0x79, 0x6a, 0x6f, 0x62, 0x1a, 0x48, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, |
| 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x05, |
| 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x09, 0x75, 0x6e, 0x6c, 0x69, 0x6d, 0x69, 0x74, |
| 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x6c, 0x69, |
| 0x6d, 0x69, 0x74, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x40, |
| 0x0a, 0x03, 0x52, 0x75, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x74, |
| 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x76, 0x2e, 0x63, |
| 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, |
| 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, |
| 0x1a, 0x43, 0x0a, 0x06, 0x54, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x12, 0x39, 0x0a, 0x0a, 0x6d, 0x61, |
| 0x78, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, |
| 0x2e, 0x63, 0x76, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, |
| 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x41, |
| 0x63, 0x74, 0x69, 0x76, 0x65, 0x2a, 0x5d, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, |
| 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, |
| 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x16, |
| 0x0a, 0x12, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, |
| 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, |
| 0x54, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, |
| 0x45, 0x44, 0x10, 0x02, 0x2a, 0x24, 0x0a, 0x06, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x09, |
| 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x59, 0x45, 0x53, |
| 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4e, 0x4f, 0x10, 0x02, 0x42, 0x74, 0x5a, 0x2b, 0x67, 0x6f, |
| 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, |
| 0x63, 0x69, 0x2f, 0x63, 0x76, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, |
| 0x2f, 0x76, 0x32, 0x3b, 0x63, 0x66, 0x67, 0x70, 0x62, 0xa2, 0xfe, 0x23, 0x43, 0x0a, 0x41, 0x68, |
| 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2d, 0x63, 0x6f, 0x6e, 0x66, |
| 0x69, 0x67, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, |
| 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x3a, |
| 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x2d, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2e, 0x63, 0x66, 0x67, |
| 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, |
| } |
| |
| var ( |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescOnce sync.Once |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescData = file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDesc |
| ) |
| |
| func file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescGZIP() []byte { |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescOnce.Do(func() { |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescData) |
| }) |
| return file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDescData |
| } |
| |
| var file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes = make([]protoimpl.EnumInfo, 3) |
| var file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes = make([]protoimpl.MessageInfo, 26) |
| var file_go_chromium_org_luci_cv_api_config_v2_config_proto_goTypes = []interface{}{ |
| (CommentLevel)(0), // 0: cv.config.CommentLevel |
| (Toggle)(0), // 1: cv.config.Toggle |
| (Verifiers_GerritCQAbility_CQAction)(0), // 2: cv.config.Verifiers.GerritCQAbility.CQAction |
| (*Config)(nil), // 3: cv.config.Config |
| (*ConfigGroup)(nil), // 4: cv.config.ConfigGroup |
| (*SubmitOptions)(nil), // 5: cv.config.SubmitOptions |
| (*Mode)(nil), // 6: cv.config.Mode |
| (*CombineCLs)(nil), // 7: cv.config.CombineCLs |
| (*Verifiers)(nil), // 8: cv.config.Verifiers |
| (*UserLimit)(nil), // 9: cv.config.UserLimit |
| (*ConfigGroup_Gerrit)(nil), // 10: cv.config.ConfigGroup.Gerrit |
| (*ConfigGroup_PostAction)(nil), // 11: cv.config.ConfigGroup.PostAction |
| (*ConfigGroup_Gerrit_Project)(nil), // 12: cv.config.ConfigGroup.Gerrit.Project |
| (*ConfigGroup_PostAction_TriggeringCondition)(nil), // 13: cv.config.ConfigGroup.PostAction.TriggeringCondition |
| (*ConfigGroup_PostAction_VoteGerritLabels)(nil), // 14: cv.config.ConfigGroup.PostAction.VoteGerritLabels |
| (*ConfigGroup_PostAction_VoteGerritLabels_Vote)(nil), // 15: cv.config.ConfigGroup.PostAction.VoteGerritLabels.Vote |
| (*Verifiers_GerritCQAbility)(nil), // 16: cv.config.Verifiers.GerritCQAbility |
| (*Verifiers_TreeStatus)(nil), // 17: cv.config.Verifiers.TreeStatus |
| (*Verifiers_Tryjob)(nil), // 18: cv.config.Verifiers.Tryjob |
| (*Verifiers_CQLinter)(nil), // 19: cv.config.Verifiers.CQLinter |
| (*Verifiers_Fake)(nil), // 20: cv.config.Verifiers.Fake |
| (*Verifiers_Tryjob_Builder)(nil), // 21: cv.config.Verifiers.Tryjob.Builder |
| (*Verifiers_Tryjob_EquivalentBuilder)(nil), // 22: cv.config.Verifiers.Tryjob.EquivalentBuilder |
| (*Verifiers_Tryjob_IncludableBuilder)(nil), // 23: cv.config.Verifiers.Tryjob.IncludableBuilder |
| (*Verifiers_Tryjob_RetryConfig)(nil), // 24: cv.config.Verifiers.Tryjob.RetryConfig |
| (*Verifiers_Tryjob_Builder_LocationFilter)(nil), // 25: cv.config.Verifiers.Tryjob.Builder.LocationFilter |
| (*UserLimit_Limit)(nil), // 26: cv.config.UserLimit.Limit |
| (*UserLimit_Run)(nil), // 27: cv.config.UserLimit.Run |
| (*UserLimit_Tryjob)(nil), // 28: cv.config.UserLimit.Tryjob |
| (*durationpb.Duration)(nil), // 29: google.protobuf.Duration |
| (v1.Run_Status)(0), // 30: cv.v1.Run.Status |
| } |
| var file_go_chromium_org_luci_cv_api_config_v2_config_proto_depIdxs = []int32{ |
| 5, // 0: cv.config.Config.submit_options:type_name -> cv.config.SubmitOptions |
| 4, // 1: cv.config.Config.config_groups:type_name -> cv.config.ConfigGroup |
| 1, // 2: cv.config.Config.project_scoped_account:type_name -> cv.config.Toggle |
| 10, // 3: cv.config.ConfigGroup.gerrit:type_name -> cv.config.ConfigGroup.Gerrit |
| 7, // 4: cv.config.ConfigGroup.combine_cls:type_name -> cv.config.CombineCLs |
| 8, // 5: cv.config.ConfigGroup.verifiers:type_name -> cv.config.Verifiers |
| 1, // 6: cv.config.ConfigGroup.fallback:type_name -> cv.config.Toggle |
| 6, // 7: cv.config.ConfigGroup.additional_modes:type_name -> cv.config.Mode |
| 9, // 8: cv.config.ConfigGroup.user_limits:type_name -> cv.config.UserLimit |
| 9, // 9: cv.config.ConfigGroup.user_limit_default:type_name -> cv.config.UserLimit |
| 11, // 10: cv.config.ConfigGroup.post_actions:type_name -> cv.config.ConfigGroup.PostAction |
| 29, // 11: cv.config.SubmitOptions.burst_delay:type_name -> google.protobuf.Duration |
| 29, // 12: cv.config.CombineCLs.stabilization_delay:type_name -> google.protobuf.Duration |
| 16, // 13: cv.config.Verifiers.gerrit_cq_ability:type_name -> cv.config.Verifiers.GerritCQAbility |
| 17, // 14: cv.config.Verifiers.tree_status:type_name -> cv.config.Verifiers.TreeStatus |
| 18, // 15: cv.config.Verifiers.tryjob:type_name -> cv.config.Verifiers.Tryjob |
| 19, // 16: cv.config.Verifiers.cqlinter:type_name -> cv.config.Verifiers.CQLinter |
| 20, // 17: cv.config.Verifiers.fake:type_name -> cv.config.Verifiers.Fake |
| 27, // 18: cv.config.UserLimit.run:type_name -> cv.config.UserLimit.Run |
| 28, // 19: cv.config.UserLimit.tryjob:type_name -> cv.config.UserLimit.Tryjob |
| 12, // 20: cv.config.ConfigGroup.Gerrit.projects:type_name -> cv.config.ConfigGroup.Gerrit.Project |
| 13, // 21: cv.config.ConfigGroup.PostAction.conditions:type_name -> cv.config.ConfigGroup.PostAction.TriggeringCondition |
| 14, // 22: cv.config.ConfigGroup.PostAction.vote_gerrit_labels:type_name -> cv.config.ConfigGroup.PostAction.VoteGerritLabels |
| 30, // 23: cv.config.ConfigGroup.PostAction.TriggeringCondition.statuses:type_name -> cv.v1.Run.Status |
| 15, // 24: cv.config.ConfigGroup.PostAction.VoteGerritLabels.votes:type_name -> cv.config.ConfigGroup.PostAction.VoteGerritLabels.Vote |
| 2, // 25: cv.config.Verifiers.GerritCQAbility.allow_owner_if_submittable:type_name -> cv.config.Verifiers.GerritCQAbility.CQAction |
| 21, // 26: cv.config.Verifiers.Tryjob.builders:type_name -> cv.config.Verifiers.Tryjob.Builder |
| 24, // 27: cv.config.Verifiers.Tryjob.retry_config:type_name -> cv.config.Verifiers.Tryjob.RetryConfig |
| 1, // 28: cv.config.Verifiers.Tryjob.cancel_stale_tryjobs:type_name -> cv.config.Toggle |
| 0, // 29: cv.config.Verifiers.Tryjob.Builder.result_visibility:type_name -> cv.config.CommentLevel |
| 1, // 30: cv.config.Verifiers.Tryjob.Builder.cancel_stale:type_name -> cv.config.Toggle |
| 22, // 31: cv.config.Verifiers.Tryjob.Builder.equivalent_to:type_name -> cv.config.Verifiers.Tryjob.EquivalentBuilder |
| 25, // 32: cv.config.Verifiers.Tryjob.Builder.location_filters:type_name -> cv.config.Verifiers.Tryjob.Builder.LocationFilter |
| 26, // 33: cv.config.UserLimit.Run.max_active:type_name -> cv.config.UserLimit.Limit |
| 26, // 34: cv.config.UserLimit.Tryjob.max_active:type_name -> cv.config.UserLimit.Limit |
| 35, // [35:35] is the sub-list for method output_type |
| 35, // [35:35] is the sub-list for method input_type |
| 35, // [35:35] is the sub-list for extension type_name |
| 35, // [35:35] is the sub-list for extension extendee |
| 0, // [0:35] is the sub-list for field type_name |
| } |
| |
| func init() { file_go_chromium_org_luci_cv_api_config_v2_config_proto_init() } |
| func file_go_chromium_org_luci_cv_api_config_v2_config_proto_init() { |
| if File_go_chromium_org_luci_cv_api_config_v2_config_proto != nil { |
| return |
| } |
| if !protoimpl.UnsafeEnabled { |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Config); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ConfigGroup); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SubmitOptions); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Mode); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*CombineCLs); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*UserLimit); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ConfigGroup_Gerrit); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ConfigGroup_PostAction); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ConfigGroup_Gerrit_Project); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ConfigGroup_PostAction_TriggeringCondition); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ConfigGroup_PostAction_VoteGerritLabels); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ConfigGroup_PostAction_VoteGerritLabels_Vote); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_GerritCQAbility); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_TreeStatus); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_Tryjob); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_CQLinter); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_Fake); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_Tryjob_Builder); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_Tryjob_EquivalentBuilder); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_Tryjob_IncludableBuilder); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_Tryjob_RetryConfig); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Verifiers_Tryjob_Builder_LocationFilter); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*UserLimit_Limit); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*UserLimit_Run); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*UserLimit_Tryjob); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[8].OneofWrappers = []interface{}{ |
| (*ConfigGroup_PostAction_VoteGerritLabels_)(nil), |
| } |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes[23].OneofWrappers = []interface{}{ |
| (*UserLimit_Limit_Value)(nil), |
| (*UserLimit_Limit_Unlimited)(nil), |
| } |
| type x struct{} |
| out := protoimpl.TypeBuilder{ |
| File: protoimpl.DescBuilder{ |
| GoPackagePath: reflect.TypeOf(x{}).PkgPath(), |
| RawDescriptor: file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDesc, |
| NumEnums: 3, |
| NumMessages: 26, |
| NumExtensions: 0, |
| NumServices: 0, |
| }, |
| GoTypes: file_go_chromium_org_luci_cv_api_config_v2_config_proto_goTypes, |
| DependencyIndexes: file_go_chromium_org_luci_cv_api_config_v2_config_proto_depIdxs, |
| EnumInfos: file_go_chromium_org_luci_cv_api_config_v2_config_proto_enumTypes, |
| MessageInfos: file_go_chromium_org_luci_cv_api_config_v2_config_proto_msgTypes, |
| }.Build() |
| File_go_chromium_org_luci_cv_api_config_v2_config_proto = out.File |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_rawDesc = nil |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_goTypes = nil |
| file_go_chromium_org_luci_cv_api_config_v2_config_proto_depIdxs = nil |
| } |