// Code generated by protoc-gen-go.
// source: cq.proto
// DO NOT EDIT!

/*
Package cq is a generated protocol buffer package.

It is generated from these files:
	cq.proto

It has these top-level messages:
	Config
	Rietveld
	Gerrit
	Verifiers
*/
package cq

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

// This message describes a Commit Queue configuration. The config file cq.cfg
// should be stored in the config directory located on the branch that this CQ
// should commit to.
type Config struct {
	// Required. Version of the config format.
	Version *int32 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
	// Required. Name of the CQ. May only contain characters [a-zA-Z0-9_]. It is
	// used for various purposes, including, but not limited to match the project
	// name for CLs on Rietveld, name of the project in the status app, internal
	// name for logging etc. CQ name should not be confused with the project name
	// in LUCI as there may be multiple CQs per project.
	CqName *string `protobuf:"bytes,2,opt,name=cq_name,json=cqName" json:"cq_name,omitempty"`
	// List of verifiers that verify if the CL is ready to be committed.
	Verifiers *Verifiers `protobuf:"bytes,3,opt,name=verifiers" json:"verifiers,omitempty"`
	// URL of the CQ status app to push updates to.
	CqStatusUrl *string `protobuf:"bytes,4,opt,name=cq_status_url,json=cqStatusUrl" json:"cq_status_url,omitempty"`
	// DO NOT USE. Kept here for validator error messages.
	HideRefInCommittedMsg *bool `protobuf:"varint,5,opt,name=hide_ref_in_committed_msg,json=hideRefInCommittedMsg" json:"hide_ref_in_committed_msg,omitempty"`
	// Delay between commit bursts in seconds. Default value is 480.
	CommitBurstDelay *int32 `protobuf:"varint,6,opt,name=commit_burst_delay,json=commitBurstDelay" json:"commit_burst_delay,omitempty"`
	// Maximum number of commits done sequentially, before waiting for
	// commit_burst_delay. Default value is 4.
	MaxCommitBurst *int32 `protobuf:"varint,7,opt,name=max_commit_burst,json=maxCommitBurst" json:"max_commit_burst,omitempty"`
	// Defines whether a CQ is used in production. Allows to disable CQ for a
	// given branch. Default is true.
	InProduction *bool `protobuf:"varint,8,opt,name=in_production,json=inProduction" json:"in_production,omitempty"`
	// Configuration options for Rietveld code review.
	Rietveld *Rietveld `protobuf:"bytes,9,opt,name=rietveld" json:"rietveld,omitempty"`
	// Configuration options for Gerrit code review.
	Gerrit *Gerrit `protobuf:"bytes,15,opt,name=gerrit" json:"gerrit,omitempty"`
	// This can be used to override the Git repository URL used to checkout and
	// commit changes on CQ host. This should only be used in case, when the
	// source repository is not supported by luci-config (e.g. GitHub).
	GitRepoUrl *string `protobuf:"bytes,10,opt,name=git_repo_url,json=gitRepoUrl" json:"git_repo_url,omitempty"`
	// DO NOT USE. Kept here for validator error messages
	// and internal CQ usage (and insanity).
	// TODO(tandrii): clean insanity internally and update this message.
	TargetRef *string `protobuf:"bytes,11,opt,name=target_ref,json=targetRef" json:"target_ref,omitempty"`
	// DO NOT USE. Kept here for validator error messages.
	SvnRepoUrl *string `protobuf:"bytes,12,opt,name=svn_repo_url,json=svnRepoUrl" json:"svn_repo_url,omitempty"`
	// If present, the CQ will refrain from processing any commits whose start
	// time is >= this time.
	//
	// This is an UTC RFC3339 (stiptime(tm)) string representing the time.
	// For example, "2017-12-23T15:47:58Z" and Z is required.
	DrainingStartTime *string `protobuf:"bytes,13,opt,name=draining_start_time,json=drainingStartTime" json:"draining_start_time,omitempty"`
	XXX_unrecognized  []byte  `json:"-"`
}

func (m *Config) Reset()                    { *m = Config{} }
func (m *Config) String() string            { return proto.CompactTextString(m) }
func (*Config) ProtoMessage()               {}
func (*Config) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

func (m *Config) GetVersion() int32 {
	if m != nil && m.Version != nil {
		return *m.Version
	}
	return 0
}

func (m *Config) GetCqName() string {
	if m != nil && m.CqName != nil {
		return *m.CqName
	}
	return ""
}

func (m *Config) GetVerifiers() *Verifiers {
	if m != nil {
		return m.Verifiers
	}
	return nil
}

func (m *Config) GetCqStatusUrl() string {
	if m != nil && m.CqStatusUrl != nil {
		return *m.CqStatusUrl
	}
	return ""
}

func (m *Config) GetHideRefInCommittedMsg() bool {
	if m != nil && m.HideRefInCommittedMsg != nil {
		return *m.HideRefInCommittedMsg
	}
	return false
}

func (m *Config) GetCommitBurstDelay() int32 {
	if m != nil && m.CommitBurstDelay != nil {
		return *m.CommitBurstDelay
	}
	return 0
}

func (m *Config) GetMaxCommitBurst() int32 {
	if m != nil && m.MaxCommitBurst != nil {
		return *m.MaxCommitBurst
	}
	return 0
}

func (m *Config) GetInProduction() bool {
	if m != nil && m.InProduction != nil {
		return *m.InProduction
	}
	return false
}

func (m *Config) GetRietveld() *Rietveld {
	if m != nil {
		return m.Rietveld
	}
	return nil
}

func (m *Config) GetGerrit() *Gerrit {
	if m != nil {
		return m.Gerrit
	}
	return nil
}

func (m *Config) GetGitRepoUrl() string {
	if m != nil && m.GitRepoUrl != nil {
		return *m.GitRepoUrl
	}
	return ""
}

func (m *Config) GetTargetRef() string {
	if m != nil && m.TargetRef != nil {
		return *m.TargetRef
	}
	return ""
}

