bot_scaling: New message type to support collecting regional usage

Current Robocrop only collects GCE resource usage at the global level,
but we need to ensure that quotas are tracked at each region.  This will
provide a baseline to ensure we are not overallocating resources in each
region.

Bug: chromium:1087113
Change-Id: Ic567139909860a8102f3689c5f7ae9473b628f9f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2219058
Commit-Queue: Mike Nichols <mikenichols@chromium.org>
Tested-by: Mike Nichols <mikenichols@chromium.org>
Reviewed-by: Dhanya Ganesh <dhanyaganesh@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
diff --git a/go/chromiumos/bot_scaling.pb.go b/go/chromiumos/bot_scaling.pb.go
index a9cc215..be2d57f 100644
--- a/go/chromiumos/bot_scaling.pb.go
+++ b/go/chromiumos/bot_scaling.pb.go
@@ -730,21 +730,72 @@
 	return 0
 }
 
+// ResourceUsage for each region that bots are deployed.
+type RegionalResourceUsage struct {
+	// Region of the bot sub-group.
+	Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
+	// ResourceUsage message type
+	ResourceUsage        *ResourceUsage `protobuf:"bytes,2,opt,name=resource_usage,json=resourceUsage,proto3" json:"resource_usage,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *RegionalResourceUsage) Reset()         { *m = RegionalResourceUsage{} }
+func (m *RegionalResourceUsage) String() string { return proto.CompactTextString(m) }
+func (*RegionalResourceUsage) ProtoMessage()    {}
+func (*RegionalResourceUsage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_dbe70eabfd64e7ef, []int{6}
+}
+
+func (m *RegionalResourceUsage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RegionalResourceUsage.Unmarshal(m, b)
+}
+func (m *RegionalResourceUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RegionalResourceUsage.Marshal(b, m, deterministic)
+}
+func (m *RegionalResourceUsage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RegionalResourceUsage.Merge(m, src)
+}
+func (m *RegionalResourceUsage) XXX_Size() int {
+	return xxx_messageInfo_RegionalResourceUsage.Size(m)
+}
+func (m *RegionalResourceUsage) XXX_DiscardUnknown() {
+	xxx_messageInfo_RegionalResourceUsage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RegionalResourceUsage proto.InternalMessageInfo
+
+func (m *RegionalResourceUsage) GetRegion() string {
+	if m != nil {
+		return m.Region
+	}
+	return ""
+}
+
+func (m *RegionalResourceUsage) GetResourceUsage() *ResourceUsage {
+	if m != nil {
+		return m.ResourceUsage
+	}
+	return nil
+}
+
 // All the actions that will be executed by RoboCrop.
 type RoboCropAction struct {
 	// 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"`
-	ResourceUsage        *ResourceUsage   `protobuf:"bytes,2,opt,name=resource_usage,json=resourceUsage,proto3" json:"resource_usage,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	ScalingActions        []*ScalingAction         `protobuf:"bytes,1,rep,name=scaling_actions,json=scalingActions,proto3" json:"scaling_actions,omitempty"`
+	ResourceUsage         *ResourceUsage           `protobuf:"bytes,2,opt,name=resource_usage,json=resourceUsage,proto3" json:"resource_usage,omitempty"`
+	RegionalResourceUsage []*RegionalResourceUsage `protobuf:"bytes,3,rep,name=regional_resource_usage,json=regionalResourceUsage,proto3" json:"regional_resource_usage,omitempty"`
+	XXX_NoUnkeyedLiteral  struct{}                 `json:"-"`
+	XXX_unrecognized      []byte                   `json:"-"`
+	XXX_sizecache         int32                    `json:"-"`
 }
 
 func (m *RoboCropAction) Reset()         { *m = RoboCropAction{} }
 func (m *RoboCropAction) String() string { return proto.CompactTextString(m) }
 func (*RoboCropAction) ProtoMessage()    {}
 func (*RoboCropAction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_dbe70eabfd64e7ef, []int{6}
+	return fileDescriptor_dbe70eabfd64e7ef, []int{7}
 }
 
 func (m *RoboCropAction) XXX_Unmarshal(b []byte) error {
@@ -779,6 +830,13 @@
 	return nil
 }
 
+func (m *RoboCropAction) GetRegionalResourceUsage() []*RegionalResourceUsage {
+	if m != nil {
+		return m.RegionalResourceUsage
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterEnum("chromiumos.BotPolicy_Mode", BotPolicy_Mode_name, BotPolicy_Mode_value)
 	proto.RegisterEnum("chromiumos.BotPolicy_BotScalingMode", BotPolicy_BotScalingMode_name, BotPolicy_BotScalingMode_value)
@@ -792,70 +850,74 @@
 	proto.RegisterType((*ScalingAction)(nil), "chromiumos.ScalingAction")
 	proto.RegisterType((*ScalingAction_RegionalAction)(nil), "chromiumos.ScalingAction.RegionalAction")
 	proto.RegisterType((*ResourceUsage)(nil), "chromiumos.ResourceUsage")
+	proto.RegisterType((*RegionalResourceUsage)(nil), "chromiumos.RegionalResourceUsage")
 	proto.RegisterType((*RoboCropAction)(nil), "chromiumos.RoboCropAction")
 }
 
 func init() { proto.RegisterFile("chromiumos/bot_scaling.proto", fileDescriptor_dbe70eabfd64e7ef) }
 
 var fileDescriptor_dbe70eabfd64e7ef = []byte{
-	// 944 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xdd, 0x6e, 0xe3, 0x44,
-	0x14, 0x5e, 0x27, 0x4d, 0xd2, 0x9c, 0x34, 0x69, 0x3a, 0x5d, 0x90, 0xb7, 0x80, 0x08, 0x11, 0x88,
-	0x48, 0x48, 0xa9, 0x54, 0x10, 0x20, 0x71, 0x43, 0xf3, 0xd3, 0x6c, 0x04, 0x75, 0xa2, 0x49, 0x23,
-	0x58, 0xb8, 0xb0, 0x6c, 0x67, 0xea, 0x8e, 0xd6, 0xf6, 0x98, 0x19, 0xa7, 0x4b, 0xf6, 0x01, 0x78,
-	0x03, 0x78, 0x0b, 0xde, 0x8a, 0x07, 0x41, 0xf3, 0xe3, 0xe6, 0x77, 0x2f, 0x90, 0xb8, 0xf3, 0xf9,
-	0x66, 0xe6, 0x9b, 0x73, 0xbe, 0xf3, 0x1d, 0x0f, 0x7c, 0x18, 0x3c, 0x70, 0x16, 0xd3, 0x65, 0xcc,
-	0xc4, 0xa5, 0xcf, 0x32, 0x57, 0x04, 0x5e, 0x44, 0x93, 0xb0, 0x9b, 0x72, 0x96, 0x31, 0x04, 0xeb,
-	0xd5, 0xf6, 0x1f, 0x16, 0x54, 0x7a, 0x2c, 0xbb, 0x5b, 0xa5, 0x04, 0xbd, 0x80, 0x63, 0xb5, 0x99,
-	0xbe, 0x25, 0xb6, 0xd5, 0xb2, 0x3a, 0x55, 0x5c, 0xf1, 0x59, 0x36, 0xa3, 0x6f, 0x09, 0x6a, 0x43,
-	0x3d, 0x60, 0x9c, 0x08, 0x37, 0x25, 0xdc, 0xf5, 0x59, 0x66, 0x17, 0x5a, 0x56, 0xa7, 0x84, 0x6b,
-	0x0a, 0x9c, 0x12, 0xde, 0x63, 0x19, 0xfa, 0x18, 0x6a, 0x0f, 0x6c, 0xc9, 0xa3, 0x95, 0x1b, 0x30,
-	0x91, 0xd9, 0xc5, 0x96, 0xd5, 0x29, 0x60, 0xd0, 0x50, 0x9f, 0x89, 0x0c, 0x7d, 0x00, 0xd5, 0x98,
-	0xc4, 0x8c, 0xaf, 0xdc, 0xd0, 0xb7, 0x8f, 0xd4, 0xf2, 0xb1, 0x06, 0x46, 0x7e, 0x7b, 0x0e, 0x67,
-	0xb3, 0x37, 0x1e, 0x8f, 0x69, 0x12, 0x0e, 0x68, 0x4c, 0x12, 0x41, 0x59, 0x82, 0x10, 0x1c, 0x25,
-	0x5e, 0x9c, 0x67, 0xa3, 0xbe, 0xd1, 0x73, 0x28, 0x3d, 0x7a, 0xd1, 0x92, 0xa8, 0x14, 0xaa, 0x58,
-	0x07, 0xe8, 0x7d, 0x28, 0xab, 0x0f, 0x61, 0x17, 0x5b, 0xc5, 0x4e, 0x15, 0x9b, 0xa8, 0xfd, 0x67,
-	0x05, 0xaa, 0x3d, 0x96, 0x4d, 0x59, 0x44, 0x83, 0x95, 0xcc, 0x40, 0x56, 0x18, 0x72, 0xb6, 0x4c,
-	0x0d, 0xa9, 0x2c, 0x79, 0x24, 0x63, 0xd4, 0xd5, 0xe5, 0x67, 0xab, 0x54, 0x73, 0xd7, 0xae, 0xce,
-	0xbb, 0x6b, 0xa5, 0xba, 0x46, 0x25, 0xa5, 0x89, 0x92, 0xeb, 0x15, 0x9c, 0x1b, 0x5d, 0x5d, 0x4e,
-	0x44, 0xc6, 0x69, 0x90, 0x51, 0x96, 0xa8, 0xba, 0x6b, 0x57, 0x9d, 0x9d, 0xa3, 0x3a, 0x81, 0xee,
-	0x4c, 0x1f, 0xc0, 0xeb, 0xfd, 0x18, 0x89, 0x3d, 0x0c, 0xfd, 0x0c, 0xe7, 0x9c, 0x84, 0x94, 0x25,
-	0x9b, 0xcc, 0xc2, 0x3e, 0x6a, 0x15, 0x3b, 0xb5, 0xab, 0xcf, 0x0f, 0x53, 0x63, 0x75, 0x60, 0x8b,
-	0x99, 0xef, 0x42, 0x02, 0x39, 0x70, 0x2e, 0x8c, 0xcc, 0xee, 0x22, 0xd7, 0x59, 0xd8, 0x25, 0xc5,
-	0xfc, 0xd1, 0x26, 0xf3, 0x5e, 0x37, 0x30, 0x12, 0xbb, 0x90, 0x40, 0xdf, 0x41, 0x2d, 0x55, 0xf7,
-	0xbb, 0x31, 0x5b, 0x10, 0xbb, 0xdc, 0xb2, 0x3a, 0x8d, 0xab, 0x8b, 0xc3, 0x19, 0xde, 0xb2, 0x05,
-	0xc1, 0xa0, 0xb7, 0xcb, 0x6f, 0xf4, 0x19, 0x34, 0x22, 0xc6, 0x5e, 0xfb, 0x5e, 0xf0, 0xda, 0x95,
-	0x3e, 0x11, 0x76, 0xa5, 0x65, 0x75, 0xce, 0x70, 0x3d, 0x47, 0x5f, 0x4a, 0x10, 0x8d, 0xe0, 0x24,
-	0x17, 0x5a, 0x5d, 0x72, 0xac, 0x2e, 0xf9, 0xf4, 0xf0, 0x25, 0x3d, 0x96, 0x19, 0x91, 0xd5, 0x75,
-	0x35, 0xb1, 0x0e, 0x2e, 0xfe, 0xb6, 0x00, 0xed, 0x77, 0x40, 0x1a, 0x57, 0x36, 0x3e, 0x20, 0x54,
-	0xae, 0x28, 0x5f, 0x94, 0x30, 0xf8, 0x2c, 0xeb, 0x6b, 0x24, 0xb7, 0xcd, 0x7d, 0xc4, 0x18, 0x37,
-	0xce, 0x97, 0x56, 0xb9, 0x91, 0xb1, 0x9c, 0x9a, 0x98, 0x26, 0x2e, 0x5d, 0x44, 0x44, 0xf5, 0xbe,
-	0x84, 0x2b, 0x31, 0x4d, 0xc6, 0x8b, 0x88, 0xc8, 0x73, 0x22, 0x23, 0xa9, 0x9e, 0xa8, 0x23, 0x7d,
-	0x4e, 0x02, 0x6a, 0xa4, 0x3e, 0x81, 0x13, 0x45, 0xea, 0x45, 0x91, 0x2c, 0xd5, 0x2e, 0xe9, 0x89,
-	0x92, 0xbc, 0x06, 0xba, 0xf8, 0x15, 0xce, 0xf6, 0xba, 0x2a, 0x9d, 0xae, 0xfb, 0x6a, 0x0c, 0x6c,
-	0x22, 0x89, 0xa7, 0x9c, 0xdc, 0xd3, 0xdf, 0xcd, 0x60, 0x98, 0x48, 0xe2, 0x6f, 0x08, 0x0d, 0x1f,
-	0xf2, 0x89, 0x34, 0x51, 0xfb, 0x1b, 0x38, 0x52, 0x4d, 0x68, 0xc2, 0xc9, 0xdc, 0xf9, 0xc1, 0x99,
-	0xfc, 0xe4, 0xb8, 0xb7, 0x93, 0xc1, 0xb0, 0xf9, 0x0c, 0xd5, 0xa1, 0x7a, 0x3b, 0x71, 0xc6, 0x77,
-	0x13, 0x3c, 0x1c, 0x34, 0x2d, 0xd4, 0x00, 0xe8, 0x4f, 0x9c, 0x9b, 0xf1, 0x68, 0x2e, 0xe3, 0x42,
-	0xbb, 0x0f, 0x8d, 0x6d, 0x91, 0x91, 0x0d, 0xcf, 0x73, 0x8a, 0x59, 0xff, 0xfa, 0xc7, 0xb1, 0x33,
-	0xca, 0xa9, 0x6a, 0x50, 0x99, 0xdd, 0x0d, 0xa7, 0x53, 0x45, 0x04, 0x50, 0x1e, 0x0c, 0x6f, 0xaf,
-	0x1d, 0x49, 0xf2, 0x12, 0x4e, 0x9e, 0x7a, 0xd6, 0xbf, 0x0f, 0xd1, 0xb7, 0x5a, 0x0d, 0x65, 0x0e,
-	0x4a, 0x84, 0x6d, 0x29, 0x43, 0xbe, 0x77, 0xb0, 0xc7, 0x4a, 0xa4, 0xa9, 0xd9, 0xd9, 0xfe, 0xa7,
-	0x08, 0x75, 0x93, 0xcc, 0xb5, 0x56, 0xe8, 0x7f, 0x9d, 0xf2, 0x01, 0x80, 0xa7, 0x68, 0x3d, 0xdf,
-	0x34, 0x78, 0xc7, 0x7a, 0x5b, 0x77, 0x77, 0xaf, 0x9f, 0xf6, 0xe2, 0x8d, 0x73, 0xd2, 0xe9, 0x3e,
-	0xcb, 0x84, 0xcb, 0xc9, 0x6f, 0x4b, 0x22, 0x32, 0xb2, 0x30, 0x76, 0xa8, 0x4b, 0x14, 0xe7, 0x20,
-	0x9a, 0x41, 0x53, 0x77, 0xd3, 0x8b, 0x5c, 0xcf, 0x0c, 0xbd, 0x1e, 0xcd, 0xce, 0xbb, 0xaf, 0xc4,
-	0xe6, 0x84, 0x0e, 0xf1, 0x29, 0xdf, 0x8a, 0x05, 0xfa, 0x02, 0xce, 0x88, 0xc8, 0x68, 0xec, 0x65,
-	0x64, 0xe1, 0x0a, 0xef, 0x91, 0x26, 0xa1, 0x50, 0x83, 0x5a, 0xc0, 0xcd, 0xa7, 0x85, 0x99, 0xc6,
-	0x2f, 0x42, 0x68, 0x6c, 0xf3, 0xfd, 0x67, 0xbf, 0xed, 0x97, 0x5a, 0x3c, 0x50, 0x6a, 0xbb, 0x0b,
-	0xb0, 0xd6, 0x0a, 0x9d, 0x42, 0x6d, 0xee, 0xcc, 0xa6, 0xc3, 0xfe, 0xf8, 0x66, 0x3c, 0x1c, 0x34,
-	0x9f, 0xa1, 0x0a, 0x14, 0x5f, 0x0d, 0x67, 0x4d, 0x0b, 0x95, 0xa1, 0xe0, 0x4c, 0x9a, 0x85, 0x36,
-	0x86, 0x3a, 0x26, 0x82, 0x2d, 0x79, 0x40, 0xe6, 0xc2, 0x0b, 0xa5, 0x6f, 0x8b, 0x8f, 0xb1, 0x30,
-	0xd3, 0x2a, 0x3f, 0xe5, 0x6b, 0x11, 0xa4, 0x4b, 0xa1, 0xf2, 0x29, 0x60, 0xf5, 0xbd, 0xfd, 0xe6,
-	0x14, 0x77, 0xde, 0x9c, 0xbf, 0x2c, 0x68, 0x60, 0xe6, 0xb3, 0x3e, 0x67, 0xa9, 0xa9, 0xb6, 0x07,
-	0xa7, 0xf9, 0xbf, 0x26, 0x6f, 0x80, 0xb6, 0xe2, 0x8b, 0x77, 0x36, 0x00, 0x37, 0xc4, 0x66, 0x28,
-	0xd0, 0xf7, 0xd0, 0xe0, 0x26, 0x55, 0x77, 0x29, 0x73, 0x35, 0x46, 0xdb, 0xa2, 0xd8, 0x2a, 0x06,
-	0xd7, 0xf9, 0x66, 0xd8, 0xfb, 0xfa, 0x97, 0xaf, 0x42, 0xf6, 0xb4, 0xbb, 0xcb, 0x78, 0x78, 0xb9,
-	0xf1, 0xa2, 0xd3, 0xe4, 0x9e, 0x7b, 0x97, 0xea, 0x2d, 0xbf, 0x0c, 0xd9, 0xc6, 0x8a, 0x5f, 0x56,
-	0xe0, 0x97, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x60, 0x3d, 0xfc, 0x2c, 0x00, 0x08, 0x00, 0x00,
+	// 983 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xed, 0x6e, 0xe3, 0x44,
+	0x17, 0x5e, 0x27, 0x4d, 0xd3, 0x9c, 0x34, 0x69, 0x3a, 0xdd, 0xbe, 0xaf, 0x5b, 0x40, 0x64, 0x2d,
+	0x10, 0x91, 0x90, 0x52, 0xa9, 0x20, 0x40, 0xe2, 0x0f, 0xcd, 0x47, 0xbb, 0x11, 0xd4, 0x89, 0x26,
+	0xad, 0xa0, 0xf0, 0xc3, 0xb2, 0x9d, 0xa9, 0x3b, 0x5a, 0xdb, 0xe3, 0x9d, 0x71, 0xba, 0x74, 0x2f,
+	0x80, 0x3b, 0xe0, 0x32, 0xb8, 0x2b, 0x6e, 0x80, 0x3b, 0x40, 0xf3, 0xe1, 0x36, 0x5f, 0xfd, 0x81,
+	0xe0, 0xdf, 0x9c, 0x67, 0x66, 0x9e, 0x39, 0xe7, 0x39, 0xcf, 0x89, 0x03, 0x1f, 0x86, 0x77, 0x9c,
+	0x25, 0x74, 0x9e, 0x30, 0x71, 0x12, 0xb0, 0xdc, 0x13, 0xa1, 0x1f, 0xd3, 0x34, 0xea, 0x66, 0x9c,
+	0xe5, 0x0c, 0xc1, 0xd3, 0xae, 0xf3, 0x9b, 0x05, 0xd5, 0x1e, 0xcb, 0xaf, 0x1e, 0x32, 0x82, 0x8e,
+	0x60, 0x47, 0x1d, 0xa6, 0xef, 0x89, 0x6d, 0xb5, 0xad, 0x4e, 0x0d, 0x57, 0x03, 0x96, 0x4f, 0xe9,
+	0x7b, 0x82, 0x1c, 0x68, 0x84, 0x8c, 0x13, 0xe1, 0x65, 0x84, 0x7b, 0x01, 0xcb, 0xed, 0x52, 0xdb,
+	0xea, 0x54, 0x70, 0x5d, 0x81, 0x13, 0xc2, 0x7b, 0x2c, 0x47, 0x1f, 0x43, 0xfd, 0x8e, 0xcd, 0x79,
+	0xfc, 0xe0, 0x85, 0x4c, 0xe4, 0x76, 0xb9, 0x6d, 0x75, 0x4a, 0x18, 0x34, 0xd4, 0x67, 0x22, 0x47,
+	0x1f, 0x40, 0x2d, 0x21, 0x09, 0xe3, 0x0f, 0x5e, 0x14, 0xd8, 0x5b, 0x6a, 0x7b, 0x47, 0x03, 0x17,
+	0x81, 0x73, 0x0d, 0xfb, 0xd3, 0x77, 0x3e, 0x4f, 0x68, 0x1a, 0x0d, 0x68, 0x42, 0x52, 0x41, 0x59,
+	0x8a, 0x10, 0x6c, 0xa5, 0x7e, 0x52, 0x64, 0xa3, 0xd6, 0xe8, 0x25, 0x54, 0xee, 0xfd, 0x78, 0x4e,
+	0x54, 0x0a, 0x35, 0xac, 0x03, 0xf4, 0x3f, 0xd8, 0x56, 0x0b, 0x61, 0x97, 0xdb, 0xe5, 0x4e, 0x0d,
+	0x9b, 0xc8, 0xf9, 0xbd, 0x0a, 0xb5, 0x1e, 0xcb, 0x27, 0x2c, 0xa6, 0xe1, 0x83, 0xcc, 0x40, 0x56,
+	0x18, 0x71, 0x36, 0xcf, 0x0c, 0xa9, 0x2c, 0xf9, 0x42, 0xc6, 0xa8, 0xab, 0xcb, 0xcf, 0x1f, 0x32,
+	0xcd, 0x5d, 0x3f, 0x3d, 0xe8, 0x3e, 0x29, 0xd5, 0x35, 0x2a, 0x29, 0x4d, 0x94, 0x5c, 0x37, 0x70,
+	0x60, 0x74, 0xf5, 0x38, 0x11, 0x39, 0xa7, 0x61, 0x4e, 0x59, 0xaa, 0xea, 0xae, 0x9f, 0x76, 0x56,
+	0xae, 0xea, 0x04, 0xba, 0x53, 0x7d, 0x01, 0x3f, 0x9d, 0xc7, 0x48, 0xac, 0x61, 0xe8, 0x27, 0x38,
+	0xe0, 0x24, 0xa2, 0x2c, 0x5d, 0x64, 0x16, 0xf6, 0x56, 0xbb, 0xdc, 0xa9, 0x9f, 0x7e, 0xb6, 0x99,
+	0x1a, 0xab, 0x0b, 0x4b, 0xcc, 0x7c, 0x15, 0x12, 0xc8, 0x85, 0x03, 0x61, 0x64, 0xf6, 0x66, 0x85,
+	0xce, 0xc2, 0xae, 0x28, 0xe6, 0x8f, 0x16, 0x99, 0xd7, 0xba, 0x81, 0x91, 0x58, 0x85, 0x04, 0xfa,
+	0x16, 0xea, 0x99, 0x7a, 0xdf, 0x4b, 0xd8, 0x8c, 0xd8, 0xdb, 0x6d, 0xab, 0xd3, 0x3c, 0x3d, 0xde,
+	0x9c, 0xe1, 0x25, 0x9b, 0x11, 0x0c, 0xfa, 0xb8, 0x5c, 0xa3, 0x4f, 0xa1, 0x19, 0x33, 0xf6, 0x26,
+	0xf0, 0xc3, 0x37, 0x9e, 0xf4, 0x89, 0xb0, 0xab, 0x6d, 0xab, 0xb3, 0x8f, 0x1b, 0x05, 0xfa, 0x5a,
+	0x82, 0xe8, 0x02, 0x76, 0x0b, 0xa1, 0xd5, 0x23, 0x3b, 0xea, 0x91, 0x4f, 0x36, 0x3f, 0xd2, 0x63,
+	0xb9, 0x11, 0x59, 0x3d, 0x57, 0x17, 0x4f, 0xc1, 0xf1, 0x1f, 0x16, 0xa0, 0xf5, 0x0e, 0x48, 0xe3,
+	0xca, 0xc6, 0x87, 0x84, 0xca, 0x1d, 0xe5, 0x8b, 0x0a, 0x86, 0x80, 0xe5, 0x7d, 0x8d, 0x14, 0xb6,
+	0xb9, 0x8d, 0x19, 0xe3, 0xc6, 0xf9, 0xd2, 0x2a, 0xe7, 0x32, 0x96, 0x53, 0x93, 0xd0, 0xd4, 0xa3,
+	0xb3, 0x98, 0xa8, 0xde, 0x57, 0x70, 0x35, 0xa1, 0xe9, 0x68, 0x16, 0x13, 0x79, 0x4f, 0xe4, 0x24,
+	0xd3, 0x13, 0xb5, 0xa5, 0xef, 0x49, 0x40, 0x8d, 0xd4, 0x2b, 0xd8, 0x55, 0xa4, 0x7e, 0x1c, 0xcb,
+	0x52, 0xed, 0x8a, 0x9e, 0x28, 0xc9, 0x6b, 0xa0, 0xe3, 0x5f, 0x60, 0x7f, 0xad, 0xab, 0xd2, 0xe9,
+	0xba, 0xaf, 0xc6, 0xc0, 0x26, 0x92, 0x78, 0xc6, 0xc9, 0x2d, 0xfd, 0xd5, 0x0c, 0x86, 0x89, 0x24,
+	0xfe, 0x8e, 0xd0, 0xe8, 0xae, 0x98, 0x48, 0x13, 0x39, 0x5f, 0xc3, 0x96, 0x6a, 0x42, 0x0b, 0x76,
+	0xaf, 0xdd, 0xef, 0xdd, 0xf1, 0x8f, 0xae, 0x77, 0x39, 0x1e, 0x0c, 0x5b, 0x2f, 0x50, 0x03, 0x6a,
+	0x97, 0x63, 0x77, 0x74, 0x35, 0xc6, 0xc3, 0x41, 0xcb, 0x42, 0x4d, 0x80, 0xfe, 0xd8, 0x3d, 0x1f,
+	0x5d, 0x5c, 0xcb, 0xb8, 0xe4, 0xf4, 0xa1, 0xb9, 0x2c, 0x32, 0xb2, 0xe1, 0x65, 0x41, 0x31, 0xed,
+	0x9f, 0xfd, 0x30, 0x72, 0x2f, 0x0a, 0xaa, 0x3a, 0x54, 0xa7, 0x57, 0xc3, 0xc9, 0x44, 0x11, 0x01,
+	0x6c, 0x0f, 0x86, 0x97, 0x67, 0xae, 0x24, 0x79, 0x0d, 0xbb, 0x8f, 0x3d, 0xeb, 0xdf, 0x46, 0xe8,
+	0x1b, 0xad, 0x86, 0x32, 0x07, 0x25, 0xc2, 0xb6, 0x94, 0x21, 0x0f, 0x37, 0xf6, 0x58, 0x89, 0x34,
+	0x31, 0x27, 0x9d, 0x3f, 0xcb, 0xd0, 0x30, 0xc9, 0x9c, 0x69, 0x85, 0xfe, 0xd3, 0x29, 0x1f, 0x00,
+	0xf8, 0x8a, 0xd6, 0x0f, 0x4c, 0x83, 0x57, 0xac, 0xb7, 0xf4, 0x76, 0xf7, 0xec, 0xf1, 0x2c, 0x5e,
+	0xb8, 0x27, 0x9d, 0x1e, 0xb0, 0x5c, 0x78, 0x9c, 0xbc, 0x9d, 0x13, 0x91, 0x93, 0x99, 0xb1, 0x43,
+	0x43, 0xa2, 0xb8, 0x00, 0xd1, 0x14, 0x5a, 0xba, 0x9b, 0x7e, 0xec, 0xf9, 0x66, 0xe8, 0xf5, 0x68,
+	0x76, 0x9e, 0x7f, 0x12, 0x9b, 0x1b, 0x3a, 0xc4, 0x7b, 0x7c, 0x29, 0x16, 0xe8, 0x73, 0xd8, 0x27,
+	0x22, 0xa7, 0x89, 0x9f, 0x93, 0x99, 0x27, 0xfc, 0x7b, 0x9a, 0x46, 0x42, 0x0d, 0x6a, 0x09, 0xb7,
+	0x1e, 0x37, 0xa6, 0x1a, 0x3f, 0x8e, 0xa0, 0xb9, 0xcc, 0xf7, 0x8f, 0xfd, 0xb6, 0x5e, 0x6a, 0x79,
+	0x43, 0xa9, 0x4e, 0x17, 0xe0, 0x49, 0x2b, 0xb4, 0x07, 0xf5, 0x6b, 0x77, 0x3a, 0x19, 0xf6, 0x47,
+	0xe7, 0xa3, 0xe1, 0xa0, 0xf5, 0x02, 0x55, 0xa1, 0x7c, 0x33, 0x9c, 0xb6, 0x2c, 0xb4, 0x0d, 0x25,
+	0x77, 0xdc, 0x2a, 0x39, 0x18, 0x1a, 0x98, 0x08, 0x36, 0xe7, 0x21, 0xb9, 0x16, 0x7e, 0x24, 0x7d,
+	0x5b, 0xbe, 0x4f, 0x84, 0x99, 0x56, 0xb9, 0x94, 0x5f, 0x8b, 0x30, 0x9b, 0x0b, 0x95, 0x4f, 0x09,
+	0xab, 0xf5, 0xf2, 0x37, 0xa7, 0xbc, 0xf2, 0xcd, 0x79, 0x0b, 0x87, 0x45, 0xb1, 0xcb, 0xdc, 0xcf,
+	0xd5, 0xfc, 0x1d, 0x34, 0xb9, 0x39, 0xe8, 0xcd, 0xe5, 0x49, 0x63, 0xa1, 0xa3, 0xc5, 0xee, 0x2c,
+	0x51, 0xe1, 0x06, 0x5f, 0x0c, 0x9d, 0xbf, 0x2c, 0x68, 0x62, 0x16, 0xb0, 0x3e, 0x67, 0x99, 0x11,
+	0xb8, 0x07, 0x7b, 0xc5, 0xcf, 0x5b, 0xd1, 0x73, 0xed, 0xfe, 0xa3, 0x67, 0x7b, 0x8e, 0x9b, 0x62,
+	0x31, 0x14, 0xff, 0x3e, 0x31, 0x74, 0x03, 0xff, 0x7f, 0xb4, 0xde, 0x0a, 0x55, 0x59, 0x65, 0xf3,
+	0x6a, 0x99, 0x6a, 0x83, 0x6c, 0xf8, 0x90, 0x6f, 0x82, 0x7b, 0x5f, 0xfd, 0xfc, 0x65, 0xc4, 0x1e,
+	0x6f, 0x77, 0x19, 0x8f, 0x4e, 0x16, 0xfe, 0x9f, 0xd0, 0xf4, 0x96, 0xfb, 0x27, 0xea, 0x9f, 0xc9,
+	0x49, 0xc4, 0x16, 0x76, 0x82, 0x6d, 0x05, 0x7e, 0xf1, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13,
+	0x77, 0x56, 0x84, 0xce, 0x08, 0x00, 0x00,
 }
diff --git a/src/chromiumos/bot_scaling.proto b/src/chromiumos/bot_scaling.proto
index 14fe205..50249e6 100644
--- a/src/chromiumos/bot_scaling.proto
+++ b/src/chromiumos/bot_scaling.proto
@@ -154,9 +154,18 @@
   float memory_gb = 3;
 }
 
+// ResourceUsage for each region that bots are deployed.
+message RegionalResourceUsage {
+  // Region of the bot sub-group.
+  string region = 1;
+  // ResourceUsage message type
+  ResourceUsage resource_usage = 2;
+}
+
 // All the actions that will be executed by RoboCrop.
 message RoboCropAction {
   // List of an action per bot group scaled by RoboCrop.
   repeated ScalingAction scaling_actions = 1;
   ResourceUsage resource_usage = 2;
+  repeated RegionalResourceUsage regional_resource_usage = 3;
 }
\ No newline at end of file