blob: fa675f85943de65d535190696e3064361c26a11e [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0-devel
// protoc v3.6.1
// source: chromiumos/bot_scaling.proto
package chromiumos
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
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)
)
// Specifies mode for a bot policy
type BotPolicy_Mode int32
const (
BotPolicy_UNKNOWN_MODE BotPolicy_Mode = 0
// Collect stats only for a bot group.
BotPolicy_MONITORED BotPolicy_Mode = 1
// Generate configuration updates for bot group.
BotPolicy_CONFIGURED BotPolicy_Mode = 2
)
// Enum value maps for BotPolicy_Mode.
var (
BotPolicy_Mode_name = map[int32]string{
0: "UNKNOWN_MODE",
1: "MONITORED",
2: "CONFIGURED",
}
BotPolicy_Mode_value = map[string]int32{
"UNKNOWN_MODE": 0,
"MONITORED": 1,
"CONFIGURED": 2,
}
)
func (x BotPolicy_Mode) Enum() *BotPolicy_Mode {
p := new(BotPolicy_Mode)
*p = x
return p
}
func (x BotPolicy_Mode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (BotPolicy_Mode) Descriptor() protoreflect.EnumDescriptor {
return file_chromiumos_bot_scaling_proto_enumTypes[0].Descriptor()
}
func (BotPolicy_Mode) Type() protoreflect.EnumType {
return &file_chromiumos_bot_scaling_proto_enumTypes[0]
}
func (x BotPolicy_Mode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use BotPolicy_Mode.Descriptor instead.
func (BotPolicy_Mode) EnumDescriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{2, 0}
}
// Specifies mode for a bot scaling
type BotPolicy_BotScalingMode int32
const (
BotPolicy_UNKNOWN_SCALING_MODE BotPolicy_BotScalingMode = 0
// Scale up or down bots by the step size associated with bot group..
BotPolicy_STEPPED BotPolicy_BotScalingMode = 1
// Scale up or down bots by the demand on the bot group.
// For use on smaller bot groups that are susceptible to smaller increases.
BotPolicy_DEMAND BotPolicy_BotScalingMode = 2
// Scale down bots by the step size associated with bot group.
// Scale up bots by the demand on the bot group.
BotPolicy_STEPPED_DECREASE BotPolicy_BotScalingMode = 3
)
// Enum value maps for BotPolicy_BotScalingMode.
var (
BotPolicy_BotScalingMode_name = map[int32]string{
0: "UNKNOWN_SCALING_MODE",
1: "STEPPED",
2: "DEMAND",
3: "STEPPED_DECREASE",
}
BotPolicy_BotScalingMode_value = map[string]int32{
"UNKNOWN_SCALING_MODE": 0,
"STEPPED": 1,
"DEMAND": 2,
"STEPPED_DECREASE": 3,
}
)
func (x BotPolicy_BotScalingMode) Enum() *BotPolicy_BotScalingMode {
p := new(BotPolicy_BotScalingMode)
*p = x
return p
}
func (x BotPolicy_BotScalingMode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (BotPolicy_BotScalingMode) Descriptor() protoreflect.EnumDescriptor {
return file_chromiumos_bot_scaling_proto_enumTypes[1].Descriptor()
}
func (BotPolicy_BotScalingMode) Type() protoreflect.EnumType {
return &file_chromiumos_bot_scaling_proto_enumTypes[1]
}
func (x BotPolicy_BotScalingMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use BotPolicy_BotScalingMode.Descriptor instead.
func (BotPolicy_BotScalingMode) EnumDescriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{2, 1}
}
// Specifies if there has been a change since the last iteration.
type ScalingAction_Actionable int32
const (
ScalingAction_UNSPECIFIED ScalingAction_Actionable = 0
// There is a change since last time.
ScalingAction_YES ScalingAction_Actionable = 1
// There is no change since last time.
ScalingAction_NO ScalingAction_Actionable = 2
)
// Enum value maps for ScalingAction_Actionable.
var (
ScalingAction_Actionable_name = map[int32]string{
0: "UNSPECIFIED",
1: "YES",
2: "NO",
}
ScalingAction_Actionable_value = map[string]int32{
"UNSPECIFIED": 0,
"YES": 1,
"NO": 2,
}
)
func (x ScalingAction_Actionable) Enum() *ScalingAction_Actionable {
p := new(ScalingAction_Actionable)
*p = x
return p
}
func (x ScalingAction_Actionable) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ScalingAction_Actionable) Descriptor() protoreflect.EnumDescriptor {
return file_chromiumos_bot_scaling_proto_enumTypes[2].Descriptor()
}
func (ScalingAction_Actionable) Type() protoreflect.EnumType {
return &file_chromiumos_bot_scaling_proto_enumTypes[2]
}
func (x ScalingAction_Actionable) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ScalingAction_Actionable.Descriptor instead.
func (ScalingAction_Actionable) EnumDescriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{6, 0}
}
// Defines a type of bot associated with a bot group.
type BotType struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The string bot "shirt size" to be requested for the group.
BotSize string `protobuf:"bytes,1,opt,name=bot_size,json=botSize,proto3" json:"bot_size,omitempty"`
// The number of cores per bot. Will be used to limit quota usage.
CoresPerBot float32 `protobuf:"fixed32,2,opt,name=cores_per_bot,json=coresPerBot,proto3" json:"cores_per_bot,omitempty"`
// Estimated hourly cost.
HourlyCost float32 `protobuf:"fixed32,3,opt,name=hourly_cost,json=hourlyCost,proto3" json:"hourly_cost,omitempty"`
// Amount of memory in GB allocated to bot.
MemoryGb float32 `protobuf:"fixed32,4,opt,name=memory_gb,json=memoryGb,proto3" json:"memory_gb,omitempty"`
}
func (x *BotType) Reset() {
*x = BotType{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotType) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotType) ProtoMessage() {}
func (x *BotType) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 BotType.ProtoReflect.Descriptor instead.
func (*BotType) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{0}
}
func (x *BotType) GetBotSize() string {
if x != nil {
return x.BotSize
}
return ""
}
func (x *BotType) GetCoresPerBot() float32 {
if x != nil {
return x.CoresPerBot
}
return 0
}
func (x *BotType) GetHourlyCost() float32 {
if x != nil {
return x.HourlyCost
}
return 0
}
func (x *BotType) GetMemoryGb() float32 {
if x != nil {
return x.MemoryGb
}
return 0
}
// Defines Swarming dimensions associated with a bot group.
type SwarmingDimension struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Dimesion name
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Dimension value
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
// Dimension multiple values
Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
}
func (x *SwarmingDimension) Reset() {
*x = SwarmingDimension{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SwarmingDimension) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SwarmingDimension) ProtoMessage() {}
func (x *SwarmingDimension) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 SwarmingDimension.ProtoReflect.Descriptor instead.
func (*SwarmingDimension) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{1}
}
func (x *SwarmingDimension) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *SwarmingDimension) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
func (x *SwarmingDimension) GetValues() []string {
if x != nil {
return x.Values
}
return nil
}
// Bot Policy to apply to a bot group.
type BotPolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Bot group controlled by this policy, like, 'cq', 'postsubmit',...
BotGroup string `protobuf:"bytes,1,opt,name=bot_group,json=botGroup,proto3" json:"bot_group,omitempty"`
// The type of bot to be requested.
BotType *BotType `protobuf:"bytes,2,opt,name=bot_type,json=botType,proto3" json:"bot_type,omitempty"`
ScalingRestriction *BotPolicy_ScalingRestriction `protobuf:"bytes,3,opt,name=scaling_restriction,json=scalingRestriction,proto3" json:"scaling_restriction,omitempty"`
RegionRestrictions []*BotPolicy_RegionRestriction `protobuf:"bytes,4,rep,name=region_restrictions,json=regionRestrictions,proto3" json:"region_restrictions,omitempty"`
// A set of dimensions used to validate current Swarming allocations.
SwarmingDimensions []*SwarmingDimension `protobuf:"bytes,5,rep,name=swarming_dimensions,json=swarmingDimensions,proto3" json:"swarming_dimensions,omitempty"`
// Set whether a bot group should be configured or only monitored.
PolicyMode BotPolicy_Mode `protobuf:"varint,6,opt,name=policy_mode,json=policyMode,proto3,enum=chromiumos.BotPolicy_Mode" json:"policy_mode,omitempty"`
// Number of hours to lookback for Swarming stats.
LookbackHours int32 `protobuf:"zigzag32,7,opt,name=lookback_hours,json=lookbackHours,proto3" json:"lookback_hours,omitempty"`
// Set the scaling approach for the bot group being monitored.
ScalingMode BotPolicy_BotScalingMode `protobuf:"varint,8,opt,name=scaling_mode,json=scalingMode,proto3,enum=chromiumos.BotPolicy_BotScalingMode" json:"scaling_mode,omitempty"`
// Swarming instance name: chromeos-swarming.appspot.com
SwarmingInstance string `protobuf:"bytes,9,opt,name=swarming_instance,json=swarmingInstance,proto3" json:"swarming_instance,omitempty"`
// Application namespace within Swarming instance.
Application string `protobuf:"bytes,10,opt,name=application,proto3" json:"application,omitempty"`
}
func (x *BotPolicy) Reset() {
*x = BotPolicy{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotPolicy) ProtoMessage() {}
func (x *BotPolicy) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 BotPolicy.ProtoReflect.Descriptor instead.
func (*BotPolicy) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{2}
}
func (x *BotPolicy) GetBotGroup() string {
if x != nil {
return x.BotGroup
}
return ""
}
func (x *BotPolicy) GetBotType() *BotType {
if x != nil {
return x.BotType
}
return nil
}
func (x *BotPolicy) GetScalingRestriction() *BotPolicy_ScalingRestriction {
if x != nil {
return x.ScalingRestriction
}
return nil
}
func (x *BotPolicy) GetRegionRestrictions() []*BotPolicy_RegionRestriction {
if x != nil {
return x.RegionRestrictions
}
return nil
}
func (x *BotPolicy) GetSwarmingDimensions() []*SwarmingDimension {
if x != nil {
return x.SwarmingDimensions
}
return nil
}
func (x *BotPolicy) GetPolicyMode() BotPolicy_Mode {
if x != nil {
return x.PolicyMode
}
return BotPolicy_UNKNOWN_MODE
}
func (x *BotPolicy) GetLookbackHours() int32 {
if x != nil {
return x.LookbackHours
}
return 0
}
func (x *BotPolicy) GetScalingMode() BotPolicy_BotScalingMode {
if x != nil {
return x.ScalingMode
}
return BotPolicy_UNKNOWN_SCALING_MODE
}
func (x *BotPolicy) GetSwarmingInstance() string {
if x != nil {
return x.SwarmingInstance
}
return ""
}
func (x *BotPolicy) GetApplication() string {
if x != nil {
return x.Application
}
return ""
}
// Configures the root message.
type BotPolicyCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// All bot policies.
BotPolicies []*BotPolicy `protobuf:"bytes,1,rep,name=bot_policies,json=botPolicies,proto3" json:"bot_policies,omitempty"`
}
func (x *BotPolicyCfg) Reset() {
*x = BotPolicyCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotPolicyCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotPolicyCfg) ProtoMessage() {}
func (x *BotPolicyCfg) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 BotPolicyCfg.ProtoReflect.Descriptor instead.
func (*BotPolicyCfg) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{3}
}
func (x *BotPolicyCfg) GetBotPolicies() []*BotPolicy {
if x != nil {
return x.BotPolicies
}
return nil
}
// Reduced version of BotPolicy meant for output properties
type ReducedBotPolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Bot group controlled by this policy, like, 'cq', 'postsubmit',...
BotGroup string `protobuf:"bytes,1,opt,name=bot_group,json=botGroup,proto3" json:"bot_group,omitempty"`
// The type of bot to be requested.
BotType *BotType `protobuf:"bytes,2,opt,name=bot_type,json=botType,proto3" json:"bot_type,omitempty"`
// Set whether a bot group should be configured or only monitored.
PolicyMode BotPolicy_Mode `protobuf:"varint,3,opt,name=policy_mode,json=policyMode,proto3,enum=chromiumos.BotPolicy_Mode" json:"policy_mode,omitempty"`
}
func (x *ReducedBotPolicy) Reset() {
*x = ReducedBotPolicy{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReducedBotPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReducedBotPolicy) ProtoMessage() {}
func (x *ReducedBotPolicy) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 ReducedBotPolicy.ProtoReflect.Descriptor instead.
func (*ReducedBotPolicy) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{4}
}
func (x *ReducedBotPolicy) GetBotGroup() string {
if x != nil {
return x.BotGroup
}
return ""
}
func (x *ReducedBotPolicy) GetBotType() *BotType {
if x != nil {
return x.BotType
}
return nil
}
func (x *ReducedBotPolicy) GetPolicyMode() BotPolicy_Mode {
if x != nil {
return x.PolicyMode
}
return BotPolicy_UNKNOWN_MODE
}
// Configures the root message.
type ReducedBotPolicyCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// All bot policies in reduced form.
BotPolicies []*ReducedBotPolicy `protobuf:"bytes,1,rep,name=bot_policies,json=botPolicies,proto3" json:"bot_policies,omitempty"`
}
func (x *ReducedBotPolicyCfg) Reset() {
*x = ReducedBotPolicyCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReducedBotPolicyCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReducedBotPolicyCfg) ProtoMessage() {}
func (x *ReducedBotPolicyCfg) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 ReducedBotPolicyCfg.ProtoReflect.Descriptor instead.
func (*ReducedBotPolicyCfg) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{5}
}
func (x *ReducedBotPolicyCfg) GetBotPolicies() []*ReducedBotPolicy {
if x != nil {
return x.BotPolicies
}
return nil
}
// Scaling Action that resulted because of bot demand.
type ScalingAction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Bot group modified by the action. Should be the same as BotPolicy.
BotGroup string `protobuf:"bytes,1,opt,name=bot_group,json=botGroup,proto3" json:"bot_group,omitempty"`
// The type of bot requested. Should be the same as BotPolicy.
BotType *BotType `protobuf:"bytes,2,opt,name=bot_type,json=botType,proto3" json:"bot_type,omitempty"`
// Whether there has been a change in the number of bots requested
// for this bot group. See step_size for more info.
Actionable ScalingAction_Actionable `protobuf:"varint,3,opt,name=actionable,proto3,enum=chromiumos.ScalingAction_Actionable" json:"actionable,omitempty"`
// Total number of bots requested for the group.
BotsRequested int32 `protobuf:"varint,4,opt,name=bots_requested,json=botsRequested,proto3" json:"bots_requested,omitempty"`
RegionalActions []*ScalingAction_RegionalAction `protobuf:"bytes,5,rep,name=regional_actions,json=regionalActions,proto3" json:"regional_actions,omitempty"`
// Estimated savings based on current run.
// Based on current number of bots compared against the max.
EstimatedSavings float32 `protobuf:"fixed32,6,opt,name=estimated_savings,json=estimatedSavings,proto3" json:"estimated_savings,omitempty"`
// Minimum number of bots to keep alive for bot group.
// Repeated for display/reporting purposes
BotMin int32 `protobuf:"varint,7,opt,name=bot_min,json=botMin,proto3" json:"bot_min,omitempty"`
// Hard limit on the maximum number of bots that can be requested.
// Repeated for display/reporting purposes
BotMax int32 `protobuf:"varint,8,opt,name=bot_max,json=botMax,proto3" json:"bot_max,omitempty"`
// Application namespace within Swarming instance.
Application string `protobuf:"bytes,9,opt,name=application,proto3" json:"application,omitempty"`
}
func (x *ScalingAction) Reset() {
*x = ScalingAction{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ScalingAction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ScalingAction) ProtoMessage() {}
func (x *ScalingAction) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 ScalingAction.ProtoReflect.Descriptor instead.
func (*ScalingAction) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{6}
}
func (x *ScalingAction) GetBotGroup() string {
if x != nil {
return x.BotGroup
}
return ""
}
func (x *ScalingAction) GetBotType() *BotType {
if x != nil {
return x.BotType
}
return nil
}
func (x *ScalingAction) GetActionable() ScalingAction_Actionable {
if x != nil {
return x.Actionable
}
return ScalingAction_UNSPECIFIED
}
func (x *ScalingAction) GetBotsRequested() int32 {
if x != nil {
return x.BotsRequested
}
return 0
}
func (x *ScalingAction) GetRegionalActions() []*ScalingAction_RegionalAction {
if x != nil {
return x.RegionalActions
}
return nil
}
func (x *ScalingAction) GetEstimatedSavings() float32 {
if x != nil {
return x.EstimatedSavings
}
return 0
}
func (x *ScalingAction) GetBotMin() int32 {
if x != nil {
return x.BotMin
}
return 0
}
func (x *ScalingAction) GetBotMax() int32 {
if x != nil {
return x.BotMax
}
return 0
}
func (x *ScalingAction) GetApplication() string {
if x != nil {
return x.Application
}
return ""
}
// Resource utilization based on regional assignment.
type ResourceUtilization struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Region of the bot sub-group.
Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
// Number of VMs allocated across all bot groups.
Vms int32 `protobuf:"varint,2,opt,name=vms,proto3" json:"vms,omitempty"`
// Number of CPUs allocated across all bot groups.
Cpus float32 `protobuf:"fixed32,3,opt,name=cpus,proto3" json:"cpus,omitempty"`
// Amount of memory in GB allocated across all bot groups.
MemoryGb float32 `protobuf:"fixed32,4,opt,name=memory_gb,json=memoryGb,proto3" json:"memory_gb,omitempty"`
// Amount of disk in GB allocated across all bot groups.
DiskGb float32 `protobuf:"fixed32,5,opt,name=disk_gb,json=diskGb,proto3" json:"disk_gb,omitempty"`
// NUmber of CPUs that could be allocated based on max values.
MaxCpus float32 `protobuf:"fixed32,6,opt,name=max_cpus,json=maxCpus,proto3" json:"max_cpus,omitempty"`
}
func (x *ResourceUtilization) Reset() {
*x = ResourceUtilization{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ResourceUtilization) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ResourceUtilization) ProtoMessage() {}
func (x *ResourceUtilization) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 ResourceUtilization.ProtoReflect.Descriptor instead.
func (*ResourceUtilization) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{7}
}
func (x *ResourceUtilization) GetRegion() string {
if x != nil {
return x.Region
}
return ""
}
func (x *ResourceUtilization) GetVms() int32 {
if x != nil {
return x.Vms
}
return 0
}
func (x *ResourceUtilization) GetCpus() float32 {
if x != nil {
return x.Cpus
}
return 0
}
func (x *ResourceUtilization) GetMemoryGb() float32 {
if x != nil {
return x.MemoryGb
}
return 0
}
func (x *ResourceUtilization) GetDiskGb() float32 {
if x != nil {
return x.DiskGb
}
return 0
}
func (x *ResourceUtilization) GetMaxCpus() float32 {
if x != nil {
return x.MaxCpus
}
return 0
}
// Application utilization, per application at a
// regional assignment.
type ApplicationUtilization struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Application namespace to associate resources.
Application string `protobuf:"bytes,1,opt,name=application,proto3" json:"application,omitempty"`
ResourceUtilization []*ResourceUtilization `protobuf:"bytes,2,rep,name=resource_utilization,json=resourceUtilization,proto3" json:"resource_utilization,omitempty"`
}
func (x *ApplicationUtilization) Reset() {
*x = ApplicationUtilization{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ApplicationUtilization) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ApplicationUtilization) ProtoMessage() {}
func (x *ApplicationUtilization) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 ApplicationUtilization.ProtoReflect.Descriptor instead.
func (*ApplicationUtilization) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{8}
}
func (x *ApplicationUtilization) GetApplication() string {
if x != nil {
return x.Application
}
return ""
}
func (x *ApplicationUtilization) GetResourceUtilization() []*ResourceUtilization {
if x != nil {
return x.ResourceUtilization
}
return nil
}
// All the actions that will be executed by RoboCrop.
type RoboCropAction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// List of an action per bot group scaled by RoboCrop.
ScalingActions []*ScalingAction `protobuf:"bytes,1,rep,name=scaling_actions,json=scalingActions,proto3" json:"scaling_actions,omitempty"`
ResourceUtilization []*ResourceUtilization `protobuf:"bytes,2,rep,name=resource_utilization,json=resourceUtilization,proto3" json:"resource_utilization,omitempty"`
ApplResourceUtilization []*ApplicationUtilization `protobuf:"bytes,3,rep,name=appl_resource_utilization,json=applResourceUtilization,proto3" json:"appl_resource_utilization,omitempty"`
}
func (x *RoboCropAction) Reset() {
*x = RoboCropAction{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RoboCropAction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RoboCropAction) ProtoMessage() {}
func (x *RoboCropAction) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 RoboCropAction.ProtoReflect.Descriptor instead.
func (*RoboCropAction) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{9}
}
func (x *RoboCropAction) GetScalingActions() []*ScalingAction {
if x != nil {
return x.ScalingActions
}
return nil
}
func (x *RoboCropAction) GetResourceUtilization() []*ResourceUtilization {
if x != nil {
return x.ResourceUtilization
}
return nil
}
func (x *RoboCropAction) GetApplResourceUtilization() []*ApplicationUtilization {
if x != nil {
return x.ApplResourceUtilization
}
return nil
}
// Scaling restriction specifies the limits on how the group can be
// expanded or reduced.
type BotPolicy_ScalingRestriction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Hard limit on the maximum number of bots to request.
BotCeiling int32 `protobuf:"varint,1,opt,name=bot_ceiling,json=botCeiling,proto3" json:"bot_ceiling,omitempty"`
// Hard limit on the minimum number of bots to request.
BotFloor int32 `protobuf:"varint,2,opt,name=bot_floor,json=botFloor,proto3" json:"bot_floor,omitempty"`
// Soft limit on the number of idle bots to maintain.
MinIdle int32 `protobuf:"varint,3,opt,name=min_idle,json=minIdle,proto3" json:"min_idle,omitempty"`
// Hard minimum limit on the absolute delta between request amount and
// existing bot count.
StepSize int32 `protobuf:"varint,4,opt,name=step_size,json=stepSize,proto3" json:"step_size,omitempty"`
// Static number to request when demand is not accessible.
BotFallback int32 `protobuf:"varint,5,opt,name=bot_fallback,json=botFallback,proto3" json:"bot_fallback,omitempty"`
}
func (x *BotPolicy_ScalingRestriction) Reset() {
*x = BotPolicy_ScalingRestriction{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotPolicy_ScalingRestriction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotPolicy_ScalingRestriction) ProtoMessage() {}
func (x *BotPolicy_ScalingRestriction) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 BotPolicy_ScalingRestriction.ProtoReflect.Descriptor instead.
func (*BotPolicy_ScalingRestriction) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{2, 0}
}
func (x *BotPolicy_ScalingRestriction) GetBotCeiling() int32 {
if x != nil {
return x.BotCeiling
}
return 0
}
func (x *BotPolicy_ScalingRestriction) GetBotFloor() int32 {
if x != nil {
return x.BotFloor
}
return 0
}
func (x *BotPolicy_ScalingRestriction) GetMinIdle() int32 {
if x != nil {
return x.MinIdle
}
return 0
}
func (x *BotPolicy_ScalingRestriction) GetStepSize() int32 {
if x != nil {
return x.StepSize
}
return 0
}
func (x *BotPolicy_ScalingRestriction) GetBotFallback() int32 {
if x != nil {
return x.BotFallback
}
return 0
}
// A set of restrictions on the regions and how to distribute bots
// between them.
type BotPolicy_RegionRestriction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Region of the bot sub-group.
Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
// Specific prefix of the bot sub-group.
Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
// Weight to be applied to this sub-group. The number of bots requested
// from each region will be proportional to the weight unless a
// quota limit is violated.
Weight float32 `protobuf:"fixed32,3,opt,name=weight,proto3" json:"weight,omitempty"`
}
func (x *BotPolicy_RegionRestriction) Reset() {
*x = BotPolicy_RegionRestriction{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotPolicy_RegionRestriction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotPolicy_RegionRestriction) ProtoMessage() {}
func (x *BotPolicy_RegionRestriction) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 BotPolicy_RegionRestriction.ProtoReflect.Descriptor instead.
func (*BotPolicy_RegionRestriction) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{2, 1}
}
func (x *BotPolicy_RegionRestriction) GetRegion() string {
if x != nil {
return x.Region
}
return ""
}
func (x *BotPolicy_RegionRestriction) GetPrefix() string {
if x != nil {
return x.Prefix
}
return ""
}
func (x *BotPolicy_RegionRestriction) GetWeight() float32 {
if x != nil {
return x.Weight
}
return 0
}
// How the bot requests are distributed between regions & prefixes.
type ScalingAction_RegionalAction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Region of the bot sub-group.
Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
// Specific prefix of the bot sub-group.
Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
// Number of bots requested from the sub-group.
BotsRequested int32 `protobuf:"varint,3,opt,name=bots_requested,json=botsRequested,proto3" json:"bots_requested,omitempty"`
}
func (x *ScalingAction_RegionalAction) Reset() {
*x = ScalingAction_RegionalAction{}
if protoimpl.UnsafeEnabled {
mi := &file_chromiumos_bot_scaling_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ScalingAction_RegionalAction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ScalingAction_RegionalAction) ProtoMessage() {}
func (x *ScalingAction_RegionalAction) ProtoReflect() protoreflect.Message {
mi := &file_chromiumos_bot_scaling_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 ScalingAction_RegionalAction.ProtoReflect.Descriptor instead.
func (*ScalingAction_RegionalAction) Descriptor() ([]byte, []int) {
return file_chromiumos_bot_scaling_proto_rawDescGZIP(), []int{6, 0}
}
func (x *ScalingAction_RegionalAction) GetRegion() string {
if x != nil {
return x.Region
}
return ""
}
func (x *ScalingAction_RegionalAction) GetPrefix() string {
if x != nil {
return x.Prefix
}
return ""
}
func (x *ScalingAction_RegionalAction) GetBotsRequested() int32 {
if x != nil {
return x.BotsRequested
}
return 0
}
var File_chromiumos_bot_scaling_proto protoreflect.FileDescriptor
var file_chromiumos_bot_scaling_proto_rawDesc = []byte{
0x0a, 0x1c, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x6f, 0x74,
0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x07, 0x42,
0x6f, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x73, 0x69,
0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x62,
0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x50,
0x65, 0x72, 0x42, 0x6f, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f,
0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x68, 0x6f, 0x75, 0x72,
0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
0x5f, 0x67, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
0x79, 0x47, 0x62, 0x22, 0x55, 0x0a, 0x11, 0x53, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x44,
0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,
0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xfa, 0x07, 0x0a, 0x09, 0x42,
0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x5f,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6f, 0x74,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x62, 0x6f,
0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x13, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67,
0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e,
0x42, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e,
0x67, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x63,
0x61, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x58, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72,
0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x74, 0x72,
0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65,
0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x13, 0x73, 0x77,
0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x6d,
0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x70, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x1a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x6f, 0x74,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x62,
0x61, 0x63, 0x6b, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52,
0x0d, 0x6c, 0x6f, 0x6f, 0x6b, 0x62, 0x61, 0x63, 0x6b, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x47,
0x0a, 0x0c, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f,
0x73, 0x2e, 0x42, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x42, 0x6f, 0x74, 0x53,
0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x73, 0x63, 0x61, 0x6c,
0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x77, 0x61, 0x72, 0x6d,
0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01,
0x28, 0x09, 0x52, 0x10, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xad, 0x01, 0x0a, 0x12, 0x53, 0x63, 0x61, 0x6c, 0x69,
0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a,
0x0b, 0x62, 0x6f, 0x74, 0x5f, 0x63, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0a, 0x62, 0x6f, 0x74, 0x43, 0x65, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1b,
0x0a, 0x09, 0x62, 0x6f, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6d,
0x69, 0x6e, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d,
0x69, 0x6e, 0x49, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x73,
0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74, 0x65, 0x70, 0x53,
0x69, 0x7a, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6f, 0x74, 0x5f, 0x66, 0x61, 0x6c, 0x6c, 0x62,
0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x46, 0x61,
0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x1a, 0x5b, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e,
0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72,
0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x77,
0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69,
0x67, 0x68, 0x74, 0x22, 0x37, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x55,
0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a,
0x09, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a,
0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x0e,
0x42, 0x6f, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18,
0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e,
0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x45, 0x50,
0x50, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x10,
0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x45, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x43,
0x52, 0x45, 0x41, 0x53, 0x45, 0x10, 0x03, 0x22, 0x48, 0x0a, 0x0c, 0x42, 0x6f, 0x74, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x43, 0x66, 0x67, 0x12, 0x38, 0x0a, 0x0c, 0x62, 0x6f, 0x74, 0x5f, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
0x73, 0x22, 0x9c, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x64, 0x42, 0x6f, 0x74,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x5f, 0x67, 0x72,
0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
0x6f, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x54,
0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x6f,
0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65,
0x22, 0x56, 0x0a, 0x13, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x64, 0x42, 0x6f, 0x74, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x43, 0x66, 0x67, 0x12, 0x3f, 0x0a, 0x0c, 0x62, 0x6f, 0x74, 0x5f, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x64, 0x75, 0x63,
0x65, 0x64, 0x42, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x62, 0x6f, 0x74,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xb8, 0x04, 0x0a, 0x0d, 0x53, 0x63, 0x61,
0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f,
0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62,
0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x6f, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07,
0x62, 0x6f, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67,
0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x0a,
0x0e, 0x62, 0x6f, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x63, 0x61, 0x6c,
0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e,
0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x73, 0x74,
0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06,
0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53,
0x61, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x5f, 0x6d, 0x69,
0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x12,
0x17, 0x0a, 0x07, 0x62, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x62, 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61,
0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x67, 0x0a, 0x0e, 0x52, 0x65,
0x67, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65,
0x67, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x25, 0x0a, 0x0e,
0x62, 0x6f, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x65, 0x64, 0x22, 0x2e, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4e,
0x4f, 0x10, 0x02, 0x22, 0xa4, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72,
0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x76, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x70, 0x75, 0x73, 0x18, 0x03, 0x20,
0x01, 0x28, 0x02, 0x52, 0x04, 0x63, 0x70, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d,
0x6f, 0x72, 0x79, 0x5f, 0x67, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x65,
0x6d, 0x6f, 0x72, 0x79, 0x47, 0x62, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x67,
0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x64, 0x69, 0x73, 0x6b, 0x47, 0x62, 0x12,
0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
0x02, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x16, 0x41,
0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
0x6f, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x74, 0x69, 0x6c, 0x69,
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x88, 0x02, 0x0a, 0x0e,
0x52, 0x6f, 0x62, 0x6f, 0x43, 0x72, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42,
0x0a, 0x0f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x12, 0x52, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75,
0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x52, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x74, 0x69, 0x6c, 0x69,
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x6c, 0x5f, 0x72,
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x61,
0x70, 0x70, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x74, 0x69, 0x6c, 0x69,
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_chromiumos_bot_scaling_proto_rawDescOnce sync.Once
file_chromiumos_bot_scaling_proto_rawDescData = file_chromiumos_bot_scaling_proto_rawDesc
)
func file_chromiumos_bot_scaling_proto_rawDescGZIP() []byte {
file_chromiumos_bot_scaling_proto_rawDescOnce.Do(func() {
file_chromiumos_bot_scaling_proto_rawDescData = protoimpl.X.CompressGZIP(file_chromiumos_bot_scaling_proto_rawDescData)
})
return file_chromiumos_bot_scaling_proto_rawDescData
}
var file_chromiumos_bot_scaling_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_chromiumos_bot_scaling_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_chromiumos_bot_scaling_proto_goTypes = []interface{}{
(BotPolicy_Mode)(0), // 0: chromiumos.BotPolicy.Mode
(BotPolicy_BotScalingMode)(0), // 1: chromiumos.BotPolicy.BotScalingMode
(ScalingAction_Actionable)(0), // 2: chromiumos.ScalingAction.Actionable
(*BotType)(nil), // 3: chromiumos.BotType
(*SwarmingDimension)(nil), // 4: chromiumos.SwarmingDimension
(*BotPolicy)(nil), // 5: chromiumos.BotPolicy
(*BotPolicyCfg)(nil), // 6: chromiumos.BotPolicyCfg
(*ReducedBotPolicy)(nil), // 7: chromiumos.ReducedBotPolicy
(*ReducedBotPolicyCfg)(nil), // 8: chromiumos.ReducedBotPolicyCfg
(*ScalingAction)(nil), // 9: chromiumos.ScalingAction
(*ResourceUtilization)(nil), // 10: chromiumos.ResourceUtilization
(*ApplicationUtilization)(nil), // 11: chromiumos.ApplicationUtilization
(*RoboCropAction)(nil), // 12: chromiumos.RoboCropAction
(*BotPolicy_ScalingRestriction)(nil), // 13: chromiumos.BotPolicy.ScalingRestriction
(*BotPolicy_RegionRestriction)(nil), // 14: chromiumos.BotPolicy.RegionRestriction
(*ScalingAction_RegionalAction)(nil), // 15: chromiumos.ScalingAction.RegionalAction
}
var file_chromiumos_bot_scaling_proto_depIdxs = []int32{
3, // 0: chromiumos.BotPolicy.bot_type:type_name -> chromiumos.BotType
13, // 1: chromiumos.BotPolicy.scaling_restriction:type_name -> chromiumos.BotPolicy.ScalingRestriction
14, // 2: chromiumos.BotPolicy.region_restrictions:type_name -> chromiumos.BotPolicy.RegionRestriction
4, // 3: chromiumos.BotPolicy.swarming_dimensions:type_name -> chromiumos.SwarmingDimension
0, // 4: chromiumos.BotPolicy.policy_mode:type_name -> chromiumos.BotPolicy.Mode
1, // 5: chromiumos.BotPolicy.scaling_mode:type_name -> chromiumos.BotPolicy.BotScalingMode
5, // 6: chromiumos.BotPolicyCfg.bot_policies:type_name -> chromiumos.BotPolicy
3, // 7: chromiumos.ReducedBotPolicy.bot_type:type_name -> chromiumos.BotType
0, // 8: chromiumos.ReducedBotPolicy.policy_mode:type_name -> chromiumos.BotPolicy.Mode
7, // 9: chromiumos.ReducedBotPolicyCfg.bot_policies:type_name -> chromiumos.ReducedBotPolicy
3, // 10: chromiumos.ScalingAction.bot_type:type_name -> chromiumos.BotType
2, // 11: chromiumos.ScalingAction.actionable:type_name -> chromiumos.ScalingAction.Actionable
15, // 12: chromiumos.ScalingAction.regional_actions:type_name -> chromiumos.ScalingAction.RegionalAction
10, // 13: chromiumos.ApplicationUtilization.resource_utilization:type_name -> chromiumos.ResourceUtilization
9, // 14: chromiumos.RoboCropAction.scaling_actions:type_name -> chromiumos.ScalingAction
10, // 15: chromiumos.RoboCropAction.resource_utilization:type_name -> chromiumos.ResourceUtilization
11, // 16: chromiumos.RoboCropAction.appl_resource_utilization:type_name -> chromiumos.ApplicationUtilization
17, // [17:17] is the sub-list for method output_type
17, // [17:17] is the sub-list for method input_type
17, // [17:17] is the sub-list for extension type_name
17, // [17:17] is the sub-list for extension extendee
0, // [0:17] is the sub-list for field type_name
}
func init() { file_chromiumos_bot_scaling_proto_init() }
func file_chromiumos_bot_scaling_proto_init() {
if File_chromiumos_bot_scaling_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_chromiumos_bot_scaling_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotType); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SwarmingDimension); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotPolicy); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotPolicyCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReducedBotPolicy); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReducedBotPolicyCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScalingAction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResourceUtilization); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ApplicationUtilization); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RoboCropAction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotPolicy_ScalingRestriction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotPolicy_RegionRestriction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_chromiumos_bot_scaling_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScalingAction_RegionalAction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_chromiumos_bot_scaling_proto_rawDesc,
NumEnums: 3,
NumMessages: 13,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_chromiumos_bot_scaling_proto_goTypes,
DependencyIndexes: file_chromiumos_bot_scaling_proto_depIdxs,
EnumInfos: file_chromiumos_bot_scaling_proto_enumTypes,
MessageInfos: file_chromiumos_bot_scaling_proto_msgTypes,
}.Build()
File_chromiumos_bot_scaling_proto = out.File
file_chromiumos_bot_scaling_proto_rawDesc = nil
file_chromiumos_bot_scaling_proto_goTypes = nil
file_chromiumos_bot_scaling_proto_depIdxs = nil
}