func (m *Config) GetSvnRepoUrl() string {
	if m != nil && m.SvnRepoUrl != nil {
		return *m.SvnRepoUrl
	}
	return ""
}

func (m *Config) GetDrainingStartTime() string {
	if m != nil && m.DrainingStartTime != nil {
		return *m.DrainingStartTime
	}
	return ""
}

type Rietveld struct {
	// Required. URL of the codereview site.
	Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
	// DO NOT USE. Kept here for validator error messages.
	ProjectBases     []string `protobuf:"bytes,2,rep,name=project_bases,json=projectBases" json:"project_bases,omitempty"`
	XXX_unrecognized []byte   `json:"-"`
}

func (m *Rietveld) Reset()                    { *m = Rietveld{} }
func (m *Rietveld) String() string            { return proto.CompactTextString(m) }
func (*Rietveld) ProtoMessage()               {}
func (*Rietveld) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

func (m *Rietveld) GetUrl() string {
	if m != nil && m.Url != nil {
		return *m.Url
	}
	return ""
}

func (m *Rietveld) GetProjectBases() []string {
	if m != nil {
		return m.ProjectBases
	}
	return nil
}

// Unlike Rietveld, Gerrit doesn't need a separate url.
// Instead, the git_repo_url must be specified on the Gerrit instance,
// and CQ will deduce Gerrit url from it.
// Also, gerrit_cq_ability verifier must be defined in case of Gerrit.
//
// For example, if https://chromium.googlesource.com/infra/infra.git is your
// repo url provided in `git_repo_url` above, then
// https://chromium-review.googlesource.com/#/admin/projects/infra/infra should
// show general properties of your project.
//
// Also,
// https://chromium-review.googlesource.com/#/admin/projects/infra/infra,access
// should show ACLs for refs in your project, but you may need to be admin to
// see it. This will come handy to enable and customize the CQ-related workflows
// for your project.
type Gerrit struct {
	// Optional. If set, tells CQ to vote on a given label to mark result of CQ
	// run.  The vote is either -1 if failed or 1 on success, and will be given on
	// non-dry runs only.
	// This vote can then be used in Gerrit's rule for submitting issues, so as to
	// require CQ run. CQ will attempt to submit issue only after setting this
	// label.
	CqVerifiedLabel *string `protobuf:"bytes,1,opt,name=cq_verified_label,json=cqVerifiedLabel" json:"cq_verified_label,omitempty"`
	// Optional and only allowed if cq_verified_label is set. Default: False.
	// If set, tells CQ to vote on the Verified label even on dry run.
	// This is useful if CQ has no presubmit builders, as dry run would be
	// totally equivalent to full run, except that CQ won't try to actually submit
	// the code.
	DryRunSetsCqVerifiedLabel *bool  `protobuf:"varint,2,opt,name=dry_run_sets_cq_verified_label,json=dryRunSetsCqVerifiedLabel" json:"dry_run_sets_cq_verified_label,omitempty"`
	XXX_unrecognized          []byte `json:"-"`
}

