skylab_inventory: Add skylab_suite_proxy type to atest server.

BUG=None
TEST=None

Change-Id: I3dbdddd719f5b43630f1d1dc5e30810b4c263e4a
Reviewed-on: https://chromium-review.googlesource.com/1171943
Commit-Ready: Xixuan Wu <xixuan@chromium.org>
Tested-by: Xixuan Wu <xixuan@chromium.org>
Reviewed-by: Xixuan Wu <xixuan@chromium.org>
diff --git a/go/src/chromiumos/infra/skylab/inventory/protos/server.pb.go b/go/src/chromiumos/infra/skylab/inventory/protos/server.pb.go
index 6b496c6..9cd4b25 100644
--- a/go/src/chromiumos/infra/skylab/inventory/protos/server.pb.go
+++ b/go/src/chromiumos/infra/skylab/inventory/protos/server.pb.go
@@ -58,20 +58,21 @@
 type Server_Role int32
 
 const (
-	Server_ROLE_INVALID         Server_Role = 0
-	Server_ROLE_AFE             Server_Role = 1
-	Server_ROLE_CRASH_SERVER    Server_Role = 2
-	Server_ROLE_DATABASE        Server_Role = 3
-	Server_ROLE_DATABASE_SLAVE  Server_Role = 4
-	Server_ROLE_DEVSERVER       Server_Role = 5
-	Server_ROLE_DRONE           Server_Role = 6
-	Server_ROLE_GOLO_PROXY      Server_Role = 7
-	Server_ROLE_HOST_SCHEDULER  Server_Role = 8
-	Server_ROLE_SCHEDULER       Server_Role = 9
-	Server_ROLE_SENTINEL        Server_Role = 10
-	Server_ROLE_SHARD           Server_Role = 11
-	Server_ROLE_SUITE_SCHEDULER Server_Role = 12
-	Server_ROLE_SKYLAB_DRONE    Server_Role = 13
+	Server_ROLE_INVALID            Server_Role = 0
+	Server_ROLE_AFE                Server_Role = 1
+	Server_ROLE_CRASH_SERVER       Server_Role = 2
+	Server_ROLE_DATABASE           Server_Role = 3
+	Server_ROLE_DATABASE_SLAVE     Server_Role = 4
+	Server_ROLE_DEVSERVER          Server_Role = 5
+	Server_ROLE_DRONE              Server_Role = 6
+	Server_ROLE_GOLO_PROXY         Server_Role = 7
+	Server_ROLE_HOST_SCHEDULER     Server_Role = 8
+	Server_ROLE_SCHEDULER          Server_Role = 9
+	Server_ROLE_SENTINEL           Server_Role = 10
+	Server_ROLE_SHARD              Server_Role = 11
+	Server_ROLE_SUITE_SCHEDULER    Server_Role = 12
+	Server_ROLE_SKYLAB_DRONE       Server_Role = 13
+	Server_ROLE_SKYLAB_SUITE_PROXY Server_Role = 14
 )
 
 var Server_Role_name = map[int32]string{
@@ -89,22 +90,24 @@
 	11: "ROLE_SHARD",
 	12: "ROLE_SUITE_SCHEDULER",
 	13: "ROLE_SKYLAB_DRONE",
+	14: "ROLE_SKYLAB_SUITE_PROXY",
 }
 var Server_Role_value = map[string]int32{
-	"ROLE_INVALID":         0,
-	"ROLE_AFE":             1,
-	"ROLE_CRASH_SERVER":    2,
-	"ROLE_DATABASE":        3,
-	"ROLE_DATABASE_SLAVE":  4,
-	"ROLE_DEVSERVER":       5,
-	"ROLE_DRONE":           6,
-	"ROLE_GOLO_PROXY":      7,
-	"ROLE_HOST_SCHEDULER":  8,
-	"ROLE_SCHEDULER":       9,
-	"ROLE_SENTINEL":        10,
-	"ROLE_SHARD":           11,
-	"ROLE_SUITE_SCHEDULER": 12,
-	"ROLE_SKYLAB_DRONE":    13,
+	"ROLE_INVALID":            0,
+	"ROLE_AFE":                1,
+	"ROLE_CRASH_SERVER":       2,
+	"ROLE_DATABASE":           3,
+	"ROLE_DATABASE_SLAVE":     4,
+	"ROLE_DEVSERVER":          5,
+	"ROLE_DRONE":              6,
+	"ROLE_GOLO_PROXY":         7,
+	"ROLE_HOST_SCHEDULER":     8,
+	"ROLE_SCHEDULER":          9,
+	"ROLE_SENTINEL":           10,
+	"ROLE_SHARD":              11,
+	"ROLE_SUITE_SCHEDULER":    12,
+	"ROLE_SKYLAB_DRONE":       13,
+	"ROLE_SKYLAB_SUITE_PROXY": 14,
 }
 
 func (x Server_Role) Enum() *Server_Role {
@@ -264,43 +267,44 @@
 func init() { proto.RegisterFile("server.proto", fileDescriptor4) }
 
 var fileDescriptor4 = []byte{
-	// 606 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x5f, 0x6f, 0xda, 0x3a,
-	0x14, 0xc0, 0x2f, 0xe1, 0x4f, 0xe1, 0x14, 0xa8, 0xeb, 0xf6, 0xde, 0x9b, 0xf6, 0xbe, 0x20, 0xae,
-	0x36, 0xf1, 0x30, 0xf1, 0xd0, 0xa7, 0x4d, 0x93, 0x26, 0xb9, 0xc5, 0x1b, 0x51, 0x19, 0x61, 0x36,
-	0xa0, 0x56, 0x7b, 0x88, 0x52, 0xe2, 0xa9, 0xd1, 0x48, 0xcc, 0x6c, 0x83, 0xda, 0xcf, 0xb3, 0x0f,
-	0xb4, 0x7d, 0xa4, 0x09, 0x27, 0x0b, 0xec, 0x91, 0xa7, 0xe8, 0xfc, 0x7c, 0xce, 0xcf, 0xe7, 0xd8,
-	0x31, 0x34, 0xb5, 0x50, 0x1b, 0xa1, 0xfa, 0x2b, 0x25, 0x8d, 0xc4, 0xaf, 0x16, 0x8f, 0x4a, 0x26,
-	0xa2, 0x9f, 0x7d, 0xa4, 0x0e, 0xe2, 0xf4, 0x8b, 0x0a, 0xfb, 0xfa, 0xeb, 0xf3, 0x32, 0x7c, 0xc8,
-	0x72, 0xfa, 0x71, 0xba, 0x11, 0xa9, 0x91, 0xea, 0xf9, 0xb2, 0xb9, 0x90, 0x49, 0x22, 0xd3, 0x8c,
-	0x77, 0x7f, 0xd4, 0xa0, 0xc6, 0xad, 0x0c, 0x5f, 0x42, 0xfd, 0x51, 0x6a, 0x93, 0x86, 0x89, 0x70,
-	0x4b, 0x1d, 0xa7, 0xd7, 0x60, 0x45, 0x8c, 0xcf, 0xa1, 0xba, 0xb0, 0x0b, 0x4e, 0xa7, 0xd4, 0x6b,
-	0xb0, 0x2c, 0xc0, 0x9f, 0xe1, 0x58, 0xa4, 0x9b, 0x58, 0xc9, 0x34, 0x11, 0xa9, 0x71, 0xcb, 0x1d,
-	0xa7, 0xd7, 0xbe, 0x7a, 0xd3, 0x3f, 0xa4, 0x9d, 0x3e, 0xdd, 0x09, 0xd8, 0xbe, 0x0d, 0x73, 0xa8,
-	0x69, 0x13, 0x9a, 0xb5, 0x76, 0x2b, 0xd6, 0xfb, 0xf6, 0x30, 0x6f, 0x36, 0x54, 0x9f, 0x5b, 0x05,
-	0xcb, 0x55, 0xd8, 0x87, 0xaa, 0x92, 0x4b, 0xa1, 0xdd, 0x6a, 0xa7, 0x7c, 0x78, 0xaf, 0xb9, 0x93,
-	0xc9, 0xa5, 0x60, 0x99, 0x07, 0xdf, 0x01, 0x84, 0xc6, 0xa8, 0xf8, 0x61, 0x6d, 0x84, 0x76, 0x6b,
-	0x9d, 0x52, 0xef, 0xf8, 0xea, 0xf5, 0x61, 0x56, 0x52, 0xd4, 0xb3, 0x3d, 0xd7, 0xf6, 0xc8, 0x53,
-	0xb9, 0x95, 0x1e, 0x65, 0x47, 0x6e, 0x03, 0x7c, 0x01, 0xf5, 0x68, 0x6d, 0x82, 0x75, 0x1c, 0x69,
-	0xb7, 0xde, 0x29, 0xf7, 0x1a, 0xec, 0x28, 0x5a, 0x9b, 0x59, 0x1c, 0xe9, 0x6e, 0x00, 0xb5, 0x6c,
-	0x5a, 0x8c, 0xa1, 0xcd, 0xa7, 0x64, 0x3a, 0xe3, 0x81, 0x37, 0x9e, 0x93, 0x91, 0x37, 0x40, 0x7f,
-	0xed, 0xb1, 0x09, 0xf3, 0x3e, 0x12, 0x76, 0x8f, 0x4a, 0xf8, 0x14, 0x5a, 0x39, 0xbb, 0x26, 0x37,
-	0xb7, 0xb3, 0x09, 0x72, 0xf0, 0x25, 0xfc, 0x93, 0x23, 0x46, 0x27, 0xc4, 0x63, 0x01, 0xa3, 0x9f,
-	0x66, 0x1e, 0xa3, 0x03, 0x54, 0xee, 0x7e, 0x77, 0xa0, 0xb2, 0x9d, 0x1d, 0x23, 0x68, 0x32, 0x7f,
-	0x44, 0xf7, 0xec, 0x4d, 0xa8, 0x5b, 0x42, 0xde, 0x53, 0x54, 0xc2, 0x7f, 0xc3, 0xa9, 0x8d, 0x6e,
-	0x18, 0xe1, 0xc3, 0x80, 0x53, 0x36, 0xa7, 0x0c, 0x39, 0xdb, 0xed, 0x2c, 0x1e, 0x90, 0x29, 0xb9,
-	0x26, 0x9c, 0xa2, 0x32, 0xfe, 0x17, 0xce, 0xfe, 0x40, 0x01, 0x1f, 0x91, 0x39, 0x45, 0x95, 0x6d,
-	0xbb, 0xd9, 0x02, 0x9d, 0xe7, 0xf5, 0x55, 0xdc, 0x06, 0xc8, 0x18, 0xf3, 0xc7, 0x14, 0xd5, 0xf0,
-	0x19, 0x9c, 0xd8, 0xf8, 0x83, 0x3f, 0xf2, 0x83, 0x09, 0xf3, 0xef, 0xee, 0xd1, 0x51, 0x61, 0x1c,
-	0xfa, 0x7c, 0x1a, 0xf0, 0x9b, 0x21, 0x1d, 0xcc, 0x46, 0x94, 0xa1, 0x7a, 0x61, 0xdc, 0xb1, 0x46,
-	0xd1, 0x11, 0xa7, 0xe3, 0xa9, 0x37, 0xa6, 0x23, 0x04, 0xc5, 0x26, 0x7c, 0x48, 0xd8, 0x00, 0x1d,
-	0x63, 0x17, 0xce, 0xb3, 0x78, 0xe6, 0x4d, 0xf7, 0x8b, 0x9b, 0xc5, 0x94, 0xfc, 0xf6, 0x7e, 0x44,
-	0xae, 0xf3, 0xae, 0x5a, 0xdd, 0x9f, 0x25, 0x80, 0xdd, 0x95, 0xe2, 0x36, 0x38, 0xf1, 0xca, 0x2d,
-	0xd9, 0x3b, 0x74, 0xe2, 0x15, 0xfe, 0x1f, 0x5a, 0x49, 0xf8, 0x14, 0xac, 0x94, 0x5c, 0x08, 0xad,
-	0x85, 0xb6, 0x2f, 0xaa, 0xca, 0x9a, 0x49, 0xf8, 0x34, 0xf9, 0xcd, 0xf0, 0x4b, 0x38, 0x49, 0x9e,
-	0xf5, 0xb7, 0x65, 0x90, 0xbd, 0xf3, 0x20, 0x8e, 0xdc, 0xb2, 0x35, 0xb4, 0x2c, 0xce, 0xfe, 0x43,
-	0x2f, 0xc2, 0xef, 0xe0, 0xbf, 0x48, 0x6c, 0xf2, 0x24, 0x25, 0xb4, 0x51, 0xf1, 0xc2, 0x88, 0x28,
-	0xd0, 0xeb, 0x87, 0x54, 0x18, 0xb7, 0x62, 0x6b, 0x2e, 0x8a, 0x14, 0x56, 0x64, 0x70, 0x9b, 0x80,
-	0x5f, 0x40, 0x7b, 0x57, 0xbf, 0x92, 0xca, 0xb8, 0x55, 0xdb, 0x4d, 0xab, 0xa0, 0x13, 0xa9, 0xcc,
-	0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6f, 0x61, 0x31, 0xb7, 0x6f, 0x04, 0x00, 0x00,
+	// 616 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdf, 0x6e, 0xda, 0x3c,
+	0x14, 0xc0, 0x3f, 0xc2, 0x9f, 0xc2, 0x29, 0x50, 0xd7, 0xed, 0xb7, 0xa6, 0xed, 0x0d, 0x62, 0xda,
+	0xc4, 0xc5, 0xc4, 0x45, 0xaf, 0x36, 0x4d, 0x9a, 0xe4, 0x16, 0x6f, 0x44, 0x65, 0xc0, 0x6c, 0x40,
+	0xad, 0x76, 0x11, 0x51, 0xe2, 0xa9, 0xd1, 0x48, 0xcc, 0x6c, 0x83, 0xda, 0xb7, 0xdb, 0x23, 0xec,
+	0x41, 0xf6, 0x10, 0x13, 0x36, 0x0b, 0xec, 0x92, 0xab, 0xe8, 0xfc, 0x7c, 0xce, 0xcf, 0xe7, 0xd8,
+	0x49, 0xa0, 0xaa, 0x85, 0x5a, 0x09, 0xd5, 0x5e, 0x28, 0x69, 0x24, 0x7e, 0x33, 0x7b, 0x54, 0x32,
+	0x11, 0x6d, 0xf7, 0x90, 0x3a, 0x8c, 0xd3, 0x6f, 0x6a, 0xda, 0xd6, 0xdf, 0x9f, 0xe7, 0xd3, 0x07,
+	0x97, 0xd3, 0x8e, 0xd3, 0x95, 0x48, 0x8d, 0x54, 0xcf, 0x17, 0xd5, 0x99, 0x4c, 0x12, 0x99, 0x3a,
+	0xde, 0xfc, 0x5d, 0x82, 0x12, 0xb7, 0x32, 0x7c, 0x01, 0xe5, 0x47, 0xa9, 0x4d, 0x3a, 0x4d, 0x84,
+	0x9f, 0x6b, 0x78, 0xad, 0x0a, 0xcb, 0x62, 0x7c, 0x0a, 0xc5, 0x99, 0x5d, 0xf0, 0x1a, 0xb9, 0x56,
+	0x85, 0xb9, 0x00, 0x7f, 0x85, 0x43, 0x91, 0xae, 0x62, 0x25, 0xd3, 0x44, 0xa4, 0xc6, 0xcf, 0x37,
+	0xbc, 0x56, 0xfd, 0xea, 0x5d, 0x7b, 0x9f, 0x76, 0xda, 0x74, 0x2b, 0x60, 0xbb, 0x36, 0xcc, 0xa1,
+	0xa4, 0xcd, 0xd4, 0x2c, 0xb5, 0x5f, 0xb0, 0xde, 0xf7, 0xfb, 0x79, 0xdd, 0x50, 0x6d, 0x6e, 0x15,
+	0x6c, 0xa3, 0xc2, 0x03, 0x28, 0x2a, 0x39, 0x17, 0xda, 0x2f, 0x36, 0xf2, 0xfb, 0xf7, 0xba, 0x71,
+	0x32, 0x39, 0x17, 0xcc, 0x79, 0xf0, 0x1d, 0xc0, 0xd4, 0x18, 0x15, 0x3f, 0x2c, 0x8d, 0xd0, 0x7e,
+	0xa9, 0x91, 0x6b, 0x1d, 0x5e, 0xbd, 0xdd, 0xcf, 0x4a, 0xb2, 0x7a, 0xb6, 0xe3, 0x5a, 0x1f, 0x79,
+	0x2a, 0xd7, 0xd2, 0x03, 0x77, 0xe4, 0x36, 0xc0, 0xe7, 0x50, 0x8e, 0x96, 0x26, 0x5c, 0xc6, 0x91,
+	0xf6, 0xcb, 0x8d, 0x7c, 0xab, 0xc2, 0x0e, 0xa2, 0xa5, 0x19, 0xc7, 0x91, 0x6e, 0x86, 0x50, 0x72,
+	0xd3, 0x62, 0x0c, 0x75, 0x3e, 0x22, 0xa3, 0x31, 0x0f, 0x83, 0xfe, 0x84, 0xf4, 0x82, 0x0e, 0xfa,
+	0x6f, 0x87, 0x0d, 0x59, 0xf0, 0x99, 0xb0, 0x7b, 0x94, 0xc3, 0xc7, 0x50, 0xdb, 0xb0, 0x6b, 0x72,
+	0x73, 0x3b, 0x1e, 0x22, 0x0f, 0x5f, 0xc0, 0x8b, 0x0d, 0x62, 0x74, 0x48, 0x02, 0x16, 0x32, 0xfa,
+	0x65, 0x1c, 0x30, 0xda, 0x41, 0xf9, 0xe6, 0x4f, 0x0f, 0x0a, 0xeb, 0xd9, 0x31, 0x82, 0x2a, 0x1b,
+	0xf4, 0xe8, 0x8e, 0xbd, 0x0a, 0x65, 0x4b, 0xc8, 0x47, 0x8a, 0x72, 0xf8, 0x7f, 0x38, 0xb6, 0xd1,
+	0x0d, 0x23, 0xbc, 0x1b, 0x72, 0xca, 0x26, 0x94, 0x21, 0x6f, 0xbd, 0x9d, 0xc5, 0x1d, 0x32, 0x22,
+	0xd7, 0x84, 0x53, 0x94, 0xc7, 0x67, 0x70, 0xf2, 0x0f, 0x0a, 0x79, 0x8f, 0x4c, 0x28, 0x2a, 0xac,
+	0xdb, 0x75, 0x0b, 0x74, 0xb2, 0xa9, 0x2f, 0xe2, 0x3a, 0x80, 0x63, 0x6c, 0xd0, 0xa7, 0xa8, 0x84,
+	0x4f, 0xe0, 0xc8, 0xc6, 0x9f, 0x06, 0xbd, 0x41, 0x38, 0x64, 0x83, 0xbb, 0x7b, 0x74, 0x90, 0x19,
+	0xbb, 0x03, 0x3e, 0x0a, 0xf9, 0x4d, 0x97, 0x76, 0xc6, 0x3d, 0xca, 0x50, 0x39, 0x33, 0x6e, 0x59,
+	0x25, 0xeb, 0x88, 0xd3, 0xfe, 0x28, 0xe8, 0xd3, 0x1e, 0x82, 0x6c, 0x13, 0xde, 0x25, 0xac, 0x83,
+	0x0e, 0xb1, 0x0f, 0xa7, 0x2e, 0x1e, 0x07, 0xa3, 0xdd, 0xe2, 0x6a, 0x36, 0x25, 0xbf, 0xbd, 0xef,
+	0x91, 0xeb, 0x4d, 0x57, 0x35, 0x7c, 0x09, 0x67, 0xbb, 0xd8, 0xd5, 0xb9, 0xee, 0xea, 0xcd, 0x5f,
+	0x39, 0x80, 0xed, 0x7d, 0xe3, 0x3a, 0x78, 0xf1, 0xc2, 0xcf, 0xd9, 0x0b, 0xf6, 0xe2, 0x05, 0x7e,
+	0x09, 0xb5, 0x64, 0xfa, 0x14, 0x2e, 0x94, 0x9c, 0x09, 0xad, 0x85, 0xb6, 0x9f, 0x5b, 0x91, 0x55,
+	0x93, 0xe9, 0xd3, 0xf0, 0x2f, 0xc3, 0xaf, 0xe1, 0x28, 0x79, 0xd6, 0x3f, 0xe6, 0xa1, 0xfb, 0x09,
+	0x84, 0x71, 0xe4, 0xe7, 0xad, 0xa1, 0x66, 0xb1, 0x7b, 0x49, 0x83, 0x08, 0x7f, 0x80, 0xcb, 0x48,
+	0xac, 0x36, 0x49, 0x4a, 0x68, 0xa3, 0xe2, 0x99, 0x11, 0x51, 0xa8, 0x97, 0x0f, 0xa9, 0x30, 0x7e,
+	0xc1, 0xd6, 0x9c, 0x67, 0x29, 0x2c, 0xcb, 0xe0, 0x36, 0x01, 0xbf, 0x82, 0xfa, 0xb6, 0x7e, 0x21,
+	0x95, 0xf1, 0x8b, 0xb6, 0x9b, 0x5a, 0x46, 0x87, 0x52, 0x99, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff,
+	0x00, 0x98, 0x27, 0x23, 0x8c, 0x04, 0x00, 0x00,
 }
diff --git a/protos/server.proto b/protos/server.proto
index d181904..1bd562b 100644
--- a/protos/server.proto
+++ b/protos/server.proto
@@ -40,6 +40,7 @@
     ROLE_SHARD = 11;
     ROLE_SUITE_SCHEDULER = 12;
     ROLE_SKYLAB_DRONE = 13;
+    ROLE_SKYLAB_SUITE_PROXY = 14;
   }
   repeated Role roles = 5;
 