func (m *Gerrit) Reset()                    { *m = Gerrit{} }
func (m *Gerrit) String() string            { return proto.CompactTextString(m) }
func (*Gerrit) ProtoMessage()               {}
func (*Gerrit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

func (m *Gerrit) GetCqVerifiedLabel() string {
	if m != nil && m.CqVerifiedLabel != nil {
		return *m.CqVerifiedLabel
	}
	return ""
}

func (m *Gerrit) GetDryRunSetsCqVerifiedLabel() bool {
	if m != nil && m.DryRunSetsCqVerifiedLabel != nil {
		return *m.DryRunSetsCqVerifiedLabel
	}
	return false
}

// 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 landed. Configuration file
// describes types of verifiers that should be applied to each CL and their
// parameters.
type Verifiers struct {
	// [Rietveld only] This verifier is used to ensure that an LGTM was posted to
	// the code review site from a valid project committer. It also validates
	// ability of non-committers to trigger CQ, which for Gerrit is done by
	// GerritCQAbilityVerifier.
	ReviewerLgtm *Verifiers_ReviewerLgtmVerifier `protobuf:"bytes,1,opt,name=reviewer_lgtm,json=reviewerLgtm" json:"reviewer_lgtm,omitempty"`
	// [Gerrit only] GerritCQAbilityVerifier ensures that a user who triggered
	// this CQ attempt has actually 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.
	// This verifier must be specified for Gerrit.
	GerritCqAbility *Verifiers_GerritCQAbilityVerifier `protobuf:"bytes,5,opt,name=gerrit_cq_ability,json=gerritCqAbility" 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_TreeStatusLgtmVerifier `protobuf:"bytes,2,opt,name=tree_status,json=treeStatus" json:"tree_status,omitempty"`
	// This verifier triggers a set of tryjobs that are to be run on builders on
	// Buildbot. It automatically retries failed try-jobs 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.
	TryJob *Verifiers_TryJobVerifier `protobuf:"bytes,3,opt,name=try_job,json=tryJob" json:"try_job,omitempty"`
	// This verifier is used to ensure that the author has signed Google's
	// Contributor License Agreement.
	SignCla          *Verifiers_SignCLAVerifier `protobuf:"bytes,4,opt,name=sign_cla,json=signCla" json:"sign_cla,omitempty"`
	XXX_unrecognized []byte                     `json:"-"`
}

func (m *Verifiers) Reset()                    { *m = Verifiers{} }
func (m *Verifiers) String() string            { return proto.CompactTextString(m) }
func (*Verifiers) ProtoMessage()               {}
func (*Verifiers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

func (m *Verifiers) GetReviewerLgtm() *Verifiers_ReviewerLgtmVerifier {
	if m != nil {
		return m.ReviewerLgtm
	}
	return nil
}

func (m *Verifiers) GetGerritCqAbility() *Verifiers_GerritCQAbilityVerifier {
	if m != nil {
		return m.GerritCqAbility
	}
	return nil
}

func (m *Verifiers) GetTreeStatus() *Verifiers_TreeStatusLgtmVerifier {
	if m != nil {
		return m.TreeStatus
	}
	return nil
}

func (m *Verifiers) GetTryJob() *Verifiers_TryJobVerifier {
	if m != nil {
		return m.TryJob
	}
	return nil
}

func (m *Verifiers) GetSignCla() *Verifiers_SignCLAVerifier {
	if m != nil {
		return m.SignCla
	}
	return nil
}

type Verifiers_ReviewerLgtmVerifier struct {
	// Required. Name of the chrome-infra-auth group, which contains the list of
	// identities authorized to approve (lgtm) a CL and trigger CQ run or dry
	// run.
	CommitterList *string `protobuf:"bytes,1,opt,name=committer_list,json=committerList" json:"committer_list,omitempty"`
	// Number of seconds to wait for LGTM on CQ. Default value is 0.
	MaxWaitSecs *int32 `protobuf:"varint,2,opt,name=max_wait_secs,json=maxWaitSecs" json:"max_wait_secs,omitempty"`
	// Message to be posted to code review site when no LGTM is found. Default
	// value is "No LGTM from a valid reviewer yet. Only full committers are "
	// "accepted.\nEven if an LGTM may have been provided, it was from a "
	// "non-committer,\n_not_ a full super star committer.\nSee "
	// "http://www.chromium.org/getting-involved/become-a-committer\nNote that "
	// "this has nothing to do with OWNERS files."
	NoLgtmMsg *string `protobuf:"bytes,3,opt,name=no_lgtm_msg,json=noLgtmMsg" json:"no_lgtm_msg,omitempty"`
	// Optional, but recommended. Name of the chrome-infra-auth group,
	// which contains the list of identities authorized to trigger CQ dry run.
	// This is usually the same group as tryjob-access.
	DryRunAccessList *string `protobuf:"bytes,4,opt,name=dry_run_access_list,json=dryRunAccessList" json:"dry_run_access_list,omitempty"`
	XXX_unrecognized []byte  `json:"-"`
}

func (m *Verifiers_ReviewerLgtmVerifier) Reset()         { *m = Verifiers_ReviewerLgtmVerifier{} }
func (m *Verifiers_ReviewerLgtmVerifier) String() string { return proto.CompactTextString(m) }
func (*Verifiers_ReviewerLgtmVerifier) ProtoMessage()    {}
func (*Verifiers_ReviewerLgtmVerifier) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{3, 0}
}

func (m *Verifiers_ReviewerLgtmVerifier) GetCommitterList() string {
	if m != nil && m.CommitterList != nil {
		return *m.CommitterList
	}
	return ""
}

func (m *Verifiers_ReviewerLgtmVerifier) GetMaxWaitSecs() int32 {
	if m != nil && m.MaxWaitSecs != nil {
		return *m.MaxWaitSecs
	}
	return 0
}

func (m *Verifiers_ReviewerLgtmVerifier) GetNoLgtmMsg() string {
	if m != nil && m.NoLgtmMsg != nil {
		return *m.NoLgtmMsg
	}
	return ""
}

func (m *Verifiers_ReviewerLgtmVerifier) GetDryRunAccessList() string {
	if m != nil && m.DryRunAccessList != nil {
		return *m.DryRunAccessList
	}
	return ""
}

type Verifiers_GerritCQAbilityVerifier struct {
	// Required. Name of the chrome-infra-auth group, which contains the list of
	// identities authorized to trigger CQ runs on any CLs in this project.
	CommitterList *string `protobuf:"bytes,1,opt,name=committer_list,json=committerList" json:"committer_list,omitempty"`
	// Optional, but strongly recommended. Name of the chrome-infra-auth group,
	// which contains the list of identities 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.
	// This is usually the same group as tryjob-access.
	DryRunAccessList *string `protobuf:"bytes,4,opt,name=dry_run_access_list,json=dryRunAccessList" json:"dry_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. In turn, if Gerrit project config allows this, Gerrit will
	// execute submit all dependent CLs first and then this CL.
	AllowSubmitWithOpenDeps *bool  `protobuf:"varint,5,opt,name=allow_submit_with_open_deps,json=allowSubmitWithOpenDeps" json:"allow_submit_with_open_deps,omitempty"`
	XXX_unrecognized        []byte `json:"-"`
}

func (m *Verifiers_GerritCQAbilityVerifier) Reset()         { *m = Verifiers_GerritCQAbilityVerifier{} }
func (m *Verifiers_GerritCQAbilityVerifier) String() string { return proto.CompactTextString(m) }
func (*Verifiers_GerritCQAbilityVerifier) ProtoMessage()    {}
func (*Verifiers_GerritCQAbilityVerifier) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{3, 1}
}

func (m *Verifiers_GerritCQAbilityVerifier) GetCommitterList() string {
	if m != nil && m.CommitterList != nil {
		return *m.CommitterList
	}
	return ""
}

func (m *Verifiers_GerritCQAbilityVerifier) GetDryRunAccessList() string {
	if m != nil && m.DryRunAccessList != nil {
		return *m.DryRunAccessList
	}
	return ""
}

func (m *Verifiers_GerritCQAbilityVerifier) GetAllowSubmitWithOpenDeps() bool {
	if m != nil && m.AllowSubmitWithOpenDeps != nil {
		return *m.AllowSubmitWithOpenDeps
	}
	return false
}

type Verifiers_TreeStatusLgtmVerifier struct {
	// Required. URL of the project tree status app.
	TreeStatusUrl    *string `protobuf:"bytes,1,opt,name=tree_status_url,json=treeStatusUrl" json:"tree_status_url,omitempty"`
	XXX_unrecognized []byte  `json:"-"`
}

func (m *Verifiers_TreeStatusLgtmVerifier) Reset()         { *m = Verifiers_TreeStatusLgtmVerifier{} }
func (m *Verifiers_TreeStatusLgtmVerifier) String() string { return proto.CompactTextString(m) }
func (*Verifiers_TreeStatusLgtmVerifier) ProtoMessage()    {}
func (*Verifiers_TreeStatusLgtmVerifier) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{3, 2}
}

func (m *Verifiers_TreeStatusLgtmVerifier) GetTreeStatusUrl() string {
	if m != nil && m.TreeStatusUrl != nil {
		return *m.TreeStatusUrl
	}
	return ""
}

type Verifiers_TryJobVerifier struct {
	// Buckets on which tryjobs are triggered/watched.
	Buckets []*Verifiers_TryJobVerifier_Bucket `protobuf:"bytes,1,rep,name=buckets" json:"buckets,omitempty"`
	// Provides project specific trybot retry configuration. This overrides the
	// defaults used in the CQ.
	TryJobRetryConfig *Verifiers_TryJobVerifier_TryJobRetryConfig `protobuf:"bytes,2,opt,name=try_job_retry_config,json=tryJobRetryConfig" json:"try_job_retry_config,omitempty"`
	XXX_unrecognized  []byte                                      `json:"-"`
}

func (m *Verifiers_TryJobVerifier) Reset()                    { *m = Verifiers_TryJobVerifier{} }
func (m *Verifiers_TryJobVerifier) String() string            { return proto.CompactTextString(m) }
func (*Verifiers_TryJobVerifier) ProtoMessage()               {}
func (*Verifiers_TryJobVerifier) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 3} }

func (m *Verifiers_TryJobVerifier) GetBuckets() []*Verifiers_TryJobVerifier_Bucket {
	if m != nil {
		return m.Buckets
	}
	return nil
}

func (m *Verifiers_TryJobVerifier) GetTryJobRetryConfig() *Verifiers_TryJobVerifier_TryJobRetryConfig {
	if m != nil {
		return m.TryJobRetryConfig
	}
	return nil
}

type Verifiers_TryJobVerifier_EquivalentBuilder struct {
	// Required. Bucket name of this builder.
	Bucket *string `protobuf:"bytes,1,opt,name=bucket" json:"bucket,omitempty"`
	// Required. Name of this builder.
	Builder *string `protobuf:"bytes,2,opt,name=builder" json:"builder,omitempty"`
	// Percentage expressing probability of CQ requiring this builder
	// instead of the builder to which this builder is equilvanet to.
	//
	// If not specified, defaults to 50.
	//
	// A choice itself is made deterministicly based on CL alone, hereby
	// all CQ attempts on all patchsets of a given CL will require 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
	// two builders will be made only for CLs owned by whitelisted group.
	//
	// To illustrate, suppose percentage=10. Then,
	//   Without owner_whitelist_group,
	//      ~10% of all CQ attempts will choose 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 choose this builder.
	Percentage *int32 `protobuf:"varint,3,opt,name=percentage" json:"percentage,omitempty"`
	// If not specified, limits the builder to CL owners in this group.
	OwnerWhitelistGroup *string `protobuf:"bytes,4,opt,name=owner_whitelist_group,json=ownerWhitelistGroup" json:"owner_whitelist_group,omitempty"`
	XXX_unrecognized    []byte  `json:"-"`
}

func (m *Verifiers_TryJobVerifier_EquivalentBuilder) Reset() {
	*m = Verifiers_TryJobVerifier_EquivalentBuilder{}
}
func (m *Verifiers_TryJobVerifier_EquivalentBuilder) String() string {
	return proto.CompactTextString(m)
}
func (*Verifiers_TryJobVerifier_EquivalentBuilder) ProtoMessage() {}
func (*Verifiers_TryJobVerifier_EquivalentBuilder) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{3, 3, 0}
}

func (m *Verifiers_TryJobVerifier_EquivalentBuilder) GetBucket() string {
	if m != nil && m.Bucket != nil {
		return *m.Bucket
	}
	return ""
}

func (m *Verifiers_TryJobVerifier_EquivalentBuilder) GetBuilder() string {
	if m != nil && m.Builder != nil {
		return *m.Builder
	}
	return ""
}

func (m *Verifiers_TryJobVerifier_EquivalentBuilder) GetPercentage() int32 {
	if m != nil && m.Percentage != nil {
		return *m.Percentage
	}
	return 0
}

func (m *Verifiers_TryJobVerifier_EquivalentBuilder) GetOwnerWhitelistGroup() string {
	if m != nil && m.OwnerWhitelistGroup != nil {
		return *m.OwnerWhitelistGroup
	}
	return ""
}