diff --git a/venv/skylab_inventory/protos/common_pb2.py b/venv/skylab_inventory/protos/common_pb2.py
index 69fa29a..0719561 100644
--- a/venv/skylab_inventory/protos/common_pb2.py
+++ b/venv/skylab_inventory/protos/common_pb2.py
@@ -22,7 +22,6 @@
   syntax='proto2',
   serialized_pb=_b('\n\x0c\x63ommon.proto\x12,chrome.chromeos_infra.skylab.proto.inventory\"+\n\tTimestamp\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05*q\n\x0b\x45nvironment\x12\x17\n\x13\x45NVIRONMENT_INVALID\x10\x00\x12\x14\n\x10\x45NVIRONMENT_PROD\x10\x01\x12\x17\n\x13\x45NVIRONMENT_STAGING\x10\x02\x12\x1a\n\x12\x45NVIRONMENT_SKYLAB\x10\x03\x1a\x02\x08\x01')
 )
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 _ENVIRONMENT = _descriptor.EnumDescriptor(
   name='Environment',
@@ -101,6 +100,7 @@
 
 DESCRIPTOR.message_types_by_name['Timestamp'] = _TIMESTAMP
 DESCRIPTOR.enum_types_by_name['Environment'] = _ENVIRONMENT
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Timestamp = _reflection.GeneratedProtocolMessageType('Timestamp', (_message.Message,), dict(
   DESCRIPTOR = _TIMESTAMP,
diff --git a/venv/skylab_inventory/protos/connection_pb2.py b/venv/skylab_inventory/protos/connection_pb2.py
index f284432..d71bea3 100644
--- a/venv/skylab_inventory/protos/connection_pb2.py
+++ b/venv/skylab_inventory/protos/connection_pb2.py
@@ -23,7 +23,6 @@
   serialized_pb=_b('\n\x10\x63onnection.proto\x12,chrome.chromeos_infra.skylab.proto.inventory\x1a\x0c\x64\x65vice.proto\"f\n\x13ServoHostConnection\x12\x15\n\rservo_host_id\x18\x01 \x02(\t\x12\x0e\n\x06\x64ut_id\x18\x02 \x02(\t\x12\x12\n\nservo_port\x18\x03 \x02(\x05\x12\x14\n\x0cservo_serial\x18\x04 \x01(\t\"\xb8\x01\n\x13\x43hameleonConnection\x12P\n\tchameleon\x18\x01 \x02(\x0b\x32=.chrome.chromeos_infra.skylab.proto.inventory.ChameleonDevice\x12O\n\x11\x63ontrolled_device\x18\x02 \x02(\x0b\x32\x34.chrome.chromeos_infra.skylab.proto.inventory.Device')
   ,
   dependencies=[device__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
 
@@ -121,6 +120,7 @@
 _CHAMELEONCONNECTION.fields_by_name['controlled_device'].message_type = device__pb2._DEVICE
 DESCRIPTOR.message_types_by_name['ServoHostConnection'] = _SERVOHOSTCONNECTION
 DESCRIPTOR.message_types_by_name['ChameleonConnection'] = _CHAMELEONCONNECTION
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 ServoHostConnection = _reflection.GeneratedProtocolMessageType('ServoHostConnection', (_message.Message,), dict(
   DESCRIPTOR = _SERVOHOSTCONNECTION,
diff --git a/venv/skylab_inventory/protos/device_pb2.py b/venv/skylab_inventory/protos/device_pb2.py
index 258c6fa..cd03c3d 100644
--- a/venv/skylab_inventory/protos/device_pb2.py
+++ b/venv/skylab_inventory/protos/device_pb2.py
@@ -23,7 +23,6 @@
   serialized_pb=_b('\n\x0c\x64\x65vice.proto\x12,chrome.chromeos_infra.skylab.proto.inventory\x1a\x0c\x63ommon.proto\"\x89\x02\n\x06\x44\x65vice\x12L\n\x03\x64ut\x18\x01 \x01(\x0b\x32=.chrome.chromeos_infra.skylab.proto.inventory.DeviceUnderTestH\x00\x12S\n\nservo_host\x18\x02 \x01(\x0b\x32=.chrome.chromeos_infra.skylab.proto.inventory.ServoHostDeviceH\x00\x12R\n\tchameleon\x18\x03 \x01(\x0b\x32=.chrome.chromeos_infra.skylab.proto.inventory.ChameleonDeviceH\x00\x42\x08\n\x06\x64\x65vice\"b\n\x0f\x44\x65viceUnderTest\x12O\n\x06\x63ommon\x18\x01 \x02(\x0b\x32?.chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs\"s\n\x0fServoHostDevice\x12O\n\x06\x63ommon\x18\x01 \x02(\x0b\x32?.chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs\x12\x0f\n\x07version\x18\x02 \x01(\t\"b\n\x0f\x43hameleonDevice\x12O\n\x06\x63ommon\x18\x01 \x02(\x0b\x32?.chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs\"\xa7\x04\n\x11\x43ommonDeviceSpecs\x12\n\n\x02id\x18\x01 \x02(\t\x12\x10\n\x08hostname\x18\x02 \x02(\t\x12\x0c\n\x04hwid\x18\x03 \x01(\t\x12\x15\n\rserial_number\x18\x04 \x01(\t\x12H\n\x08location\x18\x05 \x01(\x0b\x32\x36.chrome.chromeos_infra.skylab.proto.inventory.Location\x12N\n\x0c\x64\x65vice_locks\x18\x06 \x03(\x0b\x32\x38.chrome.chromeos_infra.skylab.proto.inventory.DeviceLock\x12H\n\x0bowner_shard\x18\x07 \x01(\x0b\x32\x33.chrome.chromeos_infra.skylab.proto.inventory.Shard\x12O\n\x06labels\x18\x08 \x01(\x0b\x32?.chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels\x12J\n\nattributes\x18\t \x03(\x0b\x32\x36.chrome.chromeos_infra.skylab.proto.inventory.KeyValue\x12N\n\x0b\x65nvironment\x18\n \x01(\x0e\x32\x39.chrome.chromeos_infra.skylab.proto.inventory.Environment\"{\n\x08Location\x12\x46\n\x03lab\x18\x01 \x02(\x0b\x32\x39.chrome.chromeos_infra.skylab.proto.inventory.PhysicalLab\x12\x0b\n\x03row\x18\x02 \x02(\x05\x12\x0c\n\x04rack\x18\x03 \x02(\x05\x12\x0c\n\x04host\x18\x04 \x02(\x05\"\x1b\n\x0bPhysicalLab\x12\x0c\n\x04name\x18\x01 \x02(\t\"\x82\x02\n\nDeviceLock\x12\x10\n\x04lock\x18\x01 \x02(\x08\x42\x02\x18\x01\x12\x11\n\tlocked_by\x18\x02 \x02(\t\x12\x13\n\x0block_reason\x18\x03 \x02(\t\x12K\n\nbegin_time\x18\x04 \x02(\x0b\x32\x37.chrome.chromeos_infra.skylab.proto.inventory.Timestamp\x12L\n\x0b\x65xpire_time\x18\x05 \x02(\x0b\x32\x37.chrome.chromeos_infra.skylab.proto.inventory.Timestamp\x12\x13\n\x07lock_id\x18\x06 \x02(\x05\x42\x02\x18\x01\x12\n\n\x02id\x18\x07 \x02(\t\"\x19\n\x05Shard\x12\x10\n\x08hostname\x18\x01 \x02(\t\"\xae\x04\n\x11SchedulableLabels\x12\x10\n\x08platform\x18\x01 \x01(\t\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12_\n\x0e\x63ritical_pools\x18\x03 \x03(\x0e\x32G.chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.DUTPool\x12\x18\n\x10self_serve_pools\x18\x04 \x03(\t\x12X\n\x0c\x63\x61pabilities\x18\x05 \x01(\x0b\x32\x42.chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities\x12W\n\x07\x65\x63_type\x18\n \x01(\x0e\x32\x46.chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.ECType\x12\r\n\x05model\x18\r \x01(\t\"\x84\x01\n\x07\x44UTPool\x12\x14\n\x10\x44UT_POOL_INVALID\x10\x00\x12\x0f\n\x0b\x44UT_POOL_CQ\x10\x01\x12\x10\n\x0c\x44UT_POOL_BVT\x10\x02\x12\x13\n\x0f\x44UT_POOL_SUITES\x10\x03\x12\x10\n\x0c\x44UT_POOL_CTS\x10\x04\x12\x19\n\x15\x44UT_POOL_CTS_PERBUILD\x10\x05\"4\n\x06\x45\x43Type\x12\x13\n\x0f\x45\x43_TYPE_INVALID\x10\x00\x12\x15\n\x11\x45\x43_TYPE_CHROME_OS\x10\x01\"~\n\x14HardwareCapabilities\x12\r\n\x05modem\x18\x01 \x01(\t\x12\x11\n\ttelephony\x18\x02 \x01(\t\x12\x12\n\ngpu_family\x18\x03 \x01(\t\x12\x10\n\x08graphics\x18\x04 \x01(\t\x12\x0f\n\x07storage\x18\x05 \x01(\t\x12\r\n\x05power\x18\x06 \x01(\t\"&\n\x08KeyValue\x12\x0b\n\x03key\x18\x01 \x02(\t\x12\r\n\x05value\x18\x02 \x01(\t')
   ,
   dependencies=[common__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
 
@@ -736,6 +735,7 @@
 DESCRIPTOR.message_types_by_name['SchedulableLabels'] = _SCHEDULABLELABELS
 DESCRIPTOR.message_types_by_name['HardwareCapabilities'] = _HARDWARECAPABILITIES
 DESCRIPTOR.message_types_by_name['KeyValue'] = _KEYVALUE
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Device = _reflection.GeneratedProtocolMessageType('Device', (_message.Message,), dict(
   DESCRIPTOR = _DEVICE,
diff --git a/venv/skylab_inventory/protos/lab_pb2.py b/venv/skylab_inventory/protos/lab_pb2.py
index e378bb8..07abfda 100644
--- a/venv/skylab_inventory/protos/lab_pb2.py
+++ b/venv/skylab_inventory/protos/lab_pb2.py
@@ -25,7 +25,6 @@
   serialized_pb=_b('\n\tlab.proto\x12,chrome.chromeos_infra.skylab.proto.inventory\x1a\x10\x63onnection.proto\x1a\x0c\x64\x65vice.proto\x1a\x0cserver.proto\"\xbd\x03\n\x03Lab\x12K\n\x04\x64uts\x18\x01 \x03(\x0b\x32=.chrome.chromeos_infra.skylab.proto.inventory.DeviceUnderTest\x12R\n\x0bservo_hosts\x18\x02 \x03(\x0b\x32=.chrome.chromeos_infra.skylab.proto.inventory.ServoHostDevice\x12P\n\tchamelons\x18\x03 \x03(\x0b\x32=.chrome.chromeos_infra.skylab.proto.inventory.ChameleonDevice\x12\x61\n\x16servo_host_connections\x18\x04 \x03(\x0b\x32\x41.chrome.chromeos_infra.skylab.proto.inventory.ServoHostConnection\x12`\n\x15\x63hameleon_connections\x18\x05 \x03(\x0b\x32\x41.chrome.chromeos_infra.skylab.proto.inventory.ChameleonConnection\"W\n\x0eInfrastructure\x12\x45\n\x07servers\x18\x01 \x03(\x0b\x32\x34.chrome.chromeos_infra.skylab.proto.inventory.Server')
   ,
   dependencies=[connection__pb2.DESCRIPTOR,device__pb2.DESCRIPTOR,server__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
 
@@ -127,6 +126,7 @@
 _INFRASTRUCTURE.fields_by_name['servers'].message_type = server__pb2._SERVER
 DESCRIPTOR.message_types_by_name['Lab'] = _LAB
 DESCRIPTOR.message_types_by_name['Infrastructure'] = _INFRASTRUCTURE
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Lab = _reflection.GeneratedProtocolMessageType('Lab', (_message.Message,), dict(
   DESCRIPTOR = _LAB,
diff --git a/venv/skylab_inventory/protos/server_pb2.py b/venv/skylab_inventory/protos/server_pb2.py
index 135baa7..b839a47 100644
--- a/venv/skylab_inventory/protos/server_pb2.py
+++ b/venv/skylab_inventory/protos/server_pb2.py
@@ -20,10 +20,9 @@
   name='server.proto',
   package='chrome.chromeos_infra.skylab.proto.inventory',
   syntax='proto2',
-  serialized_pb=_b('\n\x0cserver.proto\x12,chrome.chromeos_infra.skylab.proto.inventory\x1a\x0c\x63ommon.proto\"\x86\x06\n\x06Server\x12\x10\n\x08hostname\x18\x01 \x02(\t\x12\r\n\x05\x63name\x18\x02 \x01(\t\x12N\n\x0b\x65nvironment\x18\x03 \x02(\x0e\x32\x39.chrome.chromeos_infra.skylab.proto.inventory.Environment\x12K\n\x06status\x18\x04 \x02(\x0e\x32;.chrome.chromeos_infra.skylab.proto.inventory.Server.Status\x12H\n\x05roles\x18\x05 \x03(\x0e\x32\x39.chrome.chromeos_infra.skylab.proto.inventory.Server.Role\x12L\n\nattributes\x18\x06 \x01(\x0b\x32\x38.chrome.chromeos_infra.skylab.proto.inventory.Attributes\x12\r\n\x05notes\x18\x07 \x01(\t\x12\x10\n\x08\x64ut_uids\x18\x08 \x03(\t\"_\n\x06Status\x12\x12\n\x0eSTATUS_INVALID\x10\x00\x12\x12\n\x0eSTATUS_PRIMARY\x10\x01\x12\x11\n\rSTATUS_BACKUP\x10\x02\x12\x1a\n\x16STATUS_REPAIR_REQUIRED\x10\x03\"\xa3\x02\n\x04Role\x12\x10\n\x0cROLE_INVALID\x10\x00\x12\x0c\n\x08ROLE_AFE\x10\x01\x12\x15\n\x11ROLE_CRASH_SERVER\x10\x02\x12\x11\n\rROLE_DATABASE\x10\x03\x12\x17\n\x13ROLE_DATABASE_SLAVE\x10\x04\x12\x12\n\x0eROLE_DEVSERVER\x10\x05\x12\x0e\n\nROLE_DRONE\x10\x06\x12\x13\n\x0fROLE_GOLO_PROXY\x10\x07\x12\x17\n\x13ROLE_HOST_SCHEDULER\x10\x08\x12\x12\n\x0eROLE_SCHEDULER\x10\t\x12\x11\n\rROLE_SENTINEL\x10\n\x12\x0e\n\nROLE_SHARD\x10\x0b\x12\x18\n\x14ROLE_SUITE_SCHEDULER\x10\x0c\x12\x15\n\x11ROLE_SKYLAB_DRONE\x10\r\"\x85\x01\n\nAttributes\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x15\n\rmax_processes\x18\x02 \x01(\x05\x12\x17\n\x0fmysql_server_id\x18\x03 \x01(\t\x12#\n\x1b\x64\x65vserver_restricted_subnet\x18\x04 \x01(\t\x12\x16\n\x0e\x64\x65vserver_port\x18\x05 \x01(\x05')
+  serialized_pb=_b('\n\x0cserver.proto\x12,chrome.chromeos_infra.skylab.proto.inventory\x1a\x0c\x63ommon.proto\"\xa3\x06\n\x06Server\x12\x10\n\x08hostname\x18\x01 \x02(\t\x12\r\n\x05\x63name\x18\x02 \x01(\t\x12N\n\x0b\x65nvironment\x18\x03 \x02(\x0e\x32\x39.chrome.chromeos_infra.skylab.proto.inventory.Environment\x12K\n\x06status\x18\x04 \x02(\x0e\x32;.chrome.chromeos_infra.skylab.proto.inventory.Server.Status\x12H\n\x05roles\x18\x05 \x03(\x0e\x32\x39.chrome.chromeos_infra.skylab.proto.inventory.Server.Role\x12L\n\nattributes\x18\x06 \x01(\x0b\x32\x38.chrome.chromeos_infra.skylab.proto.inventory.Attributes\x12\r\n\x05notes\x18\x07 \x01(\t\x12\x10\n\x08\x64ut_uids\x18\x08 \x03(\t\"_\n\x06Status\x12\x12\n\x0eSTATUS_INVALID\x10\x00\x12\x12\n\x0eSTATUS_PRIMARY\x10\x01\x12\x11\n\rSTATUS_BACKUP\x10\x02\x12\x1a\n\x16STATUS_REPAIR_REQUIRED\x10\x03\"\xc0\x02\n\x04Role\x12\x10\n\x0cROLE_INVALID\x10\x00\x12\x0c\n\x08ROLE_AFE\x10\x01\x12\x15\n\x11ROLE_CRASH_SERVER\x10\x02\x12\x11\n\rROLE_DATABASE\x10\x03\x12\x17\n\x13ROLE_DATABASE_SLAVE\x10\x04\x12\x12\n\x0eROLE_DEVSERVER\x10\x05\x12\x0e\n\nROLE_DRONE\x10\x06\x12\x13\n\x0fROLE_GOLO_PROXY\x10\x07\x12\x17\n\x13ROLE_HOST_SCHEDULER\x10\x08\x12\x12\n\x0eROLE_SCHEDULER\x10\t\x12\x11\n\rROLE_SENTINEL\x10\n\x12\x0e\n\nROLE_SHARD\x10\x0b\x12\x18\n\x14ROLE_SUITE_SCHEDULER\x10\x0c\x12\x15\n\x11ROLE_SKYLAB_DRONE\x10\r\x12\x1b\n\x17ROLE_SKYLAB_SUITE_PROXY\x10\x0e\"\x85\x01\n\nAttributes\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x15\n\rmax_processes\x18\x02 \x01(\x05\x12\x17\n\x0fmysql_server_id\x18\x03 \x01(\t\x12#\n\x1b\x64\x65vserver_restricted_subnet\x18\x04 \x01(\t\x12\x16\n\x0e\x64\x65vserver_port\x18\x05 \x01(\x05')
   ,
   dependencies=[common__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
 
@@ -119,11 +118,15 @@
       name='ROLE_SKYLAB_DRONE', index=13, number=13,
       options=None,
       type=None),
+    _descriptor.EnumValueDescriptor(
+      name='ROLE_SKYLAB_SUITE_PROXY', index=14, number=14,
+      options=None,
+      type=None),
   ],
   containing_type=None,
   options=None,
   serialized_start=560,
-  serialized_end=851,
+  serialized_end=880,
 )
 _sym_db.RegisterEnumDescriptor(_SERVER_ROLE)
 
@@ -206,7 +209,7 @@
   oneofs=[
   ],
   serialized_start=77,
-  serialized_end=851,
+  serialized_end=880,
 )
 
 
@@ -264,8 +267,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=854,
-  serialized_end=987,
+  serialized_start=883,
+  serialized_end=1016,
 )
 
 _SERVER.fields_by_name['environment'].enum_type = common__pb2._ENVIRONMENT
@@ -276,6 +279,7 @@
 _SERVER_ROLE.containing_type = _SERVER
 DESCRIPTOR.message_types_by_name['Server'] = _SERVER
 DESCRIPTOR.message_types_by_name['Attributes'] = _ATTRIBUTES
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Server = _reflection.GeneratedProtocolMessageType('Server', (_message.Message,), dict(
   DESCRIPTOR = _SERVER,
diff --git a/venv/skylab_inventory/protos/stable_versions_pb2.py b/venv/skylab_inventory/protos/stable_versions_pb2.py
index 0bdecc0..d1f95ad 100644
--- a/venv/skylab_inventory/protos/stable_versions_pb2.py
+++ b/venv/skylab_inventory/protos/stable_versions_pb2.py
@@ -21,7 +21,6 @@
   syntax='proto2',
   serialized_pb=_b('\n\x15stable_versions.proto\x12,chrome.chromeos_infra.skylab.proto.inventory\"\xfb\x02\n\x0eStableVersions\x12X\n\x13\x61ndroid_os_versions\x18\x01 \x03(\x0b\x32;.chrome.chromeos_infra.skylab.proto.inventory.StableVersion\x12W\n\x12\x63hrome_os_versions\x18\x02 \x03(\x0b\x32;.chrome.chromeos_infra.skylab.proto.inventory.StableVersion\x12Y\n\x14rw_firmware_versions\x18\x03 \x03(\x0b\x32;.chrome.chromeos_infra.skylab.proto.inventory.StableVersion\x12[\n\x16\x66\x61\x66t_firmware_versions\x18\x04 \x03(\x0b\x32;.chrome.chromeos_infra.skylab.proto.inventory.StableVersion\"/\n\rStableVersion\x12\r\n\x05\x62oard\x18\x01 \x02(\t\x12\x0f\n\x07version\x18\x02 \x02(\t')
 )
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
 
@@ -121,6 +120,7 @@
 _STABLEVERSIONS.fields_by_name['faft_firmware_versions'].message_type = _STABLEVERSION
 DESCRIPTOR.message_types_by_name['StableVersions'] = _STABLEVERSIONS
 DESCRIPTOR.message_types_by_name['StableVersion'] = _STABLEVERSION
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 StableVersions = _reflection.GeneratedProtocolMessageType('StableVersions', (_message.Message,), dict(
   DESCRIPTOR = _STABLEVERSIONS,
diff --git a/venv/skylab_inventory/translation_utils.py b/venv/skylab_inventory/translation_utils.py
index 26bbe7f..1703760 100644
--- a/venv/skylab_inventory/translation_utils.py
+++ b/venv/skylab_inventory/translation_utils.py
@@ -39,6 +39,8 @@
     'shard': server_pb2.Server.Role.Value('ROLE_SHARD'),
     'suite_scheduler': server_pb2.Server.Role.Value('ROLE_SUITE_SCHEDULER'),
     'skylab_drone': server_pb2.Server.Role.Value('ROLE_SKYLAB_DRONE'),
+    'skylab_suite_proxy': server_pb2.Server.Role.Value(
+        'ROLE_SKYLAB_SUITE_PROXY'),
 }
 
 ENVIRONMENT_MAP = {
@@ -80,8 +82,8 @@
 DATA_SUBDIR = {'prod', 'staging', 'skylab'}
 HARDWARE_CAPABILITIES_LABELS = {'modem', 'telephony', 'gpu_family', 'graphics',
                                 'storage', 'power'}
-TOPLEVEL_LABELS = {'platform', 'board', 'model', 'critical_pool', 'self_serve_pool',
-                   'ec_type'}
+TOPLEVEL_LABELS = {'platform', 'board', 'model', 'critical_pool',
+                   'self_serve_pool', 'ec_type'}
 SCHEDULABLE_LABELS = TOPLEVEL_LABELS | HARDWARE_CAPABILITIES_LABELS
 
 # Each device should only have one label value for the unique label key.