type Verifiers_TryJobVerifier_Builder struct {
	// Name of the builder.
	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// Optionally specify a builder name that triggers the given builder.
	// Otherwise, CQ will trigger this builder (default). If in doubt, you
	// probably won't need this.
	TriggeredBy *string `protobuf:"bytes,2,opt,name=triggered_by,json=triggeredBy" json:"triggered_by,omitempty"`
	// When this field is present, it marks given builder as experimental. It
	// is only executed on a given percentage of the CLs and the outcome does
	// not affect the decicion whether a CL can land or not. This is typically
	// used to test new builders and estimate their capacity requirements.
	ExperimentPercentage *float32 `protobuf:"fixed32,4,opt,name=experiment_percentage,json=experimentPercentage" 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 try jobs.
	//
	// Note: none of the equivalent builders should be part of triggered_by
	//  chain, although CQ may eventually relax this requirement somewhat.
	EquivalentTo     *Verifiers_TryJobVerifier_EquivalentBuilder `protobuf:"bytes,5,opt,name=equivalent_to,json=equivalentTo" json:"equivalent_to,omitempty"`
	XXX_unrecognized []byte                                      `json:"-"`
}

func (m *Verifiers_TryJobVerifier_Builder) Reset()         { *m = Verifiers_TryJobVerifier_Builder{} }
func (m *Verifiers_TryJobVerifier_Builder) String() string { return proto.CompactTextString(m) }
func (*Verifiers_TryJobVerifier_Builder) ProtoMessage()    {}
func (*Verifiers_TryJobVerifier_Builder) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{3, 3, 1}
}

func (m *Verifiers_TryJobVerifier_Builder) GetName() string {
	if m != nil && m.Name != nil {
		return *m.Name
	}
	return ""
}

func (m *Verifiers_TryJobVerifier_Builder) GetTriggeredBy() string {
	if m != nil && m.TriggeredBy != nil {
		return *m.TriggeredBy
	}
	return ""
}

func (m *Verifiers_TryJobVerifier_Builder) GetExperimentPercentage() float32 {
	if m != nil && m.ExperimentPercentage != nil {
		return *m.ExperimentPercentage
	}
	return 0
}

func (m *Verifiers_TryJobVerifier_Builder) GetEquivalentTo() *Verifiers_TryJobVerifier_EquivalentBuilder {
	if m != nil {
		return m.EquivalentTo
	}
	return nil
}

type Verifiers_TryJobVerifier_Bucket struct {
	// Name of the bucket. This is typically the same as a master name without
	// the 'master.' prefix, e.g. 'chromium.linux' or 'tryserver.webrtc'. CQ
	// will automatically add 'master.' prefix if not there.
	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// Builders on which tryjobs should be triggered.
	Builders         []*Verifiers_TryJobVerifier_Builder `protobuf:"bytes,2,rep,name=builders" json:"builders,omitempty"`
	XXX_unrecognized []byte                              `json:"-"`
}

func (m *Verifiers_TryJobVerifier_Bucket) Reset()         { *m = Verifiers_TryJobVerifier_Bucket{} }
func (m *Verifiers_TryJobVerifier_Bucket) String() string { return proto.CompactTextString(m) }
func (*Verifiers_TryJobVerifier_Bucket) ProtoMessage()    {}
func (*Verifiers_TryJobVerifier_Bucket) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{3, 3, 2}
}

func (m *Verifiers_TryJobVerifier_Bucket) GetName() string {
	if m != nil && m.Name != nil {
		return *m.Name
	}
	return ""
}

func (m *Verifiers_TryJobVerifier_Bucket) GetBuilders() []*Verifiers_TryJobVerifier_Builder {
	if m != nil {
		return m.Builders
	}
	return nil
}

type Verifiers_TryJobVerifier_TryJobRetryConfig struct {
	// Retry quota for a single tryjob.
	TryJobRetryQuota *int32 `protobuf:"varint,1,opt,name=try_job_retry_quota,json=tryJobRetryQuota" json:"try_job_retry_quota,omitempty"`
	// Retry quota for all tryjobs in a CL.
	GlobalRetryQuota *int32 `protobuf:"varint,2,opt,name=global_retry_quota,json=globalRetryQuota" json:"global_retry_quota,omitempty"`
	// The weight assigned to each tryjob failure.
	FailureRetryWeight *int32 `protobuf:"varint,3,opt,name=failure_retry_weight,json=failureRetryWeight" json:"failure_retry_weight,omitempty"`
	// The weight assigned to each transient failure.
	TransientFailureRetryWeight *int32 `protobuf:"varint,4,opt,name=transient_failure_retry_weight,json=transientFailureRetryWeight" json:"transient_failure_retry_weight,omitempty"`
	// The weight assigned to tryjob timeouts.
	TimeoutRetryWeight *int32 `protobuf:"varint,5,opt,name=timeout_retry_weight,json=timeoutRetryWeight" json:"timeout_retry_weight,omitempty"`
	XXX_unrecognized   []byte `json:"-"`
}

func (m *Verifiers_TryJobVerifier_TryJobRetryConfig) Reset() {
	*m = Verifiers_TryJobVerifier_TryJobRetryConfig{}
}
func (m *Verifiers_TryJobVerifier_TryJobRetryConfig) String() string {
	return proto.CompactTextString(m)
}
func (*Verifiers_TryJobVerifier_TryJobRetryConfig) ProtoMessage() {}
func (*Verifiers_TryJobVerifier_TryJobRetryConfig) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{3, 3, 3}
}

func (m *Verifiers_TryJobVerifier_TryJobRetryConfig) GetTryJobRetryQuota() int32 {
	if m != nil && m.TryJobRetryQuota != nil {
		return *m.TryJobRetryQuota
	}
	return 0
}

func (m *Verifiers_TryJobVerifier_TryJobRetryConfig) GetGlobalRetryQuota() int32 {
	if m != nil && m.GlobalRetryQuota != nil {
		return *m.GlobalRetryQuota
	}
	return 0
}

func (m *Verifiers_TryJobVerifier_TryJobRetryConfig) GetFailureRetryWeight() int32 {
	if m != nil && m.FailureRetryWeight != nil {
		return *m.FailureRetryWeight
	}
	return 0
}

func (m *Verifiers_TryJobVerifier_TryJobRetryConfig) GetTransientFailureRetryWeight() int32 {
	if m != nil && m.TransientFailureRetryWeight != nil {
		return *m.TransientFailureRetryWeight
	}
	return 0
}

func (m *Verifiers_TryJobVerifier_TryJobRetryConfig) GetTimeoutRetryWeight() int32 {
	if m != nil && m.TimeoutRetryWeight != nil {
		return *m.TimeoutRetryWeight
	}
	return 0
}

type Verifiers_SignCLAVerifier struct {
	XXX_unrecognized []byte `json:"-"`
}

func (m *Verifiers_SignCLAVerifier) Reset()                    { *m = Verifiers_SignCLAVerifier{} }
func (m *Verifiers_SignCLAVerifier) String() string            { return proto.CompactTextString(m) }
func (*Verifiers_SignCLAVerifier) ProtoMessage()               {}
func (*Verifiers_SignCLAVerifier) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 4} }

func init() {
	proto.RegisterType((*Config)(nil), "Config")
	proto.RegisterType((*Rietveld)(nil), "Rietveld")
	proto.RegisterType((*Gerrit)(nil), "Gerrit")
	proto.RegisterType((*Verifiers)(nil), "Verifiers")
	proto.RegisterType((*Verifiers_ReviewerLgtmVerifier)(nil), "Verifiers.ReviewerLgtmVerifier")
	proto.RegisterType((*Verifiers_GerritCQAbilityVerifier)(nil), "Verifiers.GerritCQAbilityVerifier")
	proto.RegisterType((*Verifiers_TreeStatusLgtmVerifier)(nil), "Verifiers.TreeStatusLgtmVerifier")
	proto.RegisterType((*Verifiers_TryJobVerifier)(nil), "Verifiers.TryJobVerifier")
	proto.RegisterType((*Verifiers_TryJobVerifier_EquivalentBuilder)(nil), "Verifiers.TryJobVerifier.EquivalentBuilder")
	proto.RegisterType((*Verifiers_TryJobVerifier_Builder)(nil), "Verifiers.TryJobVerifier.Builder")
	proto.RegisterType((*Verifiers_TryJobVerifier_Bucket)(nil), "Verifiers.TryJobVerifier.Bucket")
	proto.RegisterType((*Verifiers_TryJobVerifier_TryJobRetryConfig)(nil), "Verifiers.TryJobVerifier.TryJobRetryConfig")
	proto.RegisterType((*Verifiers_SignCLAVerifier)(nil), "Verifiers.SignCLAVerifier")
}

func init() { proto.RegisterFile("cq.proto", fileDescriptor0) }

var fileDescriptor0 = []byte{
	// 1147 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xdb, 0x8e, 0x1b, 0x45,
	0x10, 0x95, 0xf7, 0xe2, 0x4b, 0xd9, 0xce, 0xae, 0x3b, 0x9b, 0x64, 0xe2, 0x48, 0x1b, 0x67, 0x21,
	0xc8, 0xe2, 0x62, 0x45, 0x46, 0xbc, 0xa0, 0x20, 0xb1, 0x76, 0x20, 0x02, 0x2d, 0x21, 0x19, 0x27,
	0xec, 0x03, 0x48, 0xad, 0xf1, 0x4c, 0x79, 0xb6, 0xc3, 0xdc, 0xdc, 0xdd, 0x63, 0xaf, 0x3f, 0x81,
	0x77, 0x5e, 0xf2, 0x05, 0x3c, 0x21, 0xf1, 0x17, 0xfc, 0x16, 0xea, 0xcb, 0x8c, 0xed, 0xdd, 0x0d,
	0x82, 0xb7, 0xe9, 0x73, 0x4e, 0x55, 0x75, 0x57, 0x55, 0x57, 0x0f, 0xd4, 0xfd, 0xf9, 0x20, 0xe3,
	0xa9, 0x4c, 0x4f, 0xfe, 0xd8, 0x83, 0xea, 0x38, 0x4d, 0x66, 0x2c, 0x24, 0x0e, 0xd4, 0x16, 0xc8,
	0x05, 0x4b, 0x13, 0xa7, 0xd2, 0xab, 0xf4, 0xf7, 0xdd, 0x62, 0x49, 0xee, 0x41, 0xcd, 0x9f, 0xd3,
	0xc4, 0x8b, 0xd1, 0xd9, 0xe9, 0x55, 0xfa, 0x0d, 0xb7, 0xea, 0xcf, 0x5f, 0x78, 0x31, 0x92, 0x3e,
	0x34, 0x16, 0xc8, 0xd9, 0x8c, 0x21, 0x17, 0xce, 0x6e, 0xaf, 0xd2, 0x6f, 0x0e, 0x61, 0xf0, 0x53,
	0x81, 0xb8, 0x6b, 0x92, 0x9c, 0x40, 0xdb, 0x9f, 0x53, 0x21, 0x3d, 0x99, 0x0b, 0x9a, 0xf3, 0xc8,
	0xd9, 0xd3, 0x8e, 0x9a, 0xfe, 0x7c, 0xa2, 0xb1, 0x37, 0x3c, 0x22, 0x4f, 0xe1, 0xfe, 0x05, 0x0b,
	0x90, 0x72, 0x9c, 0x51, 0x96, 0x50, 0x3f, 0x8d, 0x63, 0x26, 0x25, 0x06, 0x34, 0x16, 0xa1, 0xb3,
	0xdf, 0xab, 0xf4, 0xeb, 0xa3, 0x1d, 0xa7, 0xe2, 0xde, 0x51, 0x22, 0x17, 0x67, 0xdf, 0x25, 0xe3,
	0x42, 0xf1, 0x83, 0x08, 0xc9, 0xa7, 0x40, 0x8c, 0x05, 0x9d, 0xe6, 0x5c, 0x48, 0x1a, 0x60, 0xe4,
	0xad, 0x9c, 0xaa, 0x3e, 0xc9, 0xa1, 0x61, 0x46, 0x8a, 0x78, 0xa6, 0x70, 0xd2, 0x87, 0xc3, 0xd8,
	0xbb, 0xa4, 0x9b, 0x16, 0x4e, 0x4d, 0x6b, 0x6f, 0xc5, 0xde, 0xe5, 0x78, 0x2d, 0x27, 0x1f, 0x40,
	0x9b, 0x25, 0x34, 0xe3, 0x69, 0x90, 0xfb, 0x52, 0x25, 0xa7, 0xae, 0x76, 0xe2, 0xb6, 0x58, 0xf2,
	0xb2, 0xc4, 0xc8, 0x63, 0xa8, 0x73, 0x86, 0x72, 0x81, 0x51, 0xe0, 0x34, 0x74, 0x1e, 0x1a, 0x03,
	0xd7, 0x02, 0x6e, 0x49, 0x91, 0x87, 0x50, 0x0d, 0x91, 0x73, 0x26, 0x9d, 0x03, 0x2d, 0xaa, 0x0d,
	0x9e, 0xeb, 0xa5, 0x6b, 0x61, 0xd2, 0x83, 0x56, 0xc8, 0x24, 0xe5, 0x98, 0xa5, 0x3a, 0x4b, 0xa0,
	0xb3, 0x04, 0x21, 0x93, 0x2e, 0x66, 0xa9, 0x4a, 0xd2, 0x23, 0x00, 0xe9, 0xf1, 0x10, 0x95, 0x68,
	0xe6, 0x34, 0x15, 0xaf, 0xb3, 0xd2, 0x30, 0xa8, 0x8b, 0x33, 0xf2, 0x21, 0xb4, 0xc4, 0x22, 0x59,
	0x3b, 0x69, 0x95, 0x22, 0x10, 0x8b, 0xa4, 0x70, 0x34, 0x80, 0xdb, 0x01, 0xf7, 0x58, 0xc2, 0x92,
	0x50, 0xd5, 0x85, 0x4b, 0x2a, 0x59, 0x8c, 0x4e, 0x5b, 0x47, 0xec, 0x14, 0xd4, 0x44, 0x31, 0xaf,
	0x59, 0x8c, 0x27, 0xa7, 0x50, 0x2f, 0x4e, 0x44, 0x0e, 0x61, 0x57, 0x39, 0xae, 0x68, 0xad, 0xfa,
	0x54, 0x59, 0xca, 0x78, 0xfa, 0x16, 0x7d, 0x49, 0xa7, 0x9e, 0x40, 0xe1, 0xec, 0xf4, 0x76, 0xfb,
	0x0d, 0xb7, 0x65, 0xc1, 0x91, 0xc2, 0x4e, 0x96, 0x50, 0x35, 0xe7, 0x25, 0x1f, 0x43, 0xc7, 0x9f,
	0x53, 0xdb, 0x1e, 0x01, 0x8d, 0xbc, 0x29, 0x16, 0xee, 0x0e, 0xfc, 0xb9, 0xed, 0xa0, 0xe0, 0x4c,
	0xc1, 0xe4, 0x14, 0x8e, 0x03, 0xbe, 0xa2, 0x3c, 0x4f, 0xa8, 0x40, 0x29, 0xe8, 0x75, 0xc3, 0x1d,
	0x5d, 0x91, 0xfb, 0x01, 0x5f, 0xb9, 0x79, 0x32, 0x41, 0x29, 0xc6, 0xdb, 0x2e, 0x4e, 0x7e, 0x6f,
	0x43, 0xa3, 0x6c, 0x4b, 0xf2, 0x0c, 0xda, 0x1c, 0x17, 0x0c, 0x97, 0xc8, 0x69, 0x14, 0xca, 0x58,
	0x07, 0x6e, 0x0e, 0x1f, 0xae, 0x3b, 0x77, 0xe0, 0x5a, 0xfe, 0x2c, 0x94, 0x71, 0x81, 0xba, 0x2d,
	0xbe, 0x81, 0x92, 0x17, 0xd0, 0x31, 0x45, 0x53, 0x1b, 0xf2, 0xa6, 0x2c, 0x62, 0x72, 0xa5, 0xbb,
	0xb4, 0x39, 0x3c, 0xd9, 0xf0, 0x64, 0x0e, 0x3c, 0x7e, 0x75, 0x6a, 0x14, 0xa5, 0xb3, 0x03, 0x63,
	0x3c, 0x9e, 0x5b, 0x82, 0x8c, 0xa0, 0x29, 0x39, 0xa2, 0xbd, 0x23, 0xfa, 0x4c, 0xcd, 0xe1, 0xa3,
	0x0d, 0x4f, 0xaf, 0x39, 0xa2, 0xb9, 0x2c, 0x5b, 0xbb, 0x02, 0x59, 0xe2, 0x64, 0x08, 0x35, 0xc9,
	0x57, 0xf4, 0x6d, 0x3a, 0xb5, 0xb7, 0xf1, 0xfe, 0x96, 0xfd, 0xea, 0xfb, 0x74, 0x5a, 0xda, 0x55,
	0xa5, 0x5e, 0x93, 0x2f, 0xa0, 0x2e, 0x58, 0x98, 0x50, 0x3f, 0xf2, 0xf4, 0xa5, 0x6c, 0x0e, 0xbb,
	0x1b, 0x46, 0x13, 0x16, 0x26, 0xe3, 0xb3, 0xd3, 0xd2, 0xaa, 0xa6, 0xb4, 0xe3, 0xc8, 0xeb, 0xfe,
	0x55, 0x81, 0xa3, 0x9b, 0xb2, 0x44, 0x1e, 0xc3, 0xad, 0xe2, 0xe6, 0x72, 0x1a, 0x31, 0x21, 0x6d,
	0x5d, 0xdb, 0x25, 0x7a, 0xc6, 0x84, 0x54, 0x03, 0x41, 0x5d, 0xc0, 0xa5, 0xc7, 0x24, 0x15, 0xe8,
	0x9b, 0x03, 0xef, 0xbb, 0xcd, 0xd8, 0xbb, 0x3c, 0xf7, 0x98, 0x9c, 0xa0, 0x2f, 0xc8, 0x31, 0x34,
	0x93, 0x54, 0x97, 0x48, 0x8f, 0x80, 0x5d, 0xed, 0xa7, 0x91, 0xa4, 0x2a, 0x9e, 0xba, 0xf2, 0x9f,
	0xa9, 0x16, 0x36, 0x9d, 0xe1, 0xf9, 0x3e, 0x0a, 0x61, 0xe2, 0x99, 0xd1, 0x72, 0x68, 0xda, 0xe1,
	0x54, 0x13, 0x2a, 0x64, 0xf7, 0xcf, 0x0a, 0xdc, 0x7b, 0x4f, 0x39, 0xfe, 0xeb, 0xae, 0xff, 0x5f,
	0x44, 0xf2, 0x14, 0x1e, 0x78, 0x51, 0x94, 0x2e, 0xa9, 0xc8, 0xa7, 0x6a, 0xce, 0x2c, 0x99, 0xbc,
	0xa0, 0x69, 0x86, 0x09, 0x0d, 0x30, 0x13, 0x66, 0xa6, 0xb9, 0xf7, 0xb4, 0x64, 0xa2, 0x15, 0xe7,
	0x4c, 0x5e, 0xfc, 0x98, 0x61, 0xf2, 0x0c, 0x33, 0xd1, 0xfd, 0x1a, 0xee, 0xde, 0x5c, 0x73, 0xf2,
	0x11, 0x1c, 0x6c, 0xf4, 0x0a, 0x5d, 0xdf, 0xc5, 0xf6, 0xba, 0x19, 0xde, 0xf0, 0xa8, 0xfb, 0x5b,
	0x0d, 0x6e, 0x6d, 0x97, 0x9d, 0x7c, 0x09, 0xb5, 0x69, 0xee, 0xff, 0x8a, 0x52, 0x38, 0x95, 0xde,
	0x6e, 0xbf, 0x39, 0xec, 0xbd, 0xb7, 0x45, 0x06, 0x23, 0x2d, 0x74, 0x0b, 0x03, 0xf2, 0x0b, 0x1c,
	0xd9, 0xf6, 0xa2, 0x1c, 0xd5, 0x97, 0xaf, 0x5f, 0x0e, 0xdb, 0xab, 0x9f, 0xbc, 0xdf, 0x91, 0x59,
	0xba, 0xca, 0xc6, 0x3c, 0x36, 0x6e, 0x47, 0x5e, 0x85, 0xba, 0xef, 0x2a, 0xd0, 0xf9, 0x66, 0x9e,
	0xb3, 0x85, 0x17, 0x61, 0x22, 0x47, 0x39, 0x8b, 0x02, 0xe4, 0xe4, 0x2e, 0x54, 0x4d, 0x78, 0x7b,
	0x42, 0xbb, 0x52, 0xaf, 0xd5, 0xd4, 0x48, 0xec, 0x9b, 0x54, 0x2c, 0xc9, 0x31, 0x40, 0x86, 0xdc,
	0xc7, 0x44, 0x7a, 0x21, 0xea, 0xa6, 0xd9, 0x77, 0x37, 0x10, 0x32, 0x84, 0x3b, 0xe9, 0x32, 0x41,
	0x4e, 0x97, 0x17, 0x4c, 0xa2, 0xaa, 0x1f, 0x0d, 0x79, 0x9a, 0x67, 0xb6, 0x8a, 0xb7, 0x35, 0x79,
	0x5e, 0x70, 0xcf, 0x15, 0xd5, 0xfd, 0xbb, 0x02, 0xb5, 0x62, 0x47, 0x04, 0xf6, 0xf4, 0x53, 0x68,
	0xf6, 0xa3, 0xbf, 0xc9, 0x23, 0x68, 0x49, 0xce, 0xc2, 0x10, 0x39, 0x06, 0x74, 0xba, 0xb2, 0x5b,
	0x6a, 0x96, 0xd8, 0x68, 0x45, 0x3e, 0x87, 0x3b, 0x78, 0x99, 0x21, 0x67, 0x31, 0x26, 0x92, 0x6e,
	0xec, 0x50, 0x85, 0xdd, 0x71, 0x8f, 0xd6, 0xe4, 0xcb, 0xf5, 0x5e, 0x5f, 0x42, 0x1b, 0xcb, 0x94,
	0x50, 0x99, 0xda, 0x01, 0xf3, 0x2f, 0xa9, 0xbe, 0x96, 0x41, 0xb7, 0xb5, 0xf6, 0xf0, 0x3a, 0xed,
	0xfe, 0x0c, 0x55, 0x53, 0xd6, 0x1b, 0xcf, 0xf1, 0x15, 0xd4, 0x6d, 0x1a, 0xcd, 0x04, 0xbf, 0x3a,
	0x81, 0xae, 0xb4, 0x87, 0x09, 0x50, 0x9a, 0x74, 0xdf, 0xed, 0x40, 0xe7, 0x5a, 0xad, 0xd5, 0xa5,
	0xd9, 0x6e, 0x9b, 0x79, 0x9e, 0x4a, 0xcf, 0xfe, 0x64, 0x1c, 0x6e, 0x34, 0xc2, 0x2b, 0x85, 0xab,
	0x87, 0x3c, 0x8c, 0xd2, 0xa9, 0x17, 0x6d, 0xa9, 0xcd, 0x78, 0x38, 0x34, 0xcc, 0x86, 0xfa, 0x09,
	0x1c, 0xcd, 0x3c, 0x16, 0xe5, 0x1c, 0xad, 0x7c, 0x89, 0x2c, 0xbc, 0x90, 0xb6, 0xee, 0xc4, 0x72,
	0xda, 0xe0, 0x5c, 0x33, 0x64, 0x0c, 0xc7, 0x92, 0x7b, 0x89, 0x60, 0x2a, 0xa5, 0x37, 0xda, 0xee,
	0x69, 0xdb, 0x07, 0xa5, 0xea, 0xdb, 0xeb, 0x4e, 0x9e, 0xc0, 0x91, 0x7a, 0x2e, 0xd3, 0x5c, 0x6e,
	0x9b, 0xee, 0x9b, 0xb0, 0x96, 0xdb, 0xb0, 0xe8, 0x76, 0xe0, 0xe0, 0xca, 0x30, 0xfd, 0x27, 0x00,
	0x00, 0xff, 0xff, 0x21, 0xa6, 0x4b, 0xd2, 0x87, 0x09, 0x00, 0x00,
}
