api: Regen protos

BUG=b:338458418
TEST=CQ

Change-Id: Idbcf13014f6854ceabdd6f92408c413e9f95f277
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/5545083
Tested-by: Jack Rosenthal <jrosenth@chromium.org>
Auto-Submit: Jack Rosenthal <jrosenth@chromium.org>
Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-by: Tim Bain <tbain@google.com>
Commit-Queue: Tim Bain <tbain@google.com>
diff --git a/api/gen/chromite/api/sdk_subtools_pb2.py b/api/gen/chromite/api/sdk_subtools_pb2.py
index 245f262..6229af6 100644
--- a/api/gen/chromite/api/sdk_subtools_pb2.py
+++ b/api/gen/chromite/api/sdk_subtools_pb2.py
@@ -16,7 +16,7 @@
 from chromite.api.gen.chromiumos import common_pb2 as chromiumos_dot_common__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hromite/api/sdk_subtools.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\"\x95\x01\n\x17\x42uildSdkSubtoolsRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12)\n\x08packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12+\n\x0bresult_path\x18\x03 \x01(\x0b\x32\x16.chromiumos.ResultPath\"\x80\x01\n\x18\x42uildSdkSubtoolsResponse\x12<\n\x13\x66\x61iled_package_data\x18\x01 \x03(\x0b\x32\x1f.chromite.api.FailedPackageData\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"Z\n\x18UploadSdkSubtoolsRequest\x12\x16\n\x0euse_production\x18\x01 \x01(\x08\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"H\n\x19UploadSdkSubtoolsResponse\x12\x11\n\tstep_text\x18\x01 \x01(\t\x12\x18\n\x10summary_markdown\x18\x02 \x01(\t2\xfb\x01\n\x12SdkSubtoolsService\x12\x61\n\x10\x42uildSdkSubtools\x12%.chromite.api.BuildSdkSubtoolsRequest\x1a&.chromite.api.BuildSdkSubtoolsResponse\x12l\n\x11UploadSdkSubtools\x12&.chromite.api.UploadSdkSubtoolsRequest\x1a\'.chromite.api.UploadSdkSubtoolsResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x1a\x14\xc2\xed\x1a\x10\n\x0csdk_subtools\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hromite/api/sdk_subtools.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\"\x92\x02\n\x17\x42uildSdkSubtoolsRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12)\n\x08packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12+\n\x0bresult_path\x18\x03 \x01(\x0b\x32\x16.chromiumos.ResultPath\x12H\n\rupload_filter\x18\x04 \x03(\x0b\x32\x31.chromite.api.BuildSdkSubtoolsRequest.SubtoolName\x12\x14\n\x0cprivate_only\x18\x05 \x01(\x08\x1a\x1b\n\x0bSubtoolName\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x80\x01\n\x18\x42uildSdkSubtoolsResponse\x12<\n\x13\x66\x61iled_package_data\x18\x01 \x03(\x0b\x32\x1f.chromite.api.FailedPackageData\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"Z\n\x18UploadSdkSubtoolsRequest\x12\x16\n\x0euse_production\x18\x01 \x01(\x08\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"H\n\x19UploadSdkSubtoolsResponse\x12\x11\n\tstep_text\x18\x01 \x01(\t\x12\x18\n\x10summary_markdown\x18\x02 \x01(\t2\xfb\x01\n\x12SdkSubtoolsService\x12\x61\n\x10\x42uildSdkSubtools\x12%.chromite.api.BuildSdkSubtoolsRequest\x1a&.chromite.api.BuildSdkSubtoolsResponse\x12l\n\x11UploadSdkSubtools\x12&.chromite.api.UploadSdkSubtoolsRequest\x1a\'.chromite.api.UploadSdkSubtoolsResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x1a\x14\xc2\xed\x1a\x10\n\x0csdk_subtools\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3')
 
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
 _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromite.api.sdk_subtools_pb2', globals())
@@ -29,13 +29,15 @@
   _SDKSUBTOOLSSERVICE.methods_by_name['UploadSdkSubtools']._options = None
   _SDKSUBTOOLSSERVICE.methods_by_name['UploadSdkSubtools']._serialized_options = b'\302\355\032\002\020\002'
   _BUILDSDKSUBTOOLSREQUEST._serialized_start=133
-  _BUILDSDKSUBTOOLSREQUEST._serialized_end=282
-  _BUILDSDKSUBTOOLSRESPONSE._serialized_start=285
-  _BUILDSDKSUBTOOLSRESPONSE._serialized_end=413
-  _UPLOADSDKSUBTOOLSREQUEST._serialized_start=415
-  _UPLOADSDKSUBTOOLSREQUEST._serialized_end=505
-  _UPLOADSDKSUBTOOLSRESPONSE._serialized_start=507
-  _UPLOADSDKSUBTOOLSRESPONSE._serialized_end=579
-  _SDKSUBTOOLSSERVICE._serialized_start=582
-  _SDKSUBTOOLSSERVICE._serialized_end=833
+  _BUILDSDKSUBTOOLSREQUEST._serialized_end=407
+  _BUILDSDKSUBTOOLSREQUEST_SUBTOOLNAME._serialized_start=380
+  _BUILDSDKSUBTOOLSREQUEST_SUBTOOLNAME._serialized_end=407
+  _BUILDSDKSUBTOOLSRESPONSE._serialized_start=410
+  _BUILDSDKSUBTOOLSRESPONSE._serialized_end=538
+  _UPLOADSDKSUBTOOLSREQUEST._serialized_start=540
+  _UPLOADSDKSUBTOOLSREQUEST._serialized_end=630
+  _UPLOADSDKSUBTOOLSRESPONSE._serialized_start=632
+  _UPLOADSDKSUBTOOLSRESPONSE._serialized_end=704
+  _SDKSUBTOOLSSERVICE._serialized_start=707
+  _SDKSUBTOOLSSERVICE._serialized_end=958
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen/chromiumos/test/artifact/test_result_pb2.py b/api/gen/chromiumos/test/artifact/test_result_pb2.py
index 791c921..e75d30d 100644
--- a/api/gen/chromiumos/test/artifact/test_result_pb2.py
+++ b/api/gen/chromiumos/test/artifact/test_result_pb2.py
@@ -21,7 +21,7 @@
 from chromite.third_party.google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*chromiumos/test/artifact/test_result.proto\x12\x18\x63hromiumos.test.artifact\x1a\x1d\x63hromiumos/storage_path.proto\x1a)chromiumos/test/api/provision_state.proto\x1a,chromiumos/test/api/test_case_metadata.proto\x1a*chromiumos/test/api/test_case_result.proto\x1a&chromiumos/test/api/test_harness.proto\x1a!chromiumos/test/lab/api/dut.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x96\x01\n\nTestResult\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x41\n\x0ftest_invocation\x18\x02 \x01(\x0b\x32(.chromiumos.test.artifact.TestInvocation\x12\x34\n\ttest_runs\x18\x03 \x03(\x0b\x32!.chromiumos.test.artifact.TestRun\"\x85\x05\n\x0eTestInvocation\x12\x43\n\x10test_environment\x18\x01 \x01(\x0b\x32).chromiumos.test.artifact.TestEnvironment\x12:\n\x0c\x64ut_topology\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.DutTopology\x12G\n\x16primary_execution_info\x18\x03 \x01(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12J\n\x19secondary_executions_info\x18\x04 \x03(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12I\n\x13scheduling_metadata\x18\x05 \x01(\x0b\x32,.chromiumos.test.artifact.SchedulingMetadata\x12@\n\x04tags\x18\x06 \x03(\x0b\x32\x32.chromiumos.test.artifact.TestInvocation.TagsEntry\x12\x12\n\nis_cft_run\x18\x07 \x01(\x08\x12R\n\x18project_tracker_metadata\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.ProjectTrackerMetadata\x12;\n\x0cpartner_info\x18\t \x01(\x0b\x32%.chromiumos.test.artifact.PartnerInfo\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xaf\x01\n\x0fTestEnvironment\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x12\x42\n\x0c\x61ncestor_ids\x18\x02 \x03(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x1a\x1e\n\x02Id\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xdb\x03\n\x07TestRun\x12>\n\x0etest_case_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.TestCaseInfo\x12*\n\tlogs_info\x18\x02 \x03(\x0b\x32\x17.chromiumos.StoragePath\x12>\n\x0e\x63ustom_results\x18\x03 \x03(\x0b\x32&.chromiumos.test.artifact.CustomResult\x12\x37\n\ttime_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x12:\n\x0ctest_harness\x18\x05 \x01(\x0b\x32 .chromiumos.test.api.TestHarnessB\x02\x18\x01\x12G\n\x12\x65xecution_metadata\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.ExecutionMetadata\x12\x39\n\x04tags\x18\x07 \x03(\x0b\x32+.chromiumos.test.artifact.TestRun.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb0\x02\n\x0cTestCaseInfo\x12\x45\n\x12test_case_metadata\x18\x01 \x01(\x0b\x32%.chromiumos.test.api.TestCaseMetadataB\x02\x18\x01\x12=\n\x10test_case_result\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.TestCaseResult\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\r\n\x05suite\x18\x04 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x05 \x01(\t\x12\x19\n\x11main_builder_name\x18\x06 \x01(\t\x12\x11\n\trequester\x18\x07 \x01(\t\x12\x10\n\x08\x63ontacts\x18\x08 \x03(\t\x12\x14\n\x0ctest_plan_id\x18\t \x01(\t\x12\x0f\n\x07\x63hannel\x18\n \x01(\t\"\x80\x02\n\tBuildInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tmilestone\x18\x02 \x01(\x04\x12\x19\n\x11\x63hrome_os_version\x18\x03 \x01(\t\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x18\n\x10snapshot_version\x18\x05 \x01(\t\x12\x14\n\x0c\x62uild_target\x18\x06 \x01(\t\x12\x15\n\rboard_variant\x18\x07 \x01(\t\x12\r\n\x05\x62oard\x18\x08 \x01(\t\x12?\n\x0e\x62uild_metadata\x18\t \x01(\x0b\x32\'.chromiumos.test.artifact.BuildMetadata\x12\x10\n\x08\x63ritical\x18\n \x01(\x08\"\xcb\x11\n\rBuildMetadata\x12\x38\n\x03\x61rc\x18\x01 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Arc\x12>\n\x06\x63hrome\x18\x02 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Chrome\x12\x43\n\tchrome_os\x18\x03 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.ChromeOs\x12\x42\n\x08\x66irmware\x18\x04 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Firmware\x12>\n\x06kernel\x18\x05 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Kernel\x12\x38\n\x03sku\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Sku\x12@\n\x07\x63hipset\x18\x07 \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.Chipset\x12\x42\n\x08\x63\x65llular\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Cellular\x12>\n\x06lacros\x18\t \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Lacros\x12\x39\n\tchameleon\x18\n \x01(\x0b\x32\".chromiumos.test.lab.api.ChameleonB\x02\x18\x01\x12\x41\n\x08gfx_info\x18\x0b \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.GfxInfo\x12\x36\n\nmodem_info\x18\x0c \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfo\x12M\n\x0e\x63hameleon_info\x18\r \x01(\x0b\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonInfo\x1a&\n\x03\x41rc\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x02 \x01(\t\x1a\x19\n\x06\x43hrome\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x1b\n\x08\x43hromeOs\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x32\n\x08\x46irmware\x12\x12\n\nro_version\x18\x01 \x01(\t\x12\x12\n\nrw_version\x18\x02 \x01(\t\x1a\x19\n\x06Kernel\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a+\n\x03Sku\x12\x10\n\x08hwid_sku\x18\x01 \x01(\t\x12\x12\n\ndlm_sku_id\x18\x02 \x01(\t\x1a\x38\n\x07\x43hipset\x12\x11\n\twifi_chip\x18\x01 \x01(\t\x12\x1a\n\x12wifi_router_models\x18\x02 \x01(\t\x1a\x1b\n\x08\x43\x65llular\x12\x0f\n\x07\x63\x61rrier\x18\x01 \x01(\t\x1a\x35\n\x06Lacros\x12\x13\n\x0b\x61sh_version\x18\x01 \x01(\t\x12\x16\n\x0elacros_version\x18\x02 \x01(\t\x1a\x80\x03\n\x07GfxInfo\x12\x0e\n\x06gpu_id\x18\x01 \x01(\t\x12\x12\n\ngpu_family\x18\x02 \x01(\t\x12\x1d\n\x15gpu_open_gles_version\x18\x03 \x01(\t\x12\x12\n\ngpu_vendor\x18\x04 \x01(\t\x12\x1a\n\x12gpu_vulkan_version\x18\x05 \x01(\t\x12\x1b\n\x13platform_cpu_vendor\x18\x06 \x01(\t\x12\x1a\n\x12platform_disk_size\x18\x07 \x01(\x04\x12\x1c\n\x14platform_memory_size\x18\x08 \x01(\x04\x12\x1a\n\x12\x64isplay_panel_name\x18\t \x01(\t\x12\x1b\n\x13\x64isplay_present_hdr\x18\n \x01(\t\x12\x1b\n\x13\x64isplay_present_psr\x18\x0b \x01(\t\x12\x1b\n\x13\x64isplay_present_vrr\x18\x0c \x01(\t\x12\x1c\n\x14\x64isplay_refresh_rate\x18\r \x01(\t\x12\x1a\n\x12\x64isplay_resolution\x18\x0e \x01(\t\x1a\xc3\x01\n\rChameleonInfo\x12M\n\x0e\x63hameleon_type\x18\x01 \x03(\x0e\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonType\x12\x63\n\x1a\x63hameleon_connection_types\x18\x02 \x03(\x0e\x32?.chromiumos.test.artifact.BuildMetadata.ChameleonConnectionType\"\xe9\x01\n\rChameleonType\x12\x1a\n\x16\x43HAMELEON_TYPE_INVALID\x10\x00\x12\x15\n\x11\x43HAMELEON_TYPE_DP\x10\x02\x12\x1e\n\x16\x43HAMELEON_TYPE_DP_HDMI\x10\x03\x1a\x02\x08\x01\x12\x1a\n\x12\x43HAMELEON_TYPE_VGA\x10\x04\x1a\x02\x08\x01\x12\x17\n\x13\x43HAMELEON_TYPE_HDMI\x10\x05\x12\x15\n\x11\x43HAMELEON_TYPE_V2\x10\t\x12\x15\n\x11\x43HAMELEON_TYPE_V3\x10\n\x12\x16\n\x12\x43HAMELEON_TYPE_RPI\x10\x0b\"\x04\x08\x01\x10\x01\"\x04\x08\x06\x10\x08\"\xd2\x01\n\x17\x43hameleonConnectionType\x12%\n!CHAMELEON_CONNECTION_TYPE_INVALID\x10\x00\x12\'\n#CHAMELEON_CONNECTION_TYPE_AUDIOJACK\x10\x01\x12!\n\x1d\x43HAMELEON_CONNECTION_TYPE_USB\x10\x02\x12\"\n\x1e\x43HAMELEON_CONNECTION_TYPE_HDMI\x10\x03\x12 \n\x1c\x43HAMELEON_CONNECTION_TYPE_DP\x10\x04\"\xe7\x01\n\x07\x44utInfo\x12)\n\x03\x64ut\x18\x01 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x12<\n\x0fprovision_state\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\x12\x39\n\x04tags\x18\x03 \x03(\x0b\x32+.chromiumos.test.artifact.DutInfo.TagsEntry\x12\x0b\n\x03\x63\x62x\x18\x04 \x01(\x08\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"E\n\tDroneInfo\x12\r\n\x05\x64rone\x18\x01 \x01(\t\x12\x13\n\x0b\x64rone_image\x18\x02 \x01(\t\x12\x14\n\x0c\x64rone_server\x18\x03 \x01(\t\"k\n\x0cSwarmingInfo\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x15\n\rsuite_task_id\x18\x02 \x01(\t\x12\x11\n\ttask_name\x18\x03 \x01(\t\x12\x0c\n\x04pool\x18\x04 \x01(\t\x12\x12\n\nlabel_pool\x18\x05 \x01(\t\"!\n\rInventoryInfo\x12\x10\n\x08ufs_zone\x18\x01 \x01(\t\"=\n\tBuilderID\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x0f\n\x07\x62uilder\x18\x03 \x01(\t\"i\n\x0f\x42uildbucketInfo\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x34\n\x07\x62uilder\x18\x02 \x01(\x0b\x32#.chromiumos.test.artifact.BuilderID\x12\x14\n\x0c\x61ncestor_ids\x18\x03 \x03(\x03\"\xc9\x01\n\nSkylabInfo\x12\x37\n\ndrone_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\x12=\n\rswarming_info\x18\x02 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x03 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\"\xc9\x01\n\nSatlabInfo\x12=\n\rswarming_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x02 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\x12\x37\n\ndrone_info\x18\x03 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\"!\n\x0bPartnerInfo\x12\x12\n\naccount_id\x18\x01 \x01(\x03\"\xc4\x02\n\rExecutionInfo\x12\x37\n\nbuild_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.BuildInfo\x12\x33\n\x08\x64ut_info\x18\x02 \x01(\x0b\x32!.chromiumos.test.artifact.DutInfo\x12;\n\x0bskylab_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.SkylabInfoH\x00\x12;\n\x0bsatlab_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.SatlabInfoH\x00\x12?\n\x0einventory_info\x18\x05 \x01(\x0b\x32\'.chromiumos.test.artifact.InventoryInfoB\n\n\x08\x65nv_info\"\x8f\x01\n\x0c\x43ustomResult\x12\x35\n\x14result_artifact_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x39\n\x03\x63ts\x18\x02 \x01(\x0b\x32*.chromiumos.test.artifact.CustomResult.CtsH\x00\x1a\x05\n\x03\x43tsB\x06\n\x04type\"\x9c\x01\n\nTimingInfo\x12/\n\x0bqueued_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0cstarted_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x83\x03\n\x12SchedulingMetadata\x12\x65\n\x15hardware_dependencies\x18\x01 \x03(\x0b\x32\x46.chromiumos.test.artifact.SchedulingMetadata.HardwareDependenciesEntry\x12Y\n\x0fscheduling_args\x18\x02 \x03(\x0b\x32@.chromiumos.test.artifact.SchedulingMetadata.SchedulingArgsEntry\x12\x37\n\ttime_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x1a;\n\x19HardwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x35\n\x13SchedulingArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x16ProjectTrackerMetadata\x12\x0e\n\x06\x62ug_id\x18\x01 \x01(\t\"\xb5\x02\n\x11\x45xecutionMetadata\x12\x64\n\x15software_dependencies\x18\x01 \x03(\x0b\x32\x45.chromiumos.test.artifact.ExecutionMetadata.SoftwareDependenciesEntry\x12L\n\ttest_args\x18\x02 \x03(\x0b\x32\x39.chromiumos.test.artifact.ExecutionMetadata.TestArgsEntry\x1a;\n\x19SoftwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x34Z2go.chromium.org/chromiumos/config/go/test/artifactb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*chromiumos/test/artifact/test_result.proto\x12\x18\x63hromiumos.test.artifact\x1a\x1d\x63hromiumos/storage_path.proto\x1a)chromiumos/test/api/provision_state.proto\x1a,chromiumos/test/api/test_case_metadata.proto\x1a*chromiumos/test/api/test_case_result.proto\x1a&chromiumos/test/api/test_harness.proto\x1a!chromiumos/test/lab/api/dut.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x96\x01\n\nTestResult\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x41\n\x0ftest_invocation\x18\x02 \x01(\x0b\x32(.chromiumos.test.artifact.TestInvocation\x12\x34\n\ttest_runs\x18\x03 \x03(\x0b\x32!.chromiumos.test.artifact.TestRun\"\x85\x05\n\x0eTestInvocation\x12\x43\n\x10test_environment\x18\x01 \x01(\x0b\x32).chromiumos.test.artifact.TestEnvironment\x12:\n\x0c\x64ut_topology\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.DutTopology\x12G\n\x16primary_execution_info\x18\x03 \x01(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12J\n\x19secondary_executions_info\x18\x04 \x03(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12I\n\x13scheduling_metadata\x18\x05 \x01(\x0b\x32,.chromiumos.test.artifact.SchedulingMetadata\x12@\n\x04tags\x18\x06 \x03(\x0b\x32\x32.chromiumos.test.artifact.TestInvocation.TagsEntry\x12\x12\n\nis_cft_run\x18\x07 \x01(\x08\x12R\n\x18project_tracker_metadata\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.ProjectTrackerMetadata\x12;\n\x0cpartner_info\x18\t \x01(\x0b\x32%.chromiumos.test.artifact.PartnerInfo\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xaf\x01\n\x0fTestEnvironment\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x12\x42\n\x0c\x61ncestor_ids\x18\x02 \x03(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x1a\x1e\n\x02Id\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xdb\x03\n\x07TestRun\x12>\n\x0etest_case_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.TestCaseInfo\x12*\n\tlogs_info\x18\x02 \x03(\x0b\x32\x17.chromiumos.StoragePath\x12>\n\x0e\x63ustom_results\x18\x03 \x03(\x0b\x32&.chromiumos.test.artifact.CustomResult\x12\x37\n\ttime_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x12:\n\x0ctest_harness\x18\x05 \x01(\x0b\x32 .chromiumos.test.api.TestHarnessB\x02\x18\x01\x12G\n\x12\x65xecution_metadata\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.ExecutionMetadata\x12\x39\n\x04tags\x18\x07 \x03(\x0b\x32+.chromiumos.test.artifact.TestRun.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb0\x02\n\x0cTestCaseInfo\x12\x45\n\x12test_case_metadata\x18\x01 \x01(\x0b\x32%.chromiumos.test.api.TestCaseMetadataB\x02\x18\x01\x12=\n\x10test_case_result\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.TestCaseResult\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\r\n\x05suite\x18\x04 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x05 \x01(\t\x12\x19\n\x11main_builder_name\x18\x06 \x01(\t\x12\x11\n\trequester\x18\x07 \x01(\t\x12\x10\n\x08\x63ontacts\x18\x08 \x03(\t\x12\x14\n\x0ctest_plan_id\x18\t \x01(\t\x12\x0f\n\x07\x63hannel\x18\n \x01(\t\"\x80\x02\n\tBuildInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tmilestone\x18\x02 \x01(\x04\x12\x19\n\x11\x63hrome_os_version\x18\x03 \x01(\t\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x18\n\x10snapshot_version\x18\x05 \x01(\t\x12\x14\n\x0c\x62uild_target\x18\x06 \x01(\t\x12\x15\n\rboard_variant\x18\x07 \x01(\t\x12\r\n\x05\x62oard\x18\x08 \x01(\t\x12?\n\x0e\x62uild_metadata\x18\t \x01(\x0b\x32\'.chromiumos.test.artifact.BuildMetadata\x12\x10\n\x08\x63ritical\x18\n \x01(\x08\"\xcb\x11\n\rBuildMetadata\x12\x38\n\x03\x61rc\x18\x01 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Arc\x12>\n\x06\x63hrome\x18\x02 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Chrome\x12\x43\n\tchrome_os\x18\x03 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.ChromeOs\x12\x42\n\x08\x66irmware\x18\x04 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Firmware\x12>\n\x06kernel\x18\x05 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Kernel\x12\x38\n\x03sku\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Sku\x12@\n\x07\x63hipset\x18\x07 \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.Chipset\x12\x42\n\x08\x63\x65llular\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Cellular\x12>\n\x06lacros\x18\t \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Lacros\x12\x39\n\tchameleon\x18\n \x01(\x0b\x32\".chromiumos.test.lab.api.ChameleonB\x02\x18\x01\x12\x41\n\x08gfx_info\x18\x0b \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.GfxInfo\x12\x36\n\nmodem_info\x18\x0c \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfo\x12M\n\x0e\x63hameleon_info\x18\r \x01(\x0b\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonInfo\x1a&\n\x03\x41rc\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x02 \x01(\t\x1a\x19\n\x06\x43hrome\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x1b\n\x08\x43hromeOs\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x32\n\x08\x46irmware\x12\x12\n\nro_version\x18\x01 \x01(\t\x12\x12\n\nrw_version\x18\x02 \x01(\t\x1a\x19\n\x06Kernel\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a+\n\x03Sku\x12\x10\n\x08hwid_sku\x18\x01 \x01(\t\x12\x12\n\ndlm_sku_id\x18\x02 \x01(\t\x1a\x38\n\x07\x43hipset\x12\x11\n\twifi_chip\x18\x01 \x01(\t\x12\x1a\n\x12wifi_router_models\x18\x02 \x01(\t\x1a\x1b\n\x08\x43\x65llular\x12\x0f\n\x07\x63\x61rrier\x18\x01 \x01(\t\x1a\x35\n\x06Lacros\x12\x13\n\x0b\x61sh_version\x18\x01 \x01(\t\x12\x16\n\x0elacros_version\x18\x02 \x01(\t\x1a\x80\x03\n\x07GfxInfo\x12\x0e\n\x06gpu_id\x18\x01 \x01(\t\x12\x12\n\ngpu_family\x18\x02 \x01(\t\x12\x1d\n\x15gpu_open_gles_version\x18\x03 \x01(\t\x12\x12\n\ngpu_vendor\x18\x04 \x01(\t\x12\x1a\n\x12gpu_vulkan_version\x18\x05 \x01(\t\x12\x1b\n\x13platform_cpu_vendor\x18\x06 \x01(\t\x12\x1a\n\x12platform_disk_size\x18\x07 \x01(\x04\x12\x1c\n\x14platform_memory_size\x18\x08 \x01(\x04\x12\x1a\n\x12\x64isplay_panel_name\x18\t \x01(\t\x12\x1b\n\x13\x64isplay_present_hdr\x18\n \x01(\t\x12\x1b\n\x13\x64isplay_present_psr\x18\x0b \x01(\t\x12\x1b\n\x13\x64isplay_present_vrr\x18\x0c \x01(\t\x12\x1c\n\x14\x64isplay_refresh_rate\x18\r \x01(\t\x12\x1a\n\x12\x64isplay_resolution\x18\x0e \x01(\t\x1a\xc3\x01\n\rChameleonInfo\x12M\n\x0e\x63hameleon_type\x18\x01 \x03(\x0e\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonType\x12\x63\n\x1a\x63hameleon_connection_types\x18\x02 \x03(\x0e\x32?.chromiumos.test.artifact.BuildMetadata.ChameleonConnectionType\"\xe9\x01\n\rChameleonType\x12\x1a\n\x16\x43HAMELEON_TYPE_INVALID\x10\x00\x12\x15\n\x11\x43HAMELEON_TYPE_DP\x10\x02\x12\x1e\n\x16\x43HAMELEON_TYPE_DP_HDMI\x10\x03\x1a\x02\x08\x01\x12\x1a\n\x12\x43HAMELEON_TYPE_VGA\x10\x04\x1a\x02\x08\x01\x12\x17\n\x13\x43HAMELEON_TYPE_HDMI\x10\x05\x12\x15\n\x11\x43HAMELEON_TYPE_V2\x10\t\x12\x15\n\x11\x43HAMELEON_TYPE_V3\x10\n\x12\x16\n\x12\x43HAMELEON_TYPE_RPI\x10\x0b\"\x04\x08\x01\x10\x01\"\x04\x08\x06\x10\x08\"\xd2\x01\n\x17\x43hameleonConnectionType\x12%\n!CHAMELEON_CONNECTION_TYPE_INVALID\x10\x00\x12\'\n#CHAMELEON_CONNECTION_TYPE_AUDIOJACK\x10\x01\x12!\n\x1d\x43HAMELEON_CONNECTION_TYPE_USB\x10\x02\x12\"\n\x1e\x43HAMELEON_CONNECTION_TYPE_HDMI\x10\x03\x12 \n\x1c\x43HAMELEON_CONNECTION_TYPE_DP\x10\x04\"\xe7\x01\n\x07\x44utInfo\x12)\n\x03\x64ut\x18\x01 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x12<\n\x0fprovision_state\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\x12\x39\n\x04tags\x18\x03 \x03(\x0b\x32+.chromiumos.test.artifact.DutInfo.TagsEntry\x12\x0b\n\x03\x63\x62x\x18\x04 \x01(\x08\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"E\n\tDroneInfo\x12\r\n\x05\x64rone\x18\x01 \x01(\t\x12\x13\n\x0b\x64rone_image\x18\x02 \x01(\t\x12\x14\n\x0c\x64rone_server\x18\x03 \x01(\t\"{\n\x0cSwarmingInfo\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x15\n\rsuite_task_id\x18\x02 \x01(\t\x12\x11\n\ttask_name\x18\x03 \x01(\t\x12\x0c\n\x04pool\x18\x04 \x01(\t\x12\x12\n\nlabel_pool\x18\x05 \x01(\t\x12\x0e\n\x06\x62ot_id\x18\x06 \x01(\t\"!\n\rInventoryInfo\x12\x10\n\x08ufs_zone\x18\x01 \x01(\t\"=\n\tBuilderID\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x0f\n\x07\x62uilder\x18\x03 \x01(\t\"i\n\x0f\x42uildbucketInfo\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x34\n\x07\x62uilder\x18\x02 \x01(\x0b\x32#.chromiumos.test.artifact.BuilderID\x12\x14\n\x0c\x61ncestor_ids\x18\x03 \x03(\x03\"\xc9\x01\n\nSkylabInfo\x12\x37\n\ndrone_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\x12=\n\rswarming_info\x18\x02 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x03 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\"\xc9\x01\n\nSatlabInfo\x12=\n\rswarming_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x02 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\x12\x37\n\ndrone_info\x18\x03 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\"!\n\x0bPartnerInfo\x12\x12\n\naccount_id\x18\x01 \x01(\x03\"\xc4\x02\n\rExecutionInfo\x12\x37\n\nbuild_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.BuildInfo\x12\x33\n\x08\x64ut_info\x18\x02 \x01(\x0b\x32!.chromiumos.test.artifact.DutInfo\x12;\n\x0bskylab_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.SkylabInfoH\x00\x12;\n\x0bsatlab_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.SatlabInfoH\x00\x12?\n\x0einventory_info\x18\x05 \x01(\x0b\x32\'.chromiumos.test.artifact.InventoryInfoB\n\n\x08\x65nv_info\"\x8f\x01\n\x0c\x43ustomResult\x12\x35\n\x14result_artifact_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x39\n\x03\x63ts\x18\x02 \x01(\x0b\x32*.chromiumos.test.artifact.CustomResult.CtsH\x00\x1a\x05\n\x03\x43tsB\x06\n\x04type\"\x9c\x01\n\nTimingInfo\x12/\n\x0bqueued_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0cstarted_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x83\x03\n\x12SchedulingMetadata\x12\x65\n\x15hardware_dependencies\x18\x01 \x03(\x0b\x32\x46.chromiumos.test.artifact.SchedulingMetadata.HardwareDependenciesEntry\x12Y\n\x0fscheduling_args\x18\x02 \x03(\x0b\x32@.chromiumos.test.artifact.SchedulingMetadata.SchedulingArgsEntry\x12\x37\n\ttime_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x1a;\n\x19HardwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x35\n\x13SchedulingArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x16ProjectTrackerMetadata\x12\x0e\n\x06\x62ug_id\x18\x01 \x01(\t\"\xb5\x02\n\x11\x45xecutionMetadata\x12\x64\n\x15software_dependencies\x18\x01 \x03(\x0b\x32\x45.chromiumos.test.artifact.ExecutionMetadata.SoftwareDependenciesEntry\x12L\n\ttest_args\x18\x02 \x03(\x0b\x32\x39.chromiumos.test.artifact.ExecutionMetadata.TestArgsEntry\x1a;\n\x19SoftwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x34Z2go.chromium.org/chromiumos/config/go/test/artifactb\x06proto3')
 
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
 _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.test.artifact.test_result_pb2', globals())
@@ -106,39 +106,39 @@
   _DRONEINFO._serialized_start=4887
   _DRONEINFO._serialized_end=4956
   _SWARMINGINFO._serialized_start=4958
-  _SWARMINGINFO._serialized_end=5065
-  _INVENTORYINFO._serialized_start=5067
-  _INVENTORYINFO._serialized_end=5100
-  _BUILDERID._serialized_start=5102
-  _BUILDERID._serialized_end=5163
-  _BUILDBUCKETINFO._serialized_start=5165
-  _BUILDBUCKETINFO._serialized_end=5270
-  _SKYLABINFO._serialized_start=5273
-  _SKYLABINFO._serialized_end=5474
-  _SATLABINFO._serialized_start=5477
-  _SATLABINFO._serialized_end=5678
-  _PARTNERINFO._serialized_start=5680
-  _PARTNERINFO._serialized_end=5713
-  _EXECUTIONINFO._serialized_start=5716
-  _EXECUTIONINFO._serialized_end=6040
-  _CUSTOMRESULT._serialized_start=6043
-  _CUSTOMRESULT._serialized_end=6186
-  _CUSTOMRESULT_CTS._serialized_start=6173
-  _CUSTOMRESULT_CTS._serialized_end=6178
-  _TIMINGINFO._serialized_start=6189
-  _TIMINGINFO._serialized_end=6345
-  _SCHEDULINGMETADATA._serialized_start=6348
-  _SCHEDULINGMETADATA._serialized_end=6735
-  _SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY._serialized_start=6621
-  _SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY._serialized_end=6680
-  _SCHEDULINGMETADATA_SCHEDULINGARGSENTRY._serialized_start=6682
-  _SCHEDULINGMETADATA_SCHEDULINGARGSENTRY._serialized_end=6735
-  _PROJECTTRACKERMETADATA._serialized_start=6737
-  _PROJECTTRACKERMETADATA._serialized_end=6777
-  _EXECUTIONMETADATA._serialized_start=6780
-  _EXECUTIONMETADATA._serialized_end=7089
-  _EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY._serialized_start=6981
-  _EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY._serialized_end=7040
-  _EXECUTIONMETADATA_TESTARGSENTRY._serialized_start=7042
-  _EXECUTIONMETADATA_TESTARGSENTRY._serialized_end=7089
+  _SWARMINGINFO._serialized_end=5081
+  _INVENTORYINFO._serialized_start=5083
+  _INVENTORYINFO._serialized_end=5116
+  _BUILDERID._serialized_start=5118
+  _BUILDERID._serialized_end=5179
+  _BUILDBUCKETINFO._serialized_start=5181
+  _BUILDBUCKETINFO._serialized_end=5286
+  _SKYLABINFO._serialized_start=5289
+  _SKYLABINFO._serialized_end=5490
+  _SATLABINFO._serialized_start=5493
+  _SATLABINFO._serialized_end=5694
+  _PARTNERINFO._serialized_start=5696
+  _PARTNERINFO._serialized_end=5729
+  _EXECUTIONINFO._serialized_start=5732
+  _EXECUTIONINFO._serialized_end=6056
+  _CUSTOMRESULT._serialized_start=6059
+  _CUSTOMRESULT._serialized_end=6202
+  _CUSTOMRESULT_CTS._serialized_start=6189
+  _CUSTOMRESULT_CTS._serialized_end=6194
+  _TIMINGINFO._serialized_start=6205
+  _TIMINGINFO._serialized_end=6361
+  _SCHEDULINGMETADATA._serialized_start=6364
+  _SCHEDULINGMETADATA._serialized_end=6751
+  _SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY._serialized_start=6637
+  _SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY._serialized_end=6696
+  _SCHEDULINGMETADATA_SCHEDULINGARGSENTRY._serialized_start=6698
+  _SCHEDULINGMETADATA_SCHEDULINGARGSENTRY._serialized_end=6751
+  _PROJECTTRACKERMETADATA._serialized_start=6753
+  _PROJECTTRACKERMETADATA._serialized_end=6793
+  _EXECUTIONMETADATA._serialized_start=6796
+  _EXECUTIONMETADATA._serialized_end=7105
+  _EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY._serialized_start=6997
+  _EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY._serialized_end=7056
+  _EXECUTIONMETADATA_TESTARGSENTRY._serialized_start=7058
+  _EXECUTIONMETADATA_TESTARGSENTRY._serialized_end=7105
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen/chromiumos/test/lab/api/dut_pb2.py b/api/gen/chromiumos/test/lab/api/dut_pb2.py
index 68106e6..4fd9b37 100644
--- a/api/gen/chromiumos/test/lab/api/dut_pb2.py
+++ b/api/gen/chromiumos/test/lab/api/dut_pb2.py
@@ -13,9 +13,10 @@
 
 from chromite.api.gen.chromiumos.config.api import device_config_id_pb2 as chromiumos_dot_config_dot_api_dot_device__config__id__pb2
 from chromite.api.gen.chromiumos.test.lab.api import ip_endpoint_pb2 as chromiumos_dot_test_dot_lab_dot_api_dot_ip__endpoint__pb2
+from chromite.api.gen.chromiumos.test.lab.api import pasit_host_pb2 as chromiumos_dot_test_dot_lab_dot_api_dot_pasit__host__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chromiumos/test/lab/api/dut.proto\x12\x17\x63hromiumos.test.lab.api\x1a,chromiumos/config/api/device_config_id.proto\x1a)chromiumos/test/lab/api/ip_endpoint.proto\"\xc4\r\n\x03\x44ut\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x39\n\x08\x63hromeos\x18\x02 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.ChromeOSH\x00\x12\x37\n\x07\x61ndroid\x18\x03 \x01(\x0b\x32$.chromiumos.test.lab.api.Dut.AndroidH\x00\x12\x39\n\x08\x64\x65vboard\x18\x05 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.DevboardH\x00\x12:\n\x0c\x63\x61\x63he_server\x18\x04 \x01(\x0b\x32$.chromiumos.test.lab.api.CacheServer\x12\x38\n\x0bwifi_secret\x18\x06 \x01(\x0b\x32#.chromiumos.test.lab.api.WifiSecret\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\x1a\xd2\x07\n\x08\x43hromeOS\x12?\n\x10\x64\x65vice_config_id\x18\x03 \x01(\x0b\x32%.chromiumos.config.api.DeviceConfigId\x12\x30\n\x03ssh\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x0f \x01(\t\x12\x34\n\tdut_model\x18\x0e \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x12-\n\x05servo\x18\x04 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x35\n\tchameleon\x18\x05 \x01(\x0b\x32\".chromiumos.test.lab.api.Chameleon\x12)\n\x03rpm\x18\x06 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.RPM\x12\x41\n\x10\x65xternal_cameras\x18\x07 \x03(\x0b\x32\'.chromiumos.test.lab.api.ExternalCamera\x12-\n\x05\x61udio\x18\x08 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Audio\x12+\n\x04wifi\x18\t \x01(\x0b\x32\x1d.chromiumos.test.lab.api.Wifi\x12-\n\x05touch\x18\n \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Touch\x12\x35\n\tcamerabox\x18\x0b \x01(\x0b\x32\".chromiumos.test.lab.api.Camerabox\x12.\n\x06\x63\x61\x62les\x18\x0c \x03(\x0b\x32\x1e.chromiumos.test.lab.api.Cable\x12\x33\n\x08\x63\x65llular\x18\r \x01(\x0b\x32!.chromiumos.test.lab.api.Cellular\x12\x16\n\x0ehwid_component\x18\x10 \x03(\t\x12?\n\x0f\x62luetooth_peers\x18\x11 \x03(\x0b\x32&.chromiumos.test.lab.api.BluetoothPeer\x12\x0b\n\x03sku\x18\x12 \x01(\t\x12\x0c\n\x04hwid\x18\x13 \x01(\t\x12-\n\x05phase\x18\x14 \x01(\x0e\x32\x1e.chromiumos.test.lab.api.Phase\x12\x33\n\tsim_infos\x18\x15 \x03(\x0b\x32 .chromiumos.test.lab.api.SIMInfo\x12\x36\n\nmodem_info\x18\x16 \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfoJ\x04\x08\x01\x10\x02\x1a\xa6\x01\n\x07\x41ndroid\x12@\n\x13\x61ssociated_hostname\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rserial_number\x18\x03 \x01(\t\x12\x34\n\tdut_model\x18\x04 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x1a\xcb\x01\n\x08\x44\x65vboard\x12\x12\n\nboard_type\x18\x01 \x01(\t\x12\x19\n\x11ultradebug_serial\x18\x02 \x01(\t\x12-\n\x05servo\x18\x03 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x1d\n\x15\x66ingerprint_module_id\x18\x04 \x01(\t\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x34\n\tdut_model\x18\x06 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModelB\n\n\x08\x64ut_type\"4\n\x08\x44utModel\x12\x14\n\x0c\x62uild_target\x18\x01 \x01(\t\x12\x12\n\nmodel_name\x18\x02 \x01(\t\"\x8f\x01\n\x0b\x44utTopology\x12\x33\n\x02id\x18\x03 \x01(\x0b\x32\'.chromiumos.test.lab.api.DutTopology.Id\x12*\n\x04\x64uts\x18\x04 \x03(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\tJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03\")\n\x05\x41udio\x12\x11\n\taudio_box\x18\x01 \x01(\x08\x12\r\n\x05\x61trus\x18\x02 \x01(\x08\"\x95\x01\n\x05\x43\x61\x62le\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32#.chromiumos.test.lab.api.Cable.Type\"Y\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\r\n\tAUDIOJACK\x10\x01\x12\x0c\n\x08USBAUDIO\x10\x02\x12\x0f\n\x0bUSBPRINTING\x10\x03\x12\r\n\tHDMIAUDIO\x10\x04\"C\n\x0b\x43\x61\x63heServer\x12\x34\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"}\n\tCamerabox\x12\x39\n\x06\x66\x61\x63ing\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Camerabox.Facing\"5\n\x06\x46\x61\x63ing\x12\x16\n\x12\x46\x41\x43ING_UNSPECIFIED\x10\x00\x12\x08\n\x04\x42\x41\x43K\x10\x01\x12\t\n\x05\x46RONT\x10\x02\"\xa3\x01\n\x08\x43\x65llular\x12=\n\toperators\x18\x01 \x03(\x0e\x32*.chromiumos.test.lab.api.Cellular.Operator\x12\x0f\n\x07\x63\x61rrier\x18\x02 \x01(\t\"G\n\x08Operator\x12\x18\n\x14OPERATOR_UNSPECIFIED\x10\x00\x12\x07\n\x03\x41TT\x10\x01\x12\x0b\n\x07VERIZON\x10\x02\x12\x0b\n\x07TMOBILE\x10\x03\"\x8e\x01\n\tModemInfo\x12\x30\n\x04type\x18\x01 \x01(\x0e\x32\".chromiumos.test.lab.api.ModemType\x12\x0c\n\x04imei\x18\x02 \x01(\t\x12\x17\n\x0fsupported_bands\x18\x03 \x01(\t\x12\x11\n\tsim_count\x18\x04 \x01(\x05\x12\x15\n\rmodel_variant\x18\x05 \x01(\t\"\xa9\x01\n\x07SIMInfo\x12\x0f\n\x07slot_id\x18\x01 \x01(\x05\x12.\n\x04type\x18\x02 \x01(\x0e\x32 .chromiumos.test.lab.api.SIMType\x12\x0b\n\x03\x65id\x18\x03 \x01(\t\x12\x11\n\ttest_esim\x18\x04 \x01(\x08\x12=\n\x0cprofile_info\x18\x05 \x03(\x0b\x32\'.chromiumos.test.lab.api.SIMProfileInfo\"\x95\x01\n\x0eSIMProfileInfo\x12\r\n\x05iccid\x18\x01 \x01(\t\x12\x0f\n\x07sim_pin\x18\x02 \x01(\t\x12\x0f\n\x07sim_puk\x18\x03 \x01(\t\x12>\n\x0c\x63\x61rrier_name\x18\x04 \x01(\x0e\x32(.chromiumos.test.lab.api.NetworkProvider\x12\x12\n\nown_number\x18\x05 \x01(\t\"\xac\x03\n\tChameleon\x12\x42\n\x0bperipherals\x18\x01 \x03(\x0e\x32-.chromiumos.test.lab.api.Chameleon.Peripheral\x12\x13\n\x0b\x61udio_board\x18\x02 \x01(\x08\x12\x37\n\x05state\x18\x03 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\x12\x10\n\x08hostname\x18\x04 \x01(\t\x12\x36\n\x05types\x18\x05 \x03(\x0e\x32\'.chromiumos.test.lab.api.Chameleon.Type\"\x94\x01\n\nPeripheral\x12\x1a\n\x16PERIPHERAL_UNSPECIFIED\x10\x00\x12\n\n\x06\x42T_HID\x10\x01\x12\x06\n\x02\x44P\x10\x02\x12\x0b\n\x07\x44P_HDMI\x10\x03\x12\x07\n\x03VGA\x10\x04\x12\x08\n\x04HDMI\x10\x05\x12\x0e\n\nBT_BLE_HID\x10\x06\x12\x10\n\x0c\x42T_A2DP_SINK\x10\x07\x12\x0b\n\x07\x42T_PEER\x10\x08\x12\x07\n\x03RPI\x10\t\",\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x06\n\x02V2\x10\x01\x12\x06\n\x02V3\x10\x02\"\x83\x01\n\x0e\x45xternalCamera\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.test.lab.api.ExternalCamera.Type\"5\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\n\n\x06HUDDLY\x10\x01\x12\x0b\n\x07PTZPRO2\x10\x02\"\xef\x01\n\x03RPM\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12=\n\x10\x66rontend_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12@\n\x13power_unit_hostname\x18\x03 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x19\n\x11power_unit_outlet\x18\x04 \x01(\t\x12;\n\x0ehydra_hostname\x18\x05 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"e\n\x05Servo\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12;\n\x0eservod_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0e\n\x06serial\x18\x03 \x01(\t\"\x15\n\x05Touch\x12\x0c\n\x04mimo\x18\x01 \x01(\x08\"\xe6\x01\n\x04Wifi\x12>\n\x0b\x65nvironment\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Wifi.Environment\x12\x35\n\x07\x61ntenna\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.WifiAntenna\"g\n\x0b\x45nvironment\x12\x1b\n\x17\x45NVIRONMENT_UNSPECIFIED\x10\x00\x12\x0c\n\x08STANDARD\x10\x01\x12\r\n\tWIFI_CELL\x10\x02\x12\t\n\x05\x43HAOS\x10\x03\x12\x13\n\x0fROUTER_802_11AX\x10\x04\"\x95\x01\n\x0bWifiAntenna\x12\x43\n\nconnection\x18\x01 \x01(\x0e\x32/.chromiumos.test.lab.api.WifiAntenna.Connection\"A\n\nConnection\x12\x1a\n\x16\x43ONNECTION_UNSPECIFIED\x10\x00\x12\x0e\n\nCONDUCTIVE\x10\x01\x12\x07\n\x03OTA\x10\x02\"Z\n\rBluetoothPeer\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\x37\n\x05state\x18\x02 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\">\n\nWifiSecret\x12\x0c\n\x04ssid\x18\x01 \x01(\t\x12\x10\n\x08security\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t*\xfb\x01\n\tModemType\x12\x1a\n\x16MODEM_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n\x16MODEM_TYPE_UNSUPPORTED\x10\x08\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7180\x10\x01\x12\x1e\n\x1aMODEM_TYPE_FIBOCOMM_L850GL\x10\x02\x12\x14\n\x10MODEM_TYPE_NL668\x10\x03\x12\x14\n\x10MODEM_TYPE_FM350\x10\x04\x12\x14\n\x10MODEM_TYPE_FM101\x10\x05\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7280\x10\x06\x12\x14\n\x10MODEM_TYPE_EM060\x10\x07*\xf4\x02\n\x0fNetworkProvider\x12\x11\n\rNETWORK_OTHER\x10\x00\x12\x17\n\x13NETWORK_UNSUPPORTED\x10\x05\x12\x10\n\x0cNETWORK_TEST\x10\x01\x12\x0f\n\x0bNETWORK_ATT\x10\x02\x12\x13\n\x0fNETWORK_TMOBILE\x10\x03\x12\x13\n\x0fNETWORK_VERIZON\x10\x04\x12\x12\n\x0eNETWORK_SPRINT\x10\x06\x12\x12\n\x0eNETWORK_DOCOMO\x10\x07\x12\x14\n\x10NETWORK_SOFTBANK\x10\x08\x12\x10\n\x0cNETWORK_KDDI\x10\t\x12\x13\n\x0fNETWORK_RAKUTEN\x10\n\x12\x14\n\x10NETWORK_VODAFONE\x10\x0b\x12\x0e\n\nNETWORK_EE\x10\x0c\x12\x15\n\x11NETWORK_AMARISOFT\x10\r\x12\x11\n\rNETWORK_ROGER\x10\x0e\x12\x10\n\x0cNETWORK_BELL\x10\x0f\x12\x11\n\rNETWORK_TELUS\x10\x10\x12\x0e\n\nNETWORK_FI\x10\x11*=\n\x07SIMType\x12\x0f\n\x0bSIM_UNKNOWN\x10\x00\x12\x10\n\x0cSIM_PHYSICAL\x10\x01\x12\x0f\n\x0bSIM_DIGITAL\x10\x02*`\n\x0fPeripheralState\x12 \n\x1cPERIPHERAL_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07WORKING\x10\x01\x12\n\n\x06\x42ROKEN\x10\x02\x12\x12\n\x0eNOT_APPLICABLE\x10\x03*\xfb\x03\n\x05Phase\x12\x15\n\x11PHASE_UNSPECIFIED\x10\x00\x12\x07\n\x03\x44VT\x10\x01\x12\t\n\x05\x44VT_2\x10\x02\x12\x11\n\rDVT_2_MPS_LTE\x10\x03\x12\x0f\n\x0b\x44VT_BIPSHIP\x10\x04\x12\x0e\n\nDVT_BOOKEM\x10\x05\x12\x0f\n\x0b\x44VT_ELECTRO\x10\x06\x12\r\n\tDVT_LOCKE\x10\x07\x12\x0e\n\nDVT_OSCINO\x10\x08\x12\x0e\n\nDVT_REKS14\x10\t\x12\x14\n\x10\x44VT_REKS14_TOUCH\x10\n\x12\r\n\tDVT_TOUCH\x10\x0b\x12\x07\n\x03\x45VT\x10\x0c\x12\x11\n\rEVT_FLEEX_LTE\x10\r\x12\n\n\x06\x45VT_HQ\x10\x0e\x12\x0b\n\x07\x45VT_LTE\x10\x0f\x12\r\n\tEVT_MAPLE\x10\x10\x12\r\n\tEVT_PUJJO\x10\x11\x12\t\n\x05PROTO\x10\x12\x12\n\n\x06PROTO1\x10\x13\x12\x07\n\x03PVT\x10\x14\x12\x0e\n\nPVT_TERRA3\x10\x15\x12\n\n\x06PVT_US\x10\x16\x12\t\n\x05PVT_2\x10\x17\x12\x0e\n\nPVT_BOOKEM\x10\x18\x12\x0f\n\x0bPVT_ELECTRO\x10\x19\x12\x0e\n\nPVT_GIK360\x10\x1a\x12\x0c\n\x08PVT_LILI\x10\x1b\x12\x0b\n\x07PVT_LTE\x10\x1c\x12\x0f\n\x0bPVT_NEW_CPU\x10\x1d\x12\x0c\n\x08PVT_SAND\x10\x1e\x12\x11\n\rPVT_TUNE_BITS\x10\x1f\x12\x0e\n\nPVT_TELESU\x10 \x12\x06\n\x02SR\x10!B3Z1go.chromium.org/chromiumos/config/go/test/lab/apib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chromiumos/test/lab/api/dut.proto\x12\x17\x63hromiumos.test.lab.api\x1a,chromiumos/config/api/device_config_id.proto\x1a)chromiumos/test/lab/api/ip_endpoint.proto\x1a(chromiumos/test/lab/api/pasit_host.proto\"\xfc\r\n\x03\x44ut\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x39\n\x08\x63hromeos\x18\x02 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.ChromeOSH\x00\x12\x37\n\x07\x61ndroid\x18\x03 \x01(\x0b\x32$.chromiumos.test.lab.api.Dut.AndroidH\x00\x12\x39\n\x08\x64\x65vboard\x18\x05 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.DevboardH\x00\x12:\n\x0c\x63\x61\x63he_server\x18\x04 \x01(\x0b\x32$.chromiumos.test.lab.api.CacheServer\x12\x38\n\x0bwifi_secret\x18\x06 \x01(\x0b\x32#.chromiumos.test.lab.api.WifiSecret\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\x1a\x8a\x08\n\x08\x43hromeOS\x12?\n\x10\x64\x65vice_config_id\x18\x03 \x01(\x0b\x32%.chromiumos.config.api.DeviceConfigId\x12\x30\n\x03ssh\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x0f \x01(\t\x12\x34\n\tdut_model\x18\x0e \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x12-\n\x05servo\x18\x04 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x35\n\tchameleon\x18\x05 \x01(\x0b\x32\".chromiumos.test.lab.api.Chameleon\x12)\n\x03rpm\x18\x06 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.RPM\x12\x41\n\x10\x65xternal_cameras\x18\x07 \x03(\x0b\x32\'.chromiumos.test.lab.api.ExternalCamera\x12-\n\x05\x61udio\x18\x08 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Audio\x12+\n\x04wifi\x18\t \x01(\x0b\x32\x1d.chromiumos.test.lab.api.Wifi\x12-\n\x05touch\x18\n \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Touch\x12\x35\n\tcamerabox\x18\x0b \x01(\x0b\x32\".chromiumos.test.lab.api.Camerabox\x12.\n\x06\x63\x61\x62les\x18\x0c \x03(\x0b\x32\x1e.chromiumos.test.lab.api.Cable\x12\x33\n\x08\x63\x65llular\x18\r \x01(\x0b\x32!.chromiumos.test.lab.api.Cellular\x12\x16\n\x0ehwid_component\x18\x10 \x03(\t\x12?\n\x0f\x62luetooth_peers\x18\x11 \x03(\x0b\x32&.chromiumos.test.lab.api.BluetoothPeer\x12\x0b\n\x03sku\x18\x12 \x01(\t\x12\x0c\n\x04hwid\x18\x13 \x01(\t\x12-\n\x05phase\x18\x14 \x01(\x0e\x32\x1e.chromiumos.test.lab.api.Phase\x12\x33\n\tsim_infos\x18\x15 \x03(\x0b\x32 .chromiumos.test.lab.api.SIMInfo\x12\x36\n\nmodem_info\x18\x16 \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfo\x12\x36\n\npasit_host\x18\x17 \x01(\x0b\x32\".chromiumos.test.lab.api.PasitHostJ\x04\x08\x01\x10\x02\x1a\xa6\x01\n\x07\x41ndroid\x12@\n\x13\x61ssociated_hostname\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rserial_number\x18\x03 \x01(\t\x12\x34\n\tdut_model\x18\x04 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x1a\xcb\x01\n\x08\x44\x65vboard\x12\x12\n\nboard_type\x18\x01 \x01(\t\x12\x19\n\x11ultradebug_serial\x18\x02 \x01(\t\x12-\n\x05servo\x18\x03 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x1d\n\x15\x66ingerprint_module_id\x18\x04 \x01(\t\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x34\n\tdut_model\x18\x06 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModelB\n\n\x08\x64ut_type\"4\n\x08\x44utModel\x12\x14\n\x0c\x62uild_target\x18\x01 \x01(\t\x12\x12\n\nmodel_name\x18\x02 \x01(\t\"\x8f\x01\n\x0b\x44utTopology\x12\x33\n\x02id\x18\x03 \x01(\x0b\x32\'.chromiumos.test.lab.api.DutTopology.Id\x12*\n\x04\x64uts\x18\x04 \x03(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\tJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03\")\n\x05\x41udio\x12\x11\n\taudio_box\x18\x01 \x01(\x08\x12\r\n\x05\x61trus\x18\x02 \x01(\x08\"\x95\x01\n\x05\x43\x61\x62le\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32#.chromiumos.test.lab.api.Cable.Type\"Y\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\r\n\tAUDIOJACK\x10\x01\x12\x0c\n\x08USBAUDIO\x10\x02\x12\x0f\n\x0bUSBPRINTING\x10\x03\x12\r\n\tHDMIAUDIO\x10\x04\"C\n\x0b\x43\x61\x63heServer\x12\x34\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"}\n\tCamerabox\x12\x39\n\x06\x66\x61\x63ing\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Camerabox.Facing\"5\n\x06\x46\x61\x63ing\x12\x16\n\x12\x46\x41\x43ING_UNSPECIFIED\x10\x00\x12\x08\n\x04\x42\x41\x43K\x10\x01\x12\t\n\x05\x46RONT\x10\x02\"\xa3\x01\n\x08\x43\x65llular\x12=\n\toperators\x18\x01 \x03(\x0e\x32*.chromiumos.test.lab.api.Cellular.Operator\x12\x0f\n\x07\x63\x61rrier\x18\x02 \x01(\t\"G\n\x08Operator\x12\x18\n\x14OPERATOR_UNSPECIFIED\x10\x00\x12\x07\n\x03\x41TT\x10\x01\x12\x0b\n\x07VERIZON\x10\x02\x12\x0b\n\x07TMOBILE\x10\x03\"\x8e\x01\n\tModemInfo\x12\x30\n\x04type\x18\x01 \x01(\x0e\x32\".chromiumos.test.lab.api.ModemType\x12\x0c\n\x04imei\x18\x02 \x01(\t\x12\x17\n\x0fsupported_bands\x18\x03 \x01(\t\x12\x11\n\tsim_count\x18\x04 \x01(\x05\x12\x15\n\rmodel_variant\x18\x05 \x01(\t\"\xa9\x01\n\x07SIMInfo\x12\x0f\n\x07slot_id\x18\x01 \x01(\x05\x12.\n\x04type\x18\x02 \x01(\x0e\x32 .chromiumos.test.lab.api.SIMType\x12\x0b\n\x03\x65id\x18\x03 \x01(\t\x12\x11\n\ttest_esim\x18\x04 \x01(\x08\x12=\n\x0cprofile_info\x18\x05 \x03(\x0b\x32\'.chromiumos.test.lab.api.SIMProfileInfo\"\x95\x01\n\x0eSIMProfileInfo\x12\r\n\x05iccid\x18\x01 \x01(\t\x12\x0f\n\x07sim_pin\x18\x02 \x01(\t\x12\x0f\n\x07sim_puk\x18\x03 \x01(\t\x12>\n\x0c\x63\x61rrier_name\x18\x04 \x01(\x0e\x32(.chromiumos.test.lab.api.NetworkProvider\x12\x12\n\nown_number\x18\x05 \x01(\t\"\xac\x03\n\tChameleon\x12\x42\n\x0bperipherals\x18\x01 \x03(\x0e\x32-.chromiumos.test.lab.api.Chameleon.Peripheral\x12\x13\n\x0b\x61udio_board\x18\x02 \x01(\x08\x12\x37\n\x05state\x18\x03 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\x12\x10\n\x08hostname\x18\x04 \x01(\t\x12\x36\n\x05types\x18\x05 \x03(\x0e\x32\'.chromiumos.test.lab.api.Chameleon.Type\"\x94\x01\n\nPeripheral\x12\x1a\n\x16PERIPHERAL_UNSPECIFIED\x10\x00\x12\n\n\x06\x42T_HID\x10\x01\x12\x06\n\x02\x44P\x10\x02\x12\x0b\n\x07\x44P_HDMI\x10\x03\x12\x07\n\x03VGA\x10\x04\x12\x08\n\x04HDMI\x10\x05\x12\x0e\n\nBT_BLE_HID\x10\x06\x12\x10\n\x0c\x42T_A2DP_SINK\x10\x07\x12\x0b\n\x07\x42T_PEER\x10\x08\x12\x07\n\x03RPI\x10\t\",\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x06\n\x02V2\x10\x01\x12\x06\n\x02V3\x10\x02\"\x83\x01\n\x0e\x45xternalCamera\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.test.lab.api.ExternalCamera.Type\"5\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\n\n\x06HUDDLY\x10\x01\x12\x0b\n\x07PTZPRO2\x10\x02\"\xef\x01\n\x03RPM\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12=\n\x10\x66rontend_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12@\n\x13power_unit_hostname\x18\x03 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x19\n\x11power_unit_outlet\x18\x04 \x01(\t\x12;\n\x0ehydra_hostname\x18\x05 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"e\n\x05Servo\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12;\n\x0eservod_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0e\n\x06serial\x18\x03 \x01(\t\"\x15\n\x05Touch\x12\x0c\n\x04mimo\x18\x01 \x01(\x08\"\xe6\x01\n\x04Wifi\x12>\n\x0b\x65nvironment\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Wifi.Environment\x12\x35\n\x07\x61ntenna\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.WifiAntenna\"g\n\x0b\x45nvironment\x12\x1b\n\x17\x45NVIRONMENT_UNSPECIFIED\x10\x00\x12\x0c\n\x08STANDARD\x10\x01\x12\r\n\tWIFI_CELL\x10\x02\x12\t\n\x05\x43HAOS\x10\x03\x12\x13\n\x0fROUTER_802_11AX\x10\x04\"\x95\x01\n\x0bWifiAntenna\x12\x43\n\nconnection\x18\x01 \x01(\x0e\x32/.chromiumos.test.lab.api.WifiAntenna.Connection\"A\n\nConnection\x12\x1a\n\x16\x43ONNECTION_UNSPECIFIED\x10\x00\x12\x0e\n\nCONDUCTIVE\x10\x01\x12\x07\n\x03OTA\x10\x02\"Z\n\rBluetoothPeer\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\x37\n\x05state\x18\x02 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\">\n\nWifiSecret\x12\x0c\n\x04ssid\x18\x01 \x01(\t\x12\x10\n\x08security\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t*\xfb\x01\n\tModemType\x12\x1a\n\x16MODEM_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n\x16MODEM_TYPE_UNSUPPORTED\x10\x08\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7180\x10\x01\x12\x1e\n\x1aMODEM_TYPE_FIBOCOMM_L850GL\x10\x02\x12\x14\n\x10MODEM_TYPE_NL668\x10\x03\x12\x14\n\x10MODEM_TYPE_FM350\x10\x04\x12\x14\n\x10MODEM_TYPE_FM101\x10\x05\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7280\x10\x06\x12\x14\n\x10MODEM_TYPE_EM060\x10\x07*\xf4\x02\n\x0fNetworkProvider\x12\x11\n\rNETWORK_OTHER\x10\x00\x12\x17\n\x13NETWORK_UNSUPPORTED\x10\x05\x12\x10\n\x0cNETWORK_TEST\x10\x01\x12\x0f\n\x0bNETWORK_ATT\x10\x02\x12\x13\n\x0fNETWORK_TMOBILE\x10\x03\x12\x13\n\x0fNETWORK_VERIZON\x10\x04\x12\x12\n\x0eNETWORK_SPRINT\x10\x06\x12\x12\n\x0eNETWORK_DOCOMO\x10\x07\x12\x14\n\x10NETWORK_SOFTBANK\x10\x08\x12\x10\n\x0cNETWORK_KDDI\x10\t\x12\x13\n\x0fNETWORK_RAKUTEN\x10\n\x12\x14\n\x10NETWORK_VODAFONE\x10\x0b\x12\x0e\n\nNETWORK_EE\x10\x0c\x12\x15\n\x11NETWORK_AMARISOFT\x10\r\x12\x11\n\rNETWORK_ROGER\x10\x0e\x12\x10\n\x0cNETWORK_BELL\x10\x0f\x12\x11\n\rNETWORK_TELUS\x10\x10\x12\x0e\n\nNETWORK_FI\x10\x11*=\n\x07SIMType\x12\x0f\n\x0bSIM_UNKNOWN\x10\x00\x12\x10\n\x0cSIM_PHYSICAL\x10\x01\x12\x0f\n\x0bSIM_DIGITAL\x10\x02*`\n\x0fPeripheralState\x12 \n\x1cPERIPHERAL_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07WORKING\x10\x01\x12\n\n\x06\x42ROKEN\x10\x02\x12\x12\n\x0eNOT_APPLICABLE\x10\x03*\xfb\x03\n\x05Phase\x12\x15\n\x11PHASE_UNSPECIFIED\x10\x00\x12\x07\n\x03\x44VT\x10\x01\x12\t\n\x05\x44VT_2\x10\x02\x12\x11\n\rDVT_2_MPS_LTE\x10\x03\x12\x0f\n\x0b\x44VT_BIPSHIP\x10\x04\x12\x0e\n\nDVT_BOOKEM\x10\x05\x12\x0f\n\x0b\x44VT_ELECTRO\x10\x06\x12\r\n\tDVT_LOCKE\x10\x07\x12\x0e\n\nDVT_OSCINO\x10\x08\x12\x0e\n\nDVT_REKS14\x10\t\x12\x14\n\x10\x44VT_REKS14_TOUCH\x10\n\x12\r\n\tDVT_TOUCH\x10\x0b\x12\x07\n\x03\x45VT\x10\x0c\x12\x11\n\rEVT_FLEEX_LTE\x10\r\x12\n\n\x06\x45VT_HQ\x10\x0e\x12\x0b\n\x07\x45VT_LTE\x10\x0f\x12\r\n\tEVT_MAPLE\x10\x10\x12\r\n\tEVT_PUJJO\x10\x11\x12\t\n\x05PROTO\x10\x12\x12\n\n\x06PROTO1\x10\x13\x12\x07\n\x03PVT\x10\x14\x12\x0e\n\nPVT_TERRA3\x10\x15\x12\n\n\x06PVT_US\x10\x16\x12\t\n\x05PVT_2\x10\x17\x12\x0e\n\nPVT_BOOKEM\x10\x18\x12\x0f\n\x0bPVT_ELECTRO\x10\x19\x12\x0e\n\nPVT_GIK360\x10\x1a\x12\x0c\n\x08PVT_LILI\x10\x1b\x12\x0b\n\x07PVT_LTE\x10\x1c\x12\x0f\n\x0bPVT_NEW_CPU\x10\x1d\x12\x0c\n\x08PVT_SAND\x10\x1e\x12\x11\n\rPVT_TUNE_BITS\x10\x1f\x12\x0e\n\nPVT_TELESU\x10 \x12\x06\n\x02SR\x10!B3Z1go.chromium.org/chromiumos/config/go/test/lab/apib\x06proto3')
 
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
 _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.test.lab.api.dut_pb2', globals())
@@ -23,80 +24,80 @@
 
   DESCRIPTOR._options = None
   DESCRIPTOR._serialized_options = b'Z1go.chromium.org/chromiumos/config/go/test/lab/api'
-  _MODEMTYPE._serialized_start=4587
-  _MODEMTYPE._serialized_end=4838
-  _NETWORKPROVIDER._serialized_start=4841
-  _NETWORKPROVIDER._serialized_end=5213
-  _SIMTYPE._serialized_start=5215
-  _SIMTYPE._serialized_end=5276
-  _PERIPHERALSTATE._serialized_start=5278
-  _PERIPHERALSTATE._serialized_end=5374
-  _PHASE._serialized_start=5377
-  _PHASE._serialized_end=5884
-  _DUT._serialized_start=152
-  _DUT._serialized_end=1884
-  _DUT_ID._serialized_start=497
-  _DUT_ID._serialized_end=516
-  _DUT_CHROMEOS._serialized_start=519
-  _DUT_CHROMEOS._serialized_end=1497
-  _DUT_ANDROID._serialized_start=1500
-  _DUT_ANDROID._serialized_end=1666
-  _DUT_DEVBOARD._serialized_start=1669
-  _DUT_DEVBOARD._serialized_end=1872
-  _DUTMODEL._serialized_start=1886
-  _DUTMODEL._serialized_end=1938
-  _DUTTOPOLOGY._serialized_start=1941
-  _DUTTOPOLOGY._serialized_end=2084
-  _DUTTOPOLOGY_ID._serialized_start=497
-  _DUTTOPOLOGY_ID._serialized_end=516
-  _AUDIO._serialized_start=2086
-  _AUDIO._serialized_end=2127
-  _CABLE._serialized_start=2130
-  _CABLE._serialized_end=2279
-  _CABLE_TYPE._serialized_start=2190
-  _CABLE_TYPE._serialized_end=2279
-  _CACHESERVER._serialized_start=2281
-  _CACHESERVER._serialized_end=2348
-  _CAMERABOX._serialized_start=2350
-  _CAMERABOX._serialized_end=2475
-  _CAMERABOX_FACING._serialized_start=2422
-  _CAMERABOX_FACING._serialized_end=2475
-  _CELLULAR._serialized_start=2478
-  _CELLULAR._serialized_end=2641
-  _CELLULAR_OPERATOR._serialized_start=2570
-  _CELLULAR_OPERATOR._serialized_end=2641
-  _MODEMINFO._serialized_start=2644
-  _MODEMINFO._serialized_end=2786
-  _SIMINFO._serialized_start=2789
-  _SIMINFO._serialized_end=2958
-  _SIMPROFILEINFO._serialized_start=2961
-  _SIMPROFILEINFO._serialized_end=3110
-  _CHAMELEON._serialized_start=3113
-  _CHAMELEON._serialized_end=3541
-  _CHAMELEON_PERIPHERAL._serialized_start=3347
-  _CHAMELEON_PERIPHERAL._serialized_end=3495
-  _CHAMELEON_TYPE._serialized_start=3497
-  _CHAMELEON_TYPE._serialized_end=3541
-  _EXTERNALCAMERA._serialized_start=3544
-  _EXTERNALCAMERA._serialized_end=3675
-  _EXTERNALCAMERA_TYPE._serialized_start=3622
-  _EXTERNALCAMERA_TYPE._serialized_end=3675
-  _RPM._serialized_start=3678
-  _RPM._serialized_end=3917
-  _SERVO._serialized_start=3919
-  _SERVO._serialized_end=4020
-  _TOUCH._serialized_start=4022
-  _TOUCH._serialized_end=4043
-  _WIFI._serialized_start=4046
-  _WIFI._serialized_end=4276
-  _WIFI_ENVIRONMENT._serialized_start=4173
-  _WIFI_ENVIRONMENT._serialized_end=4276
-  _WIFIANTENNA._serialized_start=4279
-  _WIFIANTENNA._serialized_end=4428
-  _WIFIANTENNA_CONNECTION._serialized_start=4363
-  _WIFIANTENNA_CONNECTION._serialized_end=4428
-  _BLUETOOTHPEER._serialized_start=4430
-  _BLUETOOTHPEER._serialized_end=4520
-  _WIFISECRET._serialized_start=4522
-  _WIFISECRET._serialized_end=4584
+  _MODEMTYPE._serialized_start=4685
+  _MODEMTYPE._serialized_end=4936
+  _NETWORKPROVIDER._serialized_start=4939
+  _NETWORKPROVIDER._serialized_end=5311
+  _SIMTYPE._serialized_start=5313
+  _SIMTYPE._serialized_end=5374
+  _PERIPHERALSTATE._serialized_start=5376
+  _PERIPHERALSTATE._serialized_end=5472
+  _PHASE._serialized_start=5475
+  _PHASE._serialized_end=5982
+  _DUT._serialized_start=194
+  _DUT._serialized_end=1982
+  _DUT_ID._serialized_start=539
+  _DUT_ID._serialized_end=558
+  _DUT_CHROMEOS._serialized_start=561
+  _DUT_CHROMEOS._serialized_end=1595
+  _DUT_ANDROID._serialized_start=1598
+  _DUT_ANDROID._serialized_end=1764
+  _DUT_DEVBOARD._serialized_start=1767
+  _DUT_DEVBOARD._serialized_end=1970
+  _DUTMODEL._serialized_start=1984
+  _DUTMODEL._serialized_end=2036
+  _DUTTOPOLOGY._serialized_start=2039
+  _DUTTOPOLOGY._serialized_end=2182
+  _DUTTOPOLOGY_ID._serialized_start=539
+  _DUTTOPOLOGY_ID._serialized_end=558
+  _AUDIO._serialized_start=2184
+  _AUDIO._serialized_end=2225
+  _CABLE._serialized_start=2228
+  _CABLE._serialized_end=2377
+  _CABLE_TYPE._serialized_start=2288
+  _CABLE_TYPE._serialized_end=2377
+  _CACHESERVER._serialized_start=2379
+  _CACHESERVER._serialized_end=2446
+  _CAMERABOX._serialized_start=2448
+  _CAMERABOX._serialized_end=2573
+  _CAMERABOX_FACING._serialized_start=2520
+  _CAMERABOX_FACING._serialized_end=2573
+  _CELLULAR._serialized_start=2576
+  _CELLULAR._serialized_end=2739
+  _CELLULAR_OPERATOR._serialized_start=2668
+  _CELLULAR_OPERATOR._serialized_end=2739
+  _MODEMINFO._serialized_start=2742
+  _MODEMINFO._serialized_end=2884
+  _SIMINFO._serialized_start=2887
+  _SIMINFO._serialized_end=3056
+  _SIMPROFILEINFO._serialized_start=3059
+  _SIMPROFILEINFO._serialized_end=3208
+  _CHAMELEON._serialized_start=3211
+  _CHAMELEON._serialized_end=3639
+  _CHAMELEON_PERIPHERAL._serialized_start=3445
+  _CHAMELEON_PERIPHERAL._serialized_end=3593
+  _CHAMELEON_TYPE._serialized_start=3595
+  _CHAMELEON_TYPE._serialized_end=3639
+  _EXTERNALCAMERA._serialized_start=3642
+  _EXTERNALCAMERA._serialized_end=3773
+  _EXTERNALCAMERA_TYPE._serialized_start=3720
+  _EXTERNALCAMERA_TYPE._serialized_end=3773
+  _RPM._serialized_start=3776
+  _RPM._serialized_end=4015
+  _SERVO._serialized_start=4017
+  _SERVO._serialized_end=4118
+  _TOUCH._serialized_start=4120
+  _TOUCH._serialized_end=4141
+  _WIFI._serialized_start=4144
+  _WIFI._serialized_end=4374
+  _WIFI_ENVIRONMENT._serialized_start=4271
+  _WIFI_ENVIRONMENT._serialized_end=4374
+  _WIFIANTENNA._serialized_start=4377
+  _WIFIANTENNA._serialized_end=4526
+  _WIFIANTENNA_CONNECTION._serialized_start=4461
+  _WIFIANTENNA_CONNECTION._serialized_end=4526
+  _BLUETOOTHPEER._serialized_start=4528
+  _BLUETOOTHPEER._serialized_end=4618
+  _WIFISECRET._serialized_start=4620
+  _WIFISECRET._serialized_end=4682
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen/chromiumos/test/lab/api/pasit_host_pb2.py b/api/gen/chromiumos/test/lab/api/pasit_host_pb2.py
new file mode 100644
index 0000000..bfe3bff
--- /dev/null
+++ b/api/gen/chromiumos/test/lab/api/pasit_host_pb2.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: chromiumos/test/lab/api/pasit_host.proto
+"""Generated protocol buffer code."""
+from chromite.third_party.google.protobuf.internal import builder as _builder
+from chromite.third_party.google.protobuf import descriptor as _descriptor
+from chromite.third_party.google.protobuf import descriptor_pool as _descriptor_pool
+from chromite.third_party.google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(chromiumos/test/lab/api/pasit_host.proto\x12\x17\x63hromiumos.test.lab.api\"\x93\x05\n\tPasitHost\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12:\n\x07\x64\x65vices\x18\x02 \x03(\x0b\x32).chromiumos.test.lab.api.PasitHost.Device\x12\x42\n\x0b\x63onnections\x18\x03 \x03(\x0b\x32-.chromiumos.test.lab.api.PasitHost.Connection\x1a\x63\n\nConnection\x12\x13\n\x0bparent_port\x18\x01 \x01(\t\x12\x11\n\tparent_id\x18\x02 \x01(\t\x12\x10\n\x08\x63hild_id\x18\x03 \x01(\t\x12\r\n\x05speed\x18\x04 \x01(\x02\x12\x0c\n\x04type\x18\x05 \x01(\t\x1a\x8e\x03\n\x06\x44\x65vice\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05model\x18\x02 \x01(\t\x12<\n\x04type\x18\x03 \x01(\x0e\x32..chromiumos.test.lab.api.PasitHost.Device.Type\x12K\n\x0cpower_supply\x18\x04 \x01(\x0b\x32\x35.chromiumos.test.lab.api.PasitHost.Device.PowerSupply\x1a>\n\x0bPowerSupply\x12\x0f\n\x07\x63urrent\x18\x01 \x01(\x02\x12\x0f\n\x07voltage\x18\x02 \x01(\x02\x12\r\n\x05power\x18\x03 \x01(\x02\"\x9d\x01\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03\x44UT\x10\x01\x12\x12\n\x0eSWITCH_FIXTURE\x10\x02\x12\x13\n\x0f\x44OCKING_STATION\x10\x03\x12\x0b\n\x07MONITOR\x10\x04\x12\n\n\x06\x43\x41MERA\x10\x05\x12\x0b\n\x07STORAGE\x10\x06\x12\x07\n\x03HID\x10\x07\x12\x0b\n\x07NETWORK\x10\x08\x12\r\n\tHEADPHONE\x10\t\x12\x0b\n\x07SPEAKER\x10\nB3Z1go.chromium.org/chromiumos/config/go/test/lab/apib\x06proto3')
+
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.test.lab.api.pasit_host_pb2', globals())
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  DESCRIPTOR._serialized_options = b'Z1go.chromium.org/chromiumos/config/go/test/lab/api'
+  _PASITHOST._serialized_start=70
+  _PASITHOST._serialized_end=729
+  _PASITHOST_CONNECTION._serialized_start=229
+  _PASITHOST_CONNECTION._serialized_end=328
+  _PASITHOST_DEVICE._serialized_start=331
+  _PASITHOST_DEVICE._serialized_end=729
+  _PASITHOST_DEVICE_POWERSUPPLY._serialized_start=507
+  _PASITHOST_DEVICE_POWERSUPPLY._serialized_end=569
+  _PASITHOST_DEVICE_TYPE._serialized_start=572
+  _PASITHOST_DEVICE_TYPE._serialized_end=729
+# @@protoc_insertion_point(module_scope)
diff --git a/api/gen/test_platform/common/cft_steps_config_pb2.py b/api/gen/test_platform/common/cft_steps_config_pb2.py
index 1004a92..6d07e74 100644
--- a/api/gen/test_platform/common/cft_steps_config_pb2.py
+++ b/api/gen/test_platform/common/cft_steps_config_pb2.py
@@ -13,7 +13,7 @@
 
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+test_platform/common/cft_steps_config.proto\x12\x14test_platform.common\"]\n\x0e\x43\x66tStepsConfig\x12<\n\x0ehw_test_config\x18\x01 \x01(\x0b\x32\".test_platform.common.HwTestConfigH\x00\x42\r\n\x0b\x63onfig_type\"\x93\x02\n\x0cHwTestConfig\x12!\n\x19skip_loading_dut_topology\x18\x01 \x01(\x08\x12!\n\x19skip_starting_dut_service\x18\x02 \x01(\x08\x12\x16\n\x0eskip_provision\x18\x03 \x01(\x08\x12\x1b\n\x13skip_test_execution\x18\x04 \x01(\x08\x12\x1f\n\x17skip_all_result_publish\x18\x05 \x01(\x08\x12\x18\n\x10skip_gcs_publish\x18\x06 \x01(\x08\x12\x18\n\x10skip_rdb_publish\x18\x07 \x01(\x08\x12\x18\n\x10skip_tko_publish\x18\x08 \x01(\x08\x12\x19\n\x11run_cpcon_publish\x18\t \x01(\x08\x42@Z>go.chromium.org/chromiumos/infra/proto/go/test_platform/commonb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+test_platform/common/cft_steps_config.proto\x12\x14test_platform.common\"]\n\x0e\x43\x66tStepsConfig\x12<\n\x0ehw_test_config\x18\x01 \x01(\x0b\x32\".test_platform.common.HwTestConfigH\x00\x42\r\n\x0b\x63onfig_type\"\xae\x02\n\x0cHwTestConfig\x12!\n\x19skip_loading_dut_topology\x18\x01 \x01(\x08\x12!\n\x19skip_starting_dut_service\x18\x02 \x01(\x08\x12\x16\n\x0eskip_provision\x18\x03 \x01(\x08\x12\x1b\n\x13skip_test_execution\x18\x04 \x01(\x08\x12\x1f\n\x17skip_all_result_publish\x18\x05 \x01(\x08\x12\x18\n\x10skip_gcs_publish\x18\x06 \x01(\x08\x12\x18\n\x10skip_rdb_publish\x18\x07 \x01(\x08\x12\x18\n\x10skip_tko_publish\x18\x08 \x01(\x08\x12\x19\n\x11run_cpcon_publish\x18\t \x01(\x08\x12\x19\n\x11skip_post_process\x18\n \x01(\x08\x42@Z>go.chromium.org/chromiumos/infra/proto/go/test_platform/commonb\x06proto3')
 
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
 _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'test_platform.common.cft_steps_config_pb2', globals())
@@ -24,5 +24,5 @@
   _CFTSTEPSCONFIG._serialized_start=69
   _CFTSTEPSCONFIG._serialized_end=162
   _HWTESTCONFIG._serialized_start=165
-  _HWTESTCONFIG._serialized_end=440
+  _HWTESTCONFIG._serialized_end=467
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen/test_platform/request_pb2.py b/api/gen/test_platform/request_pb2.py
index f7ac522..da56bcc 100644
--- a/api/gen/test_platform/request_pb2.py
+++ b/api/gen/test_platform/request_pb2.py
@@ -21,7 +21,7 @@
 from chromite.api.gen.test_platform.common import cft_steps_config_pb2 as test__platform_dot_common_dot_cft__steps__config__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btest_platform/request.proto\x12\rtest_platform\x1a chromite/api/test_metadata.proto\x1a\x17\x63hromiumos/common.proto\x1a$chromiumos/test/api/test_suite.proto\x1a\x31\x63hromiumos/test/api/test_execution_metadata.proto\x1a\x1e\x63hromiumos/test/api/ctp2.proto\x1a\x1egoogle/protobuf/duration.proto\x1a#test_platform/execution/param.proto\x1a+test_platform/common/cft_steps_config.proto\"\xfe\"\n\x07Request\x12-\n\x06params\x18\x01 \x01(\x0b\x32\x1d.test_platform.Request.Params\x12\x32\n\ttest_plan\x18\x05 \x01(\x0b\x32\x1f.test_platform.Request.TestPlan\x1a\xb1\x1a\n\x06Params\x12M\n\x13hardware_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12M\n\x13software_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13\x66reeform_attributes\x18\t \x01(\x0b\x32\x30.test_platform.Request.Params.FreeformAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x12H\n\x11secondary_devices\x18\x0e \x03(\x0b\x32-.test_platform.Request.Params.SecondaryDevice\x12<\n\nscheduling\x18\x04 \x01(\x0b\x32(.test_platform.Request.Params.Scheduling\x12\x32\n\x05retry\x18\x05 \x01(\x0b\x32#.test_platform.Request.Params.Retry\x12\x38\n\x08metadata\x18\x06 \x01(\x0b\x32&.test_platform.Request.Params.Metadata\x12\x30\n\x04time\x18\x07 \x01(\x0b\x32\".test_platform.Request.Params.Time\x12>\n\x0b\x64\x65\x63orations\x18\x08 \x01(\x0b\x32).test_platform.Request.Params.Decorations\x12<\n\nmigrations\x18\x0c \x01(\x0b\x32(.test_platform.Request.Params.Migrations\x12\x37\n\x0f\x65xecution_param\x18\r \x01(\x0b\x32\x1e.test_platform.execution.Param\x12T\n\x17test_execution_behavior\x18\x0f \x01(\x0e\x32\x33.test_platform.Request.Params.TestExecutionBehavior\x12\x13\n\x0brun_via_cft\x18\x10 \x01(\x08\x12\x1d\n\x15schedule_via_scheduke\x18\x11 \x01(\x08\x12\x14\n\x0crun_via_trv2\x18\x12 \x01(\x08\x12?\n\x11trv2_steps_config\x18\x13 \x01(\x0b\x32$.test_platform.common.CftStepsConfig\x12\x11\n\tddd_suite\x18\x14 \x01(\x08\x12\x42\n\x07results\x18\x15 \x01(\x0b\x32\x31.test_platform.Request.Params.ResultsUploadConfig\x12\x1e\n\x16translate_trv2_request\x18\x16 \x01(\x08\x12<\n\x14user_defined_filters\x18\x17 \x03(\x0b\x32\x1e.chromiumos.test.api.CTPFilter\x1a\x42\n\x12HardwareAttributes\x12\r\n\x05model\x18\x01 \x01(\t\x12\x1d\n\x15require_stable_device\x18\x02 \x01(\x08\x1a\x43\n\x12SoftwareAttributes\x12-\n\x0c\x62uild_target\x18\x02 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x1a\x31\n\x12\x46reeformAttributes\x12\x1b\n\x13swarming_dimensions\x18\x01 \x03(\t\x1a\xac\x02\n\x12SoftwareDependency\x12\x18\n\x0e\x63hromeos_build\x18\x03 \x01(\tH\x00\x12#\n\x19\x63hromeos_build_gcs_bucket\x18\x07 \x01(\tH\x00\x12\x1b\n\x11ro_firmware_build\x18\x04 \x01(\tH\x00\x12\x1b\n\x11rw_firmware_build\x18\x05 \x01(\tH\x00\x12\x1e\n\x14\x65\x63_ro_firmware_build\x18\n \x01(\tH\x00\x12\x1e\n\x14\x65\x63_rw_firmware_build\x18\x0b \x01(\tH\x00\x12\x19\n\x0flacros_gcs_path\x18\x06 \x01(\tH\x00\x12\x1f\n\x15\x61ndroid_image_version\x18\x08 \x01(\tH\x00\x12\x1a\n\x10gms_core_package\x18\t \x01(\tH\x00\x42\x05\n\x03\x64\x65p\x1a\x80\x02\n\x0fSecondaryDevice\x12M\n\x13software_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13hardware_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x1a\x9e\x03\n\nScheduling\x12L\n\x0cmanaged_pool\x18\x01 \x01(\x0e\x32\x34.test_platform.Request.Params.Scheduling.ManagedPoolH\x00\x12\x18\n\x0eunmanaged_pool\x18\x02 \x01(\tH\x00\x12\x10\n\x08priority\x18\x04 \x01(\x03\x12\x12\n\nqs_account\x18\x05 \x01(\t\"\xf9\x01\n\x0bManagedPool\x12\x1c\n\x18MANAGED_POOL_UNSPECIFIED\x10\x00\x12\x13\n\x0fMANAGED_POOL_CQ\x10\x01\x12\x14\n\x10MANAGED_POOL_BVT\x10\x02\x12\x17\n\x13MANAGED_POOL_SUITES\x10\x03\x12\x14\n\x10MANAGED_POOL_CTS\x10\x04\x12\x1d\n\x19MANAGED_POOL_CTS_PERBUILD\x10\x05\x12\x1b\n\x17MANAGED_POOL_CONTINUOUS\x10\x06\x12\x1e\n\x1aMANAGED_POOL_ARC_PRESUBMIT\x10\x07\x12\x16\n\x12MANAGED_POOL_QUOTA\x10\x08\x42\x06\n\x04pool\x1a#\n\x05Retry\x12\r\n\x05\x61llow\x18\x01 \x01(\x08\x12\x0b\n\x03max\x18\x02 \x01(\x05\x1ah\n\x08Metadata\x12\x19\n\x11test_metadata_url\x18\x01 \x01(\t\x12!\n\x19\x64\x65\x62ug_symbols_archive_url\x18\x02 \x01(\t\x12\x1e\n\x16\x63ontainer_metadata_url\x18\x03 \x01(\t\x1a;\n\x04Time\x12\x33\n\x10maximum_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\xaa\x02\n\x0b\x44\x65\x63orations\x12X\n\x10\x61utotest_keyvals\x18\x01 \x03(\x0b\x32>.test_platform.Request.Params.Decorations.AutotestKeyvalsEntry\x12\x0c\n\x04tags\x18\x02 \x03(\t\x12J\n\ttest_args\x18\x03 \x03(\x0b\x32\x37.test_platform.Request.Params.Decorations.TestArgsEntry\x1a\x36\n\x14\x41utotestKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\nMigrationsJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04R\x0fuse_test_runnerR\x1a\x65nable_synchronous_offloadR\x18notificationless_offload\x1a\x8e\x02\n\x13ResultsUploadConfig\x12[\n\x04mode\x18\x01 \x01(\x0e\x32M.test_platform.Request.Params.ResultsUploadConfig.TestResultsUploadVisibility\"\x99\x01\n\x1bTestResultsUploadVisibility\x12\'\n#TEST_RESULTS_VISIBILITY_UNSPECIFIED\x10\x00\x12\'\n#TEST_RESULTS_VISIBILITY_BOARD_MODEL\x10\x01\x12(\n$TEST_RESULTS_VISIBILITY_CUSTOM_REALM\x10\x02\"Q\n\x15TestExecutionBehavior\x12\x18\n\x14\x42\x45HAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x01\x12\x10\n\x0cNON_CRITICAL\x10\x02J\x04\x08\x0b\x10\x0cJ\x04\x08\n\x10\x0bR\rnotificationsR\x06legacy\x1a\x14\n\x03Tag\x12\r\n\x05value\x18\x01 \x01(\t\x1a;\n\x05Suite\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x04 \x01(\tJ\x04\x08\x02\x10\x03R\x0brun_via_cft\x1a\x8e\x01\n\x04Test\x12\x38\n\x08\x61utotest\x18\x01 \x01(\x0b\x32$.test_platform.Request.Test.AutotestH\x00\x1a\x41\n\x08\x41utotest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\tB\t\n\x07harness\x1a\xe4\x02\n\x0b\x45numeration\x12S\n\x14\x61utotest_invocations\x18\x02 \x03(\x0b\x32\x35.test_platform.Request.Enumeration.AutotestInvocation\x1a\xff\x01\n\x12\x41utotestInvocation\x12(\n\x04test\x18\x01 \x01(\x0b\x32\x1a.chromite.api.AutotestTest\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12`\n\x0eresult_keyvals\x18\x04 \x03(\x0b\x32H.test_platform.Request.Enumeration.AutotestInvocation.ResultKeyvalsEntry\x1a\x34\n\x12ResultKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x84\x03\n\x08TestPlan\x12+\n\x05suite\x18\x01 \x03(\x0b\x32\x1c.test_platform.Request.Suite\x12)\n\x04test\x18\x02 \x03(\x0b\x32\x1b.test_platform.Request.Test\x12\x37\n\x0b\x65numeration\x18\x03 \x01(\x0b\x32\".test_platform.Request.Enumeration\x12H\n\x0ctag_criteria\x18\x04 \x01(\x0b\x32\x32.chromiumos.test.api.TestSuite.TestCaseTagCriteria\x12\x0c\n\x04seed\x18\x05 \x01(\x03\x12\x41\n\ttest_args\x18\x06 \x01(\x0b\x32..chromiumos.test.api.AutotestExecutionMetadata\x12\x14\n\x0ctotal_shards\x18\x07 \x01(\x03\x12\x14\n\x0cmax_in_shard\x18\x08 \x01(\x03\x12 \n\x18\x65nable_autotest_sharding\x18\t \x01(\x08J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\x42\x39Z7go.chromium.org/chromiumos/infra/proto/go/test_platformb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btest_platform/request.proto\x12\rtest_platform\x1a chromite/api/test_metadata.proto\x1a\x17\x63hromiumos/common.proto\x1a$chromiumos/test/api/test_suite.proto\x1a\x31\x63hromiumos/test/api/test_execution_metadata.proto\x1a\x1e\x63hromiumos/test/api/ctp2.proto\x1a\x1egoogle/protobuf/duration.proto\x1a#test_platform/execution/param.proto\x1a+test_platform/common/cft_steps_config.proto\"\x99#\n\x07Request\x12-\n\x06params\x18\x01 \x01(\x0b\x32\x1d.test_platform.Request.Params\x12\x32\n\ttest_plan\x18\x05 \x01(\x0b\x32\x1f.test_platform.Request.TestPlan\x1a\xcc\x1a\n\x06Params\x12M\n\x13hardware_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12M\n\x13software_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13\x66reeform_attributes\x18\t \x01(\x0b\x32\x30.test_platform.Request.Params.FreeformAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x12H\n\x11secondary_devices\x18\x0e \x03(\x0b\x32-.test_platform.Request.Params.SecondaryDevice\x12<\n\nscheduling\x18\x04 \x01(\x0b\x32(.test_platform.Request.Params.Scheduling\x12\x32\n\x05retry\x18\x05 \x01(\x0b\x32#.test_platform.Request.Params.Retry\x12\x38\n\x08metadata\x18\x06 \x01(\x0b\x32&.test_platform.Request.Params.Metadata\x12\x30\n\x04time\x18\x07 \x01(\x0b\x32\".test_platform.Request.Params.Time\x12>\n\x0b\x64\x65\x63orations\x18\x08 \x01(\x0b\x32).test_platform.Request.Params.Decorations\x12<\n\nmigrations\x18\x0c \x01(\x0b\x32(.test_platform.Request.Params.Migrations\x12\x37\n\x0f\x65xecution_param\x18\r \x01(\x0b\x32\x1e.test_platform.execution.Param\x12T\n\x17test_execution_behavior\x18\x0f \x01(\x0e\x32\x33.test_platform.Request.Params.TestExecutionBehavior\x12\x13\n\x0brun_via_cft\x18\x10 \x01(\x08\x12\x1d\n\x15schedule_via_scheduke\x18\x11 \x01(\x08\x12\x14\n\x0crun_via_trv2\x18\x12 \x01(\x08\x12?\n\x11trv2_steps_config\x18\x13 \x01(\x0b\x32$.test_platform.common.CftStepsConfig\x12\x11\n\tddd_suite\x18\x14 \x01(\x08\x12\x42\n\x07results\x18\x15 \x01(\x0b\x32\x31.test_platform.Request.Params.ResultsUploadConfig\x12\x1e\n\x16translate_trv2_request\x18\x16 \x01(\x08\x12<\n\x14user_defined_filters\x18\x17 \x03(\x0b\x32\x1e.chromiumos.test.api.CTPFilter\x12\x19\n\x11run_ctpv2_with_qs\x18\x18 \x01(\x08\x1a\x42\n\x12HardwareAttributes\x12\r\n\x05model\x18\x01 \x01(\t\x12\x1d\n\x15require_stable_device\x18\x02 \x01(\x08\x1a\x43\n\x12SoftwareAttributes\x12-\n\x0c\x62uild_target\x18\x02 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x1a\x31\n\x12\x46reeformAttributes\x12\x1b\n\x13swarming_dimensions\x18\x01 \x03(\t\x1a\xac\x02\n\x12SoftwareDependency\x12\x18\n\x0e\x63hromeos_build\x18\x03 \x01(\tH\x00\x12#\n\x19\x63hromeos_build_gcs_bucket\x18\x07 \x01(\tH\x00\x12\x1b\n\x11ro_firmware_build\x18\x04 \x01(\tH\x00\x12\x1b\n\x11rw_firmware_build\x18\x05 \x01(\tH\x00\x12\x1e\n\x14\x65\x63_ro_firmware_build\x18\n \x01(\tH\x00\x12\x1e\n\x14\x65\x63_rw_firmware_build\x18\x0b \x01(\tH\x00\x12\x19\n\x0flacros_gcs_path\x18\x06 \x01(\tH\x00\x12\x1f\n\x15\x61ndroid_image_version\x18\x08 \x01(\tH\x00\x12\x1a\n\x10gms_core_package\x18\t \x01(\tH\x00\x42\x05\n\x03\x64\x65p\x1a\x80\x02\n\x0fSecondaryDevice\x12M\n\x13software_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13hardware_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x1a\x9e\x03\n\nScheduling\x12L\n\x0cmanaged_pool\x18\x01 \x01(\x0e\x32\x34.test_platform.Request.Params.Scheduling.ManagedPoolH\x00\x12\x18\n\x0eunmanaged_pool\x18\x02 \x01(\tH\x00\x12\x10\n\x08priority\x18\x04 \x01(\x03\x12\x12\n\nqs_account\x18\x05 \x01(\t\"\xf9\x01\n\x0bManagedPool\x12\x1c\n\x18MANAGED_POOL_UNSPECIFIED\x10\x00\x12\x13\n\x0fMANAGED_POOL_CQ\x10\x01\x12\x14\n\x10MANAGED_POOL_BVT\x10\x02\x12\x17\n\x13MANAGED_POOL_SUITES\x10\x03\x12\x14\n\x10MANAGED_POOL_CTS\x10\x04\x12\x1d\n\x19MANAGED_POOL_CTS_PERBUILD\x10\x05\x12\x1b\n\x17MANAGED_POOL_CONTINUOUS\x10\x06\x12\x1e\n\x1aMANAGED_POOL_ARC_PRESUBMIT\x10\x07\x12\x16\n\x12MANAGED_POOL_QUOTA\x10\x08\x42\x06\n\x04pool\x1a#\n\x05Retry\x12\r\n\x05\x61llow\x18\x01 \x01(\x08\x12\x0b\n\x03max\x18\x02 \x01(\x05\x1ah\n\x08Metadata\x12\x19\n\x11test_metadata_url\x18\x01 \x01(\t\x12!\n\x19\x64\x65\x62ug_symbols_archive_url\x18\x02 \x01(\t\x12\x1e\n\x16\x63ontainer_metadata_url\x18\x03 \x01(\t\x1a;\n\x04Time\x12\x33\n\x10maximum_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\xaa\x02\n\x0b\x44\x65\x63orations\x12X\n\x10\x61utotest_keyvals\x18\x01 \x03(\x0b\x32>.test_platform.Request.Params.Decorations.AutotestKeyvalsEntry\x12\x0c\n\x04tags\x18\x02 \x03(\t\x12J\n\ttest_args\x18\x03 \x03(\x0b\x32\x37.test_platform.Request.Params.Decorations.TestArgsEntry\x1a\x36\n\x14\x41utotestKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\nMigrationsJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04R\x0fuse_test_runnerR\x1a\x65nable_synchronous_offloadR\x18notificationless_offload\x1a\x8e\x02\n\x13ResultsUploadConfig\x12[\n\x04mode\x18\x01 \x01(\x0e\x32M.test_platform.Request.Params.ResultsUploadConfig.TestResultsUploadVisibility\"\x99\x01\n\x1bTestResultsUploadVisibility\x12\'\n#TEST_RESULTS_VISIBILITY_UNSPECIFIED\x10\x00\x12\'\n#TEST_RESULTS_VISIBILITY_BOARD_MODEL\x10\x01\x12(\n$TEST_RESULTS_VISIBILITY_CUSTOM_REALM\x10\x02\"Q\n\x15TestExecutionBehavior\x12\x18\n\x14\x42\x45HAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x01\x12\x10\n\x0cNON_CRITICAL\x10\x02J\x04\x08\x0b\x10\x0cJ\x04\x08\n\x10\x0bR\rnotificationsR\x06legacy\x1a\x14\n\x03Tag\x12\r\n\x05value\x18\x01 \x01(\t\x1a;\n\x05Suite\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x04 \x01(\tJ\x04\x08\x02\x10\x03R\x0brun_via_cft\x1a\x8e\x01\n\x04Test\x12\x38\n\x08\x61utotest\x18\x01 \x01(\x0b\x32$.test_platform.Request.Test.AutotestH\x00\x1a\x41\n\x08\x41utotest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\tB\t\n\x07harness\x1a\xe4\x02\n\x0b\x45numeration\x12S\n\x14\x61utotest_invocations\x18\x02 \x03(\x0b\x32\x35.test_platform.Request.Enumeration.AutotestInvocation\x1a\xff\x01\n\x12\x41utotestInvocation\x12(\n\x04test\x18\x01 \x01(\x0b\x32\x1a.chromite.api.AutotestTest\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12`\n\x0eresult_keyvals\x18\x04 \x03(\x0b\x32H.test_platform.Request.Enumeration.AutotestInvocation.ResultKeyvalsEntry\x1a\x34\n\x12ResultKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x84\x03\n\x08TestPlan\x12+\n\x05suite\x18\x01 \x03(\x0b\x32\x1c.test_platform.Request.Suite\x12)\n\x04test\x18\x02 \x03(\x0b\x32\x1b.test_platform.Request.Test\x12\x37\n\x0b\x65numeration\x18\x03 \x01(\x0b\x32\".test_platform.Request.Enumeration\x12H\n\x0ctag_criteria\x18\x04 \x01(\x0b\x32\x32.chromiumos.test.api.TestSuite.TestCaseTagCriteria\x12\x0c\n\x04seed\x18\x05 \x01(\x03\x12\x41\n\ttest_args\x18\x06 \x01(\x0b\x32..chromiumos.test.api.AutotestExecutionMetadata\x12\x14\n\x0ctotal_shards\x18\x07 \x01(\x03\x12\x14\n\x0cmax_in_shard\x18\x08 \x01(\x03\x12 \n\x18\x65nable_autotest_sharding\x18\t \x01(\x08J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\x42\x39Z7go.chromium.org/chromiumos/infra/proto/go/test_platformb\x06proto3')
 
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
 _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'test_platform.request_pb2', globals())
@@ -36,57 +36,57 @@
   _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._options = None
   _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._serialized_options = b'8\001'
   _REQUEST._serialized_start=341
-  _REQUEST._serialized_end=4819
+  _REQUEST._serialized_end=4846
   _REQUEST_PARAMS._serialized_start=452
-  _REQUEST_PARAMS._serialized_end=3829
-  _REQUEST_PARAMS_HARDWAREATTRIBUTES._serialized_start=1665
-  _REQUEST_PARAMS_HARDWAREATTRIBUTES._serialized_end=1731
-  _REQUEST_PARAMS_SOFTWAREATTRIBUTES._serialized_start=1733
-  _REQUEST_PARAMS_SOFTWAREATTRIBUTES._serialized_end=1800
-  _REQUEST_PARAMS_FREEFORMATTRIBUTES._serialized_start=1802
-  _REQUEST_PARAMS_FREEFORMATTRIBUTES._serialized_end=1851
-  _REQUEST_PARAMS_SOFTWAREDEPENDENCY._serialized_start=1854
-  _REQUEST_PARAMS_SOFTWAREDEPENDENCY._serialized_end=2154
-  _REQUEST_PARAMS_SECONDARYDEVICE._serialized_start=2157
-  _REQUEST_PARAMS_SECONDARYDEVICE._serialized_end=2413
-  _REQUEST_PARAMS_SCHEDULING._serialized_start=2416
-  _REQUEST_PARAMS_SCHEDULING._serialized_end=2830
-  _REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL._serialized_start=2573
-  _REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL._serialized_end=2822
-  _REQUEST_PARAMS_RETRY._serialized_start=2832
-  _REQUEST_PARAMS_RETRY._serialized_end=2867
-  _REQUEST_PARAMS_METADATA._serialized_start=2869
-  _REQUEST_PARAMS_METADATA._serialized_end=2973
-  _REQUEST_PARAMS_TIME._serialized_start=2975
-  _REQUEST_PARAMS_TIME._serialized_end=3034
-  _REQUEST_PARAMS_DECORATIONS._serialized_start=3037
-  _REQUEST_PARAMS_DECORATIONS._serialized_end=3335
-  _REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY._serialized_start=3232
-  _REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY._serialized_end=3286
-  _REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY._serialized_start=3288
-  _REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY._serialized_end=3335
-  _REQUEST_PARAMS_MIGRATIONS._serialized_start=3337
-  _REQUEST_PARAMS_MIGRATIONS._serialized_end=3438
-  _REQUEST_PARAMS_RESULTSUPLOADCONFIG._serialized_start=3441
-  _REQUEST_PARAMS_RESULTSUPLOADCONFIG._serialized_end=3711
-  _REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY._serialized_start=3558
-  _REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY._serialized_end=3711
-  _REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR._serialized_start=3713
-  _REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR._serialized_end=3794
-  _REQUEST_TAG._serialized_start=3831
-  _REQUEST_TAG._serialized_end=3851
-  _REQUEST_SUITE._serialized_start=3853
-  _REQUEST_SUITE._serialized_end=3912
-  _REQUEST_TEST._serialized_start=3915
-  _REQUEST_TEST._serialized_end=4057
-  _REQUEST_TEST_AUTOTEST._serialized_start=3981
-  _REQUEST_TEST_AUTOTEST._serialized_end=4046
-  _REQUEST_ENUMERATION._serialized_start=4060
-  _REQUEST_ENUMERATION._serialized_end=4416
-  _REQUEST_ENUMERATION_AUTOTESTINVOCATION._serialized_start=4161
-  _REQUEST_ENUMERATION_AUTOTESTINVOCATION._serialized_end=4416
-  _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._serialized_start=4364
-  _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._serialized_end=4416
-  _REQUEST_TESTPLAN._serialized_start=4419
-  _REQUEST_TESTPLAN._serialized_end=4807
+  _REQUEST_PARAMS._serialized_end=3856
+  _REQUEST_PARAMS_HARDWAREATTRIBUTES._serialized_start=1692
+  _REQUEST_PARAMS_HARDWAREATTRIBUTES._serialized_end=1758
+  _REQUEST_PARAMS_SOFTWAREATTRIBUTES._serialized_start=1760
+  _REQUEST_PARAMS_SOFTWAREATTRIBUTES._serialized_end=1827
+  _REQUEST_PARAMS_FREEFORMATTRIBUTES._serialized_start=1829
+  _REQUEST_PARAMS_FREEFORMATTRIBUTES._serialized_end=1878
+  _REQUEST_PARAMS_SOFTWAREDEPENDENCY._serialized_start=1881
+  _REQUEST_PARAMS_SOFTWAREDEPENDENCY._serialized_end=2181
+  _REQUEST_PARAMS_SECONDARYDEVICE._serialized_start=2184
+  _REQUEST_PARAMS_SECONDARYDEVICE._serialized_end=2440
+  _REQUEST_PARAMS_SCHEDULING._serialized_start=2443
+  _REQUEST_PARAMS_SCHEDULING._serialized_end=2857
+  _REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL._serialized_start=2600
+  _REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL._serialized_end=2849
+  _REQUEST_PARAMS_RETRY._serialized_start=2859
+  _REQUEST_PARAMS_RETRY._serialized_end=2894
+  _REQUEST_PARAMS_METADATA._serialized_start=2896
+  _REQUEST_PARAMS_METADATA._serialized_end=3000
+  _REQUEST_PARAMS_TIME._serialized_start=3002
+  _REQUEST_PARAMS_TIME._serialized_end=3061
+  _REQUEST_PARAMS_DECORATIONS._serialized_start=3064
+  _REQUEST_PARAMS_DECORATIONS._serialized_end=3362
+  _REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY._serialized_start=3259
+  _REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY._serialized_end=3313
+  _REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY._serialized_start=3315
+  _REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY._serialized_end=3362
+  _REQUEST_PARAMS_MIGRATIONS._serialized_start=3364
+  _REQUEST_PARAMS_MIGRATIONS._serialized_end=3465
+  _REQUEST_PARAMS_RESULTSUPLOADCONFIG._serialized_start=3468
+  _REQUEST_PARAMS_RESULTSUPLOADCONFIG._serialized_end=3738
+  _REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY._serialized_start=3585
+  _REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY._serialized_end=3738
+  _REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR._serialized_start=3740
+  _REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR._serialized_end=3821
+  _REQUEST_TAG._serialized_start=3858
+  _REQUEST_TAG._serialized_end=3878
+  _REQUEST_SUITE._serialized_start=3880
+  _REQUEST_SUITE._serialized_end=3939
+  _REQUEST_TEST._serialized_start=3942
+  _REQUEST_TEST._serialized_end=4084
+  _REQUEST_TEST_AUTOTEST._serialized_start=4008
+  _REQUEST_TEST_AUTOTEST._serialized_end=4073
+  _REQUEST_ENUMERATION._serialized_start=4087
+  _REQUEST_ENUMERATION._serialized_end=4443
+  _REQUEST_ENUMERATION_AUTOTESTINVOCATION._serialized_start=4188
+  _REQUEST_ENUMERATION_AUTOTESTINVOCATION._serialized_end=4443
+  _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._serialized_start=4391
+  _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._serialized_end=4443
+  _REQUEST_TESTPLAN._serialized_start=4446
+  _REQUEST_TESTPLAN._serialized_end=4834
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen/test_platform/suite_manager/__init__.py b/api/gen/test_platform/suite_manager/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/api/gen/test_platform/suite_manager/__init__.py
diff --git a/api/gen/test_platform/suite_manager/api_pb2.py b/api/gen/test_platform/suite_manager/api_pb2.py
new file mode 100644
index 0000000..42665a8
--- /dev/null
+++ b/api/gen/test_platform/suite_manager/api_pb2.py
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: test_platform/suite_manager/api.proto
+"""Generated protocol buffer code."""
+from chromite.third_party.google.protobuf.internal import builder as _builder
+from chromite.third_party.google.protobuf import descriptor as _descriptor
+from chromite.third_party.google.protobuf import descriptor_pool as _descriptor_pool
+from chromite.third_party.google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from chromite.api.gen.testplans import suite_scheduler_pb2 as testplans_dot_suite__scheduler__pb2
+from chromite.third_party.google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2
+from chromite.third_party.google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%test_platform/suite_manager/api.proto\x12\x1btest_platform.suite_manager\x1a\x1ftestplans/suite_scheduler.proto\x1a google/protobuf/field_mask.proto\x1a\x19google/protobuf/any.proto\"N\n\x06Status\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12%\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.Any\" \n\x10GetConfigRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"t\n\x11GetConfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12*\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"\x94\x02\n\x13\x46\x65tchConfigsRequest\x12I\n\x07\x66ilters\x18\x01 \x01(\x0b\x32\x38.test_platform.suite_manager.FetchConfigsRequest.Filters\x1a\xb1\x01\n\x07\x46ilters\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05suite\x18\x02 \x01(\t\x12\x0c\n\x04pool\x18\x03 \x01(\t\x12O\n\x0elaunch_profile\x18\x04 \x01(\x0e\x32\x37.testplans.SchedulerConfig.LaunchCriteria.LaunchProfile\x12*\n\x0ftarget_branches\x18\x05 \x03(\x0e\x32\x11.testplans.Branch\"x\n\x14\x46\x65tchConfigsResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12+\n\x07\x63onfigs\x18\x02 \x03(\x0b\x32\x1a.testplans.SchedulerConfig\"[\n\x10\x41\x64\x64\x43onfigRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\x12\x32\n\x0e\x63onfig_payload\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"H\n\x11\x41\x64\x64\x43onfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\"*\n\x13\x44\x65leteConfigRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\"K\n\x14\x44\x65leteConfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\"\x8f\x01\n\x13UpdateConfigRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\x12\x32\n\x0e\x63onfig_payload\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"K\n\x14UpdateConfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\">\n\x0b\x42uildTarget\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\x0e\n\x06models\x18\x02 \x03(\t\x12\x10\n\x08variants\x18\x03 \x03(\t\"\xad\x01\n\x18\x46\x65tchBuildTargetsRequest\x12N\n\x07\x66ilters\x18\x01 \x01(\x0b\x32=.test_platform.suite_manager.FetchBuildTargetsRequest.Filters\x1a\x41\n\x07\x46ilters\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\r\n\x05model\x18\x02 \x01(\t\x12\x18\n\x10include_variants\x18\x03 \x01(\x08\"\x91\x01\n\x19\x46\x65tchBuildTargetsResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12?\n\rbuild_targets\x18\x02 \x03(\x0b\x32(.test_platform.suite_manager.BuildTarget\"w\n\x15\x45stimateImpactRequest\x12*\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12\x32\n\x0e\x63ompare_config\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"\x92\x01\n\x16\x45stimateImpactResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12\x16\n\x0cimpact_hours\x18\x02 \x01(\x03H\x00\x12!\n\x17impact_hours_difference\x18\x03 \x01(\x03H\x00\x42\x08\n\x06impact\"\xf0\x01\n\x1a\x42\x61tchEstimateImpactRequest\x12Q\n\x08requests\x18\x01 \x03(\x0b\x32?.test_platform.suite_manager.BatchEstimateImpactRequest.Request\x1a\x7f\n\x07Request\x12\x14\n\x0crequest_uuid\x18\x01 \x01(\t\x12*\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12\x32\n\x0e\x63ompare_config\x18\x03 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"\x8c\x02\n\x1b\x42\x61tchEstimateImpactResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12R\n\x08reponses\x18\x02 \x03(\x0b\x32@.test_platform.suite_manager.BatchEstimateImpactResponse.Reponse\x1a\x64\n\x07Reponse\x12\x14\n\x0crequest_uuid\x18\x01 \x01(\t\x12\x16\n\x0cimpact_hours\x18\x02 \x01(\x03H\x00\x12!\n\x17impact_hours_difference\x18\x03 \x01(\x03H\x00\x42\x08\n\x06impact\"g\n\x14ProposeChangeRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\x12*\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12\x0e\n\x06\x61uthor\x18\x03 \x01(\t\"Z\n\x15ProposeChangeResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12\x0c\n\x04uuid\x18\x02 \x01(\t\"\x17\n\x15UpdateProposalRequest\"[\n\x16UpdateProposalResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12\x0c\n\x04uuid\x18\x02 \x01(\t2\xca\t\n\x13SuiteManagerService\x12j\n\tGetConfig\x12-.test_platform.suite_manager.GetConfigRequest\x1a..test_platform.suite_manager.GetConfigResponse\x12s\n\x0c\x46\x65tchConfigs\x12\x30.test_platform.suite_manager.FetchConfigsRequest\x1a\x31.test_platform.suite_manager.FetchConfigsResponse\x12j\n\tAddConfig\x12-.test_platform.suite_manager.AddConfigRequest\x1a..test_platform.suite_manager.AddConfigResponse\x12s\n\x0c\x44\x65leteConfig\x12\x30.test_platform.suite_manager.DeleteConfigRequest\x1a\x31.test_platform.suite_manager.DeleteConfigResponse\x12s\n\x0cUpdateConfig\x12\x30.test_platform.suite_manager.UpdateConfigRequest\x1a\x31.test_platform.suite_manager.UpdateConfigResponse\x12\x82\x01\n\x11\x46\x65tchBuildTargets\x12\x35.test_platform.suite_manager.FetchBuildTargetsRequest\x1a\x36.test_platform.suite_manager.FetchBuildTargetsResponse\x12y\n\x0e\x45stimateImpact\x12\x32.test_platform.suite_manager.EstimateImpactRequest\x1a\x33.test_platform.suite_manager.EstimateImpactResponse\x12\x88\x01\n\x13\x42\x61tchEstimateImpact\x12\x37.test_platform.suite_manager.BatchEstimateImpactRequest\x1a\x38.test_platform.suite_manager.BatchEstimateImpactResponse\x12v\n\rProposeChange\x12\x31.test_platform.suite_manager.ProposeChangeRequest\x1a\x32.test_platform.suite_manager.ProposeChangeResponse\x12y\n\x0eUpdateProposal\x12\x32.test_platform.suite_manager.UpdateProposalRequest\x1a\x33.test_platform.suite_manager.UpdateProposalResponseBGZEgo.chromium.org/chromiumos/infra/proto/go/test_platform/suite_managerb\x06proto3')
+
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'test_platform.suite_manager.api_pb2', globals())
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  DESCRIPTOR._serialized_options = b'ZEgo.chromium.org/chromiumos/infra/proto/go/test_platform/suite_manager'
+  _STATUS._serialized_start=164
+  _STATUS._serialized_end=242
+  _GETCONFIGREQUEST._serialized_start=244
+  _GETCONFIGREQUEST._serialized_end=276
+  _GETCONFIGRESPONSE._serialized_start=278
+  _GETCONFIGRESPONSE._serialized_end=394
+  _FETCHCONFIGSREQUEST._serialized_start=397
+  _FETCHCONFIGSREQUEST._serialized_end=673
+  _FETCHCONFIGSREQUEST_FILTERS._serialized_start=496
+  _FETCHCONFIGSREQUEST_FILTERS._serialized_end=673
+  _FETCHCONFIGSRESPONSE._serialized_start=675
+  _FETCHCONFIGSRESPONSE._serialized_end=795
+  _ADDCONFIGREQUEST._serialized_start=797
+  _ADDCONFIGREQUEST._serialized_end=888
+  _ADDCONFIGRESPONSE._serialized_start=890
+  _ADDCONFIGRESPONSE._serialized_end=962
+  _DELETECONFIGREQUEST._serialized_start=964
+  _DELETECONFIGREQUEST._serialized_end=1006
+  _DELETECONFIGRESPONSE._serialized_start=1008
+  _DELETECONFIGRESPONSE._serialized_end=1083
+  _UPDATECONFIGREQUEST._serialized_start=1086
+  _UPDATECONFIGREQUEST._serialized_end=1229
+  _UPDATECONFIGRESPONSE._serialized_start=1231
+  _UPDATECONFIGRESPONSE._serialized_end=1306
+  _BUILDTARGET._serialized_start=1308
+  _BUILDTARGET._serialized_end=1370
+  _FETCHBUILDTARGETSREQUEST._serialized_start=1373
+  _FETCHBUILDTARGETSREQUEST._serialized_end=1546
+  _FETCHBUILDTARGETSREQUEST_FILTERS._serialized_start=1481
+  _FETCHBUILDTARGETSREQUEST_FILTERS._serialized_end=1546
+  _FETCHBUILDTARGETSRESPONSE._serialized_start=1549
+  _FETCHBUILDTARGETSRESPONSE._serialized_end=1694
+  _ESTIMATEIMPACTREQUEST._serialized_start=1696
+  _ESTIMATEIMPACTREQUEST._serialized_end=1815
+  _ESTIMATEIMPACTRESPONSE._serialized_start=1818
+  _ESTIMATEIMPACTRESPONSE._serialized_end=1964
+  _BATCHESTIMATEIMPACTREQUEST._serialized_start=1967
+  _BATCHESTIMATEIMPACTREQUEST._serialized_end=2207
+  _BATCHESTIMATEIMPACTREQUEST_REQUEST._serialized_start=2080
+  _BATCHESTIMATEIMPACTREQUEST_REQUEST._serialized_end=2207
+  _BATCHESTIMATEIMPACTRESPONSE._serialized_start=2210
+  _BATCHESTIMATEIMPACTRESPONSE._serialized_end=2478
+  _BATCHESTIMATEIMPACTRESPONSE_REPONSE._serialized_start=2378
+  _BATCHESTIMATEIMPACTRESPONSE_REPONSE._serialized_end=2478
+  _PROPOSECHANGEREQUEST._serialized_start=2480
+  _PROPOSECHANGEREQUEST._serialized_end=2583
+  _PROPOSECHANGERESPONSE._serialized_start=2585
+  _PROPOSECHANGERESPONSE._serialized_end=2675
+  _UPDATEPROPOSALREQUEST._serialized_start=2677
+  _UPDATEPROPOSALREQUEST._serialized_end=2700
+  _UPDATEPROPOSALRESPONSE._serialized_start=2702
+  _UPDATEPROPOSALRESPONSE._serialized_end=2793
+  _SUITEMANAGERSERVICE._serialized_start=2796
+  _SUITEMANAGERSERVICE._serialized_end=4022
+# @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/chromite/api/sdk_subtools_pb2.py b/api/gen_sdk/chromite/api/sdk_subtools_pb2.py
index d872675..21c07ee 100644
--- a/api/gen_sdk/chromite/api/sdk_subtools_pb2.py
+++ b/api/gen_sdk/chromite/api/sdk_subtools_pb2.py
@@ -16,7 +16,7 @@
 from chromite.api.gen_sdk.chromiumos import common_pb2 as chromiumos_dot_common__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hromite/api/sdk_subtools.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\"\x95\x01\n\x17\x42uildSdkSubtoolsRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12)\n\x08packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12+\n\x0bresult_path\x18\x03 \x01(\x0b\x32\x16.chromiumos.ResultPath\"\x80\x01\n\x18\x42uildSdkSubtoolsResponse\x12<\n\x13\x66\x61iled_package_data\x18\x01 \x03(\x0b\x32\x1f.chromite.api.FailedPackageData\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"Z\n\x18UploadSdkSubtoolsRequest\x12\x16\n\x0euse_production\x18\x01 \x01(\x08\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"H\n\x19UploadSdkSubtoolsResponse\x12\x11\n\tstep_text\x18\x01 \x01(\t\x12\x18\n\x10summary_markdown\x18\x02 \x01(\t2\xfb\x01\n\x12SdkSubtoolsService\x12\x61\n\x10\x42uildSdkSubtools\x12%.chromite.api.BuildSdkSubtoolsRequest\x1a&.chromite.api.BuildSdkSubtoolsResponse\x12l\n\x11UploadSdkSubtools\x12&.chromite.api.UploadSdkSubtoolsRequest\x1a\'.chromite.api.UploadSdkSubtoolsResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x1a\x14\xc2\xed\x1a\x10\n\x0csdk_subtools\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hromite/api/sdk_subtools.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\"\x92\x02\n\x17\x42uildSdkSubtoolsRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12)\n\x08packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12+\n\x0bresult_path\x18\x03 \x01(\x0b\x32\x16.chromiumos.ResultPath\x12H\n\rupload_filter\x18\x04 \x03(\x0b\x32\x31.chromite.api.BuildSdkSubtoolsRequest.SubtoolName\x12\x14\n\x0cprivate_only\x18\x05 \x01(\x08\x1a\x1b\n\x0bSubtoolName\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x80\x01\n\x18\x42uildSdkSubtoolsResponse\x12<\n\x13\x66\x61iled_package_data\x18\x01 \x03(\x0b\x32\x1f.chromite.api.FailedPackageData\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"Z\n\x18UploadSdkSubtoolsRequest\x12\x16\n\x0euse_production\x18\x01 \x01(\x08\x12&\n\x0c\x62undle_paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\"H\n\x19UploadSdkSubtoolsResponse\x12\x11\n\tstep_text\x18\x01 \x01(\t\x12\x18\n\x10summary_markdown\x18\x02 \x01(\t2\xfb\x01\n\x12SdkSubtoolsService\x12\x61\n\x10\x42uildSdkSubtools\x12%.chromite.api.BuildSdkSubtoolsRequest\x1a&.chromite.api.BuildSdkSubtoolsResponse\x12l\n\x11UploadSdkSubtools\x12&.chromite.api.UploadSdkSubtoolsRequest\x1a\'.chromite.api.UploadSdkSubtoolsResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x1a\x14\xc2\xed\x1a\x10\n\x0csdk_subtools\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -30,13 +30,15 @@
   _SDKSUBTOOLSSERVICE.methods_by_name['UploadSdkSubtools']._options = None
   _SDKSUBTOOLSSERVICE.methods_by_name['UploadSdkSubtools']._serialized_options = b'\302\355\032\002\020\002'
   _globals['_BUILDSDKSUBTOOLSREQUEST']._serialized_start=133
-  _globals['_BUILDSDKSUBTOOLSREQUEST']._serialized_end=282
-  _globals['_BUILDSDKSUBTOOLSRESPONSE']._serialized_start=285
-  _globals['_BUILDSDKSUBTOOLSRESPONSE']._serialized_end=413
-  _globals['_UPLOADSDKSUBTOOLSREQUEST']._serialized_start=415
-  _globals['_UPLOADSDKSUBTOOLSREQUEST']._serialized_end=505
-  _globals['_UPLOADSDKSUBTOOLSRESPONSE']._serialized_start=507
-  _globals['_UPLOADSDKSUBTOOLSRESPONSE']._serialized_end=579
-  _globals['_SDKSUBTOOLSSERVICE']._serialized_start=582
-  _globals['_SDKSUBTOOLSSERVICE']._serialized_end=833
+  _globals['_BUILDSDKSUBTOOLSREQUEST']._serialized_end=407
+  _globals['_BUILDSDKSUBTOOLSREQUEST_SUBTOOLNAME']._serialized_start=380
+  _globals['_BUILDSDKSUBTOOLSREQUEST_SUBTOOLNAME']._serialized_end=407
+  _globals['_BUILDSDKSUBTOOLSRESPONSE']._serialized_start=410
+  _globals['_BUILDSDKSUBTOOLSRESPONSE']._serialized_end=538
+  _globals['_UPLOADSDKSUBTOOLSREQUEST']._serialized_start=540
+  _globals['_UPLOADSDKSUBTOOLSREQUEST']._serialized_end=630
+  _globals['_UPLOADSDKSUBTOOLSRESPONSE']._serialized_start=632
+  _globals['_UPLOADSDKSUBTOOLSRESPONSE']._serialized_end=704
+  _globals['_SDKSUBTOOLSSERVICE']._serialized_start=707
+  _globals['_SDKSUBTOOLSSERVICE']._serialized_end=958
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/chromiumos/test/artifact/test_result_pb2.py b/api/gen_sdk/chromiumos/test/artifact/test_result_pb2.py
index f198b24..dc54590 100644
--- a/api/gen_sdk/chromiumos/test/artifact/test_result_pb2.py
+++ b/api/gen_sdk/chromiumos/test/artifact/test_result_pb2.py
@@ -21,7 +21,7 @@
 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*chromiumos/test/artifact/test_result.proto\x12\x18\x63hromiumos.test.artifact\x1a\x1d\x63hromiumos/storage_path.proto\x1a)chromiumos/test/api/provision_state.proto\x1a,chromiumos/test/api/test_case_metadata.proto\x1a*chromiumos/test/api/test_case_result.proto\x1a&chromiumos/test/api/test_harness.proto\x1a!chromiumos/test/lab/api/dut.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x96\x01\n\nTestResult\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x41\n\x0ftest_invocation\x18\x02 \x01(\x0b\x32(.chromiumos.test.artifact.TestInvocation\x12\x34\n\ttest_runs\x18\x03 \x03(\x0b\x32!.chromiumos.test.artifact.TestRun\"\x85\x05\n\x0eTestInvocation\x12\x43\n\x10test_environment\x18\x01 \x01(\x0b\x32).chromiumos.test.artifact.TestEnvironment\x12:\n\x0c\x64ut_topology\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.DutTopology\x12G\n\x16primary_execution_info\x18\x03 \x01(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12J\n\x19secondary_executions_info\x18\x04 \x03(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12I\n\x13scheduling_metadata\x18\x05 \x01(\x0b\x32,.chromiumos.test.artifact.SchedulingMetadata\x12@\n\x04tags\x18\x06 \x03(\x0b\x32\x32.chromiumos.test.artifact.TestInvocation.TagsEntry\x12\x12\n\nis_cft_run\x18\x07 \x01(\x08\x12R\n\x18project_tracker_metadata\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.ProjectTrackerMetadata\x12;\n\x0cpartner_info\x18\t \x01(\x0b\x32%.chromiumos.test.artifact.PartnerInfo\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xaf\x01\n\x0fTestEnvironment\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x12\x42\n\x0c\x61ncestor_ids\x18\x02 \x03(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x1a\x1e\n\x02Id\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xdb\x03\n\x07TestRun\x12>\n\x0etest_case_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.TestCaseInfo\x12*\n\tlogs_info\x18\x02 \x03(\x0b\x32\x17.chromiumos.StoragePath\x12>\n\x0e\x63ustom_results\x18\x03 \x03(\x0b\x32&.chromiumos.test.artifact.CustomResult\x12\x37\n\ttime_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x12:\n\x0ctest_harness\x18\x05 \x01(\x0b\x32 .chromiumos.test.api.TestHarnessB\x02\x18\x01\x12G\n\x12\x65xecution_metadata\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.ExecutionMetadata\x12\x39\n\x04tags\x18\x07 \x03(\x0b\x32+.chromiumos.test.artifact.TestRun.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb0\x02\n\x0cTestCaseInfo\x12\x45\n\x12test_case_metadata\x18\x01 \x01(\x0b\x32%.chromiumos.test.api.TestCaseMetadataB\x02\x18\x01\x12=\n\x10test_case_result\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.TestCaseResult\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\r\n\x05suite\x18\x04 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x05 \x01(\t\x12\x19\n\x11main_builder_name\x18\x06 \x01(\t\x12\x11\n\trequester\x18\x07 \x01(\t\x12\x10\n\x08\x63ontacts\x18\x08 \x03(\t\x12\x14\n\x0ctest_plan_id\x18\t \x01(\t\x12\x0f\n\x07\x63hannel\x18\n \x01(\t\"\x80\x02\n\tBuildInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tmilestone\x18\x02 \x01(\x04\x12\x19\n\x11\x63hrome_os_version\x18\x03 \x01(\t\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x18\n\x10snapshot_version\x18\x05 \x01(\t\x12\x14\n\x0c\x62uild_target\x18\x06 \x01(\t\x12\x15\n\rboard_variant\x18\x07 \x01(\t\x12\r\n\x05\x62oard\x18\x08 \x01(\t\x12?\n\x0e\x62uild_metadata\x18\t \x01(\x0b\x32\'.chromiumos.test.artifact.BuildMetadata\x12\x10\n\x08\x63ritical\x18\n \x01(\x08\"\xcb\x11\n\rBuildMetadata\x12\x38\n\x03\x61rc\x18\x01 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Arc\x12>\n\x06\x63hrome\x18\x02 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Chrome\x12\x43\n\tchrome_os\x18\x03 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.ChromeOs\x12\x42\n\x08\x66irmware\x18\x04 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Firmware\x12>\n\x06kernel\x18\x05 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Kernel\x12\x38\n\x03sku\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Sku\x12@\n\x07\x63hipset\x18\x07 \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.Chipset\x12\x42\n\x08\x63\x65llular\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Cellular\x12>\n\x06lacros\x18\t \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Lacros\x12\x39\n\tchameleon\x18\n \x01(\x0b\x32\".chromiumos.test.lab.api.ChameleonB\x02\x18\x01\x12\x41\n\x08gfx_info\x18\x0b \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.GfxInfo\x12\x36\n\nmodem_info\x18\x0c \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfo\x12M\n\x0e\x63hameleon_info\x18\r \x01(\x0b\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonInfo\x1a&\n\x03\x41rc\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x02 \x01(\t\x1a\x19\n\x06\x43hrome\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x1b\n\x08\x43hromeOs\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x32\n\x08\x46irmware\x12\x12\n\nro_version\x18\x01 \x01(\t\x12\x12\n\nrw_version\x18\x02 \x01(\t\x1a\x19\n\x06Kernel\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a+\n\x03Sku\x12\x10\n\x08hwid_sku\x18\x01 \x01(\t\x12\x12\n\ndlm_sku_id\x18\x02 \x01(\t\x1a\x38\n\x07\x43hipset\x12\x11\n\twifi_chip\x18\x01 \x01(\t\x12\x1a\n\x12wifi_router_models\x18\x02 \x01(\t\x1a\x1b\n\x08\x43\x65llular\x12\x0f\n\x07\x63\x61rrier\x18\x01 \x01(\t\x1a\x35\n\x06Lacros\x12\x13\n\x0b\x61sh_version\x18\x01 \x01(\t\x12\x16\n\x0elacros_version\x18\x02 \x01(\t\x1a\x80\x03\n\x07GfxInfo\x12\x0e\n\x06gpu_id\x18\x01 \x01(\t\x12\x12\n\ngpu_family\x18\x02 \x01(\t\x12\x1d\n\x15gpu_open_gles_version\x18\x03 \x01(\t\x12\x12\n\ngpu_vendor\x18\x04 \x01(\t\x12\x1a\n\x12gpu_vulkan_version\x18\x05 \x01(\t\x12\x1b\n\x13platform_cpu_vendor\x18\x06 \x01(\t\x12\x1a\n\x12platform_disk_size\x18\x07 \x01(\x04\x12\x1c\n\x14platform_memory_size\x18\x08 \x01(\x04\x12\x1a\n\x12\x64isplay_panel_name\x18\t \x01(\t\x12\x1b\n\x13\x64isplay_present_hdr\x18\n \x01(\t\x12\x1b\n\x13\x64isplay_present_psr\x18\x0b \x01(\t\x12\x1b\n\x13\x64isplay_present_vrr\x18\x0c \x01(\t\x12\x1c\n\x14\x64isplay_refresh_rate\x18\r \x01(\t\x12\x1a\n\x12\x64isplay_resolution\x18\x0e \x01(\t\x1a\xc3\x01\n\rChameleonInfo\x12M\n\x0e\x63hameleon_type\x18\x01 \x03(\x0e\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonType\x12\x63\n\x1a\x63hameleon_connection_types\x18\x02 \x03(\x0e\x32?.chromiumos.test.artifact.BuildMetadata.ChameleonConnectionType\"\xe9\x01\n\rChameleonType\x12\x1a\n\x16\x43HAMELEON_TYPE_INVALID\x10\x00\x12\x15\n\x11\x43HAMELEON_TYPE_DP\x10\x02\x12\x1e\n\x16\x43HAMELEON_TYPE_DP_HDMI\x10\x03\x1a\x02\x08\x01\x12\x1a\n\x12\x43HAMELEON_TYPE_VGA\x10\x04\x1a\x02\x08\x01\x12\x17\n\x13\x43HAMELEON_TYPE_HDMI\x10\x05\x12\x15\n\x11\x43HAMELEON_TYPE_V2\x10\t\x12\x15\n\x11\x43HAMELEON_TYPE_V3\x10\n\x12\x16\n\x12\x43HAMELEON_TYPE_RPI\x10\x0b\"\x04\x08\x01\x10\x01\"\x04\x08\x06\x10\x08\"\xd2\x01\n\x17\x43hameleonConnectionType\x12%\n!CHAMELEON_CONNECTION_TYPE_INVALID\x10\x00\x12\'\n#CHAMELEON_CONNECTION_TYPE_AUDIOJACK\x10\x01\x12!\n\x1d\x43HAMELEON_CONNECTION_TYPE_USB\x10\x02\x12\"\n\x1e\x43HAMELEON_CONNECTION_TYPE_HDMI\x10\x03\x12 \n\x1c\x43HAMELEON_CONNECTION_TYPE_DP\x10\x04\"\xe7\x01\n\x07\x44utInfo\x12)\n\x03\x64ut\x18\x01 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x12<\n\x0fprovision_state\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\x12\x39\n\x04tags\x18\x03 \x03(\x0b\x32+.chromiumos.test.artifact.DutInfo.TagsEntry\x12\x0b\n\x03\x63\x62x\x18\x04 \x01(\x08\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"E\n\tDroneInfo\x12\r\n\x05\x64rone\x18\x01 \x01(\t\x12\x13\n\x0b\x64rone_image\x18\x02 \x01(\t\x12\x14\n\x0c\x64rone_server\x18\x03 \x01(\t\"k\n\x0cSwarmingInfo\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x15\n\rsuite_task_id\x18\x02 \x01(\t\x12\x11\n\ttask_name\x18\x03 \x01(\t\x12\x0c\n\x04pool\x18\x04 \x01(\t\x12\x12\n\nlabel_pool\x18\x05 \x01(\t\"!\n\rInventoryInfo\x12\x10\n\x08ufs_zone\x18\x01 \x01(\t\"=\n\tBuilderID\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x0f\n\x07\x62uilder\x18\x03 \x01(\t\"i\n\x0f\x42uildbucketInfo\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x34\n\x07\x62uilder\x18\x02 \x01(\x0b\x32#.chromiumos.test.artifact.BuilderID\x12\x14\n\x0c\x61ncestor_ids\x18\x03 \x03(\x03\"\xc9\x01\n\nSkylabInfo\x12\x37\n\ndrone_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\x12=\n\rswarming_info\x18\x02 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x03 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\"\xc9\x01\n\nSatlabInfo\x12=\n\rswarming_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x02 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\x12\x37\n\ndrone_info\x18\x03 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\"!\n\x0bPartnerInfo\x12\x12\n\naccount_id\x18\x01 \x01(\x03\"\xc4\x02\n\rExecutionInfo\x12\x37\n\nbuild_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.BuildInfo\x12\x33\n\x08\x64ut_info\x18\x02 \x01(\x0b\x32!.chromiumos.test.artifact.DutInfo\x12;\n\x0bskylab_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.SkylabInfoH\x00\x12;\n\x0bsatlab_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.SatlabInfoH\x00\x12?\n\x0einventory_info\x18\x05 \x01(\x0b\x32\'.chromiumos.test.artifact.InventoryInfoB\n\n\x08\x65nv_info\"\x8f\x01\n\x0c\x43ustomResult\x12\x35\n\x14result_artifact_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x39\n\x03\x63ts\x18\x02 \x01(\x0b\x32*.chromiumos.test.artifact.CustomResult.CtsH\x00\x1a\x05\n\x03\x43tsB\x06\n\x04type\"\x9c\x01\n\nTimingInfo\x12/\n\x0bqueued_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0cstarted_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x83\x03\n\x12SchedulingMetadata\x12\x65\n\x15hardware_dependencies\x18\x01 \x03(\x0b\x32\x46.chromiumos.test.artifact.SchedulingMetadata.HardwareDependenciesEntry\x12Y\n\x0fscheduling_args\x18\x02 \x03(\x0b\x32@.chromiumos.test.artifact.SchedulingMetadata.SchedulingArgsEntry\x12\x37\n\ttime_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x1a;\n\x19HardwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x35\n\x13SchedulingArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x16ProjectTrackerMetadata\x12\x0e\n\x06\x62ug_id\x18\x01 \x01(\t\"\xb5\x02\n\x11\x45xecutionMetadata\x12\x64\n\x15software_dependencies\x18\x01 \x03(\x0b\x32\x45.chromiumos.test.artifact.ExecutionMetadata.SoftwareDependenciesEntry\x12L\n\ttest_args\x18\x02 \x03(\x0b\x32\x39.chromiumos.test.artifact.ExecutionMetadata.TestArgsEntry\x1a;\n\x19SoftwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x34Z2go.chromium.org/chromiumos/config/go/test/artifactb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*chromiumos/test/artifact/test_result.proto\x12\x18\x63hromiumos.test.artifact\x1a\x1d\x63hromiumos/storage_path.proto\x1a)chromiumos/test/api/provision_state.proto\x1a,chromiumos/test/api/test_case_metadata.proto\x1a*chromiumos/test/api/test_case_result.proto\x1a&chromiumos/test/api/test_harness.proto\x1a!chromiumos/test/lab/api/dut.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x96\x01\n\nTestResult\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x41\n\x0ftest_invocation\x18\x02 \x01(\x0b\x32(.chromiumos.test.artifact.TestInvocation\x12\x34\n\ttest_runs\x18\x03 \x03(\x0b\x32!.chromiumos.test.artifact.TestRun\"\x85\x05\n\x0eTestInvocation\x12\x43\n\x10test_environment\x18\x01 \x01(\x0b\x32).chromiumos.test.artifact.TestEnvironment\x12:\n\x0c\x64ut_topology\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.DutTopology\x12G\n\x16primary_execution_info\x18\x03 \x01(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12J\n\x19secondary_executions_info\x18\x04 \x03(\x0b\x32\'.chromiumos.test.artifact.ExecutionInfo\x12I\n\x13scheduling_metadata\x18\x05 \x01(\x0b\x32,.chromiumos.test.artifact.SchedulingMetadata\x12@\n\x04tags\x18\x06 \x03(\x0b\x32\x32.chromiumos.test.artifact.TestInvocation.TagsEntry\x12\x12\n\nis_cft_run\x18\x07 \x01(\x08\x12R\n\x18project_tracker_metadata\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.ProjectTrackerMetadata\x12;\n\x0cpartner_info\x18\t \x01(\x0b\x32%.chromiumos.test.artifact.PartnerInfo\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xaf\x01\n\x0fTestEnvironment\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x12\x42\n\x0c\x61ncestor_ids\x18\x02 \x03(\x0b\x32,.chromiumos.test.artifact.TestEnvironment.Id\x1a\x1e\n\x02Id\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xdb\x03\n\x07TestRun\x12>\n\x0etest_case_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.TestCaseInfo\x12*\n\tlogs_info\x18\x02 \x03(\x0b\x32\x17.chromiumos.StoragePath\x12>\n\x0e\x63ustom_results\x18\x03 \x03(\x0b\x32&.chromiumos.test.artifact.CustomResult\x12\x37\n\ttime_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x12:\n\x0ctest_harness\x18\x05 \x01(\x0b\x32 .chromiumos.test.api.TestHarnessB\x02\x18\x01\x12G\n\x12\x65xecution_metadata\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.ExecutionMetadata\x12\x39\n\x04tags\x18\x07 \x03(\x0b\x32+.chromiumos.test.artifact.TestRun.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb0\x02\n\x0cTestCaseInfo\x12\x45\n\x12test_case_metadata\x18\x01 \x01(\x0b\x32%.chromiumos.test.api.TestCaseMetadataB\x02\x18\x01\x12=\n\x10test_case_result\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.TestCaseResult\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\r\n\x05suite\x18\x04 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x05 \x01(\t\x12\x19\n\x11main_builder_name\x18\x06 \x01(\t\x12\x11\n\trequester\x18\x07 \x01(\t\x12\x10\n\x08\x63ontacts\x18\x08 \x03(\t\x12\x14\n\x0ctest_plan_id\x18\t \x01(\t\x12\x0f\n\x07\x63hannel\x18\n \x01(\t\"\x80\x02\n\tBuildInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tmilestone\x18\x02 \x01(\x04\x12\x19\n\x11\x63hrome_os_version\x18\x03 \x01(\t\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x18\n\x10snapshot_version\x18\x05 \x01(\t\x12\x14\n\x0c\x62uild_target\x18\x06 \x01(\t\x12\x15\n\rboard_variant\x18\x07 \x01(\t\x12\r\n\x05\x62oard\x18\x08 \x01(\t\x12?\n\x0e\x62uild_metadata\x18\t \x01(\x0b\x32\'.chromiumos.test.artifact.BuildMetadata\x12\x10\n\x08\x63ritical\x18\n \x01(\x08\"\xcb\x11\n\rBuildMetadata\x12\x38\n\x03\x61rc\x18\x01 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Arc\x12>\n\x06\x63hrome\x18\x02 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Chrome\x12\x43\n\tchrome_os\x18\x03 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.ChromeOs\x12\x42\n\x08\x66irmware\x18\x04 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Firmware\x12>\n\x06kernel\x18\x05 \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Kernel\x12\x38\n\x03sku\x18\x06 \x01(\x0b\x32+.chromiumos.test.artifact.BuildMetadata.Sku\x12@\n\x07\x63hipset\x18\x07 \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.Chipset\x12\x42\n\x08\x63\x65llular\x18\x08 \x01(\x0b\x32\x30.chromiumos.test.artifact.BuildMetadata.Cellular\x12>\n\x06lacros\x18\t \x01(\x0b\x32..chromiumos.test.artifact.BuildMetadata.Lacros\x12\x39\n\tchameleon\x18\n \x01(\x0b\x32\".chromiumos.test.lab.api.ChameleonB\x02\x18\x01\x12\x41\n\x08gfx_info\x18\x0b \x01(\x0b\x32/.chromiumos.test.artifact.BuildMetadata.GfxInfo\x12\x36\n\nmodem_info\x18\x0c \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfo\x12M\n\x0e\x63hameleon_info\x18\r \x01(\x0b\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonInfo\x1a&\n\x03\x41rc\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x02 \x01(\t\x1a\x19\n\x06\x43hrome\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x1b\n\x08\x43hromeOs\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x32\n\x08\x46irmware\x12\x12\n\nro_version\x18\x01 \x01(\t\x12\x12\n\nrw_version\x18\x02 \x01(\t\x1a\x19\n\x06Kernel\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a+\n\x03Sku\x12\x10\n\x08hwid_sku\x18\x01 \x01(\t\x12\x12\n\ndlm_sku_id\x18\x02 \x01(\t\x1a\x38\n\x07\x43hipset\x12\x11\n\twifi_chip\x18\x01 \x01(\t\x12\x1a\n\x12wifi_router_models\x18\x02 \x01(\t\x1a\x1b\n\x08\x43\x65llular\x12\x0f\n\x07\x63\x61rrier\x18\x01 \x01(\t\x1a\x35\n\x06Lacros\x12\x13\n\x0b\x61sh_version\x18\x01 \x01(\t\x12\x16\n\x0elacros_version\x18\x02 \x01(\t\x1a\x80\x03\n\x07GfxInfo\x12\x0e\n\x06gpu_id\x18\x01 \x01(\t\x12\x12\n\ngpu_family\x18\x02 \x01(\t\x12\x1d\n\x15gpu_open_gles_version\x18\x03 \x01(\t\x12\x12\n\ngpu_vendor\x18\x04 \x01(\t\x12\x1a\n\x12gpu_vulkan_version\x18\x05 \x01(\t\x12\x1b\n\x13platform_cpu_vendor\x18\x06 \x01(\t\x12\x1a\n\x12platform_disk_size\x18\x07 \x01(\x04\x12\x1c\n\x14platform_memory_size\x18\x08 \x01(\x04\x12\x1a\n\x12\x64isplay_panel_name\x18\t \x01(\t\x12\x1b\n\x13\x64isplay_present_hdr\x18\n \x01(\t\x12\x1b\n\x13\x64isplay_present_psr\x18\x0b \x01(\t\x12\x1b\n\x13\x64isplay_present_vrr\x18\x0c \x01(\t\x12\x1c\n\x14\x64isplay_refresh_rate\x18\r \x01(\t\x12\x1a\n\x12\x64isplay_resolution\x18\x0e \x01(\t\x1a\xc3\x01\n\rChameleonInfo\x12M\n\x0e\x63hameleon_type\x18\x01 \x03(\x0e\x32\x35.chromiumos.test.artifact.BuildMetadata.ChameleonType\x12\x63\n\x1a\x63hameleon_connection_types\x18\x02 \x03(\x0e\x32?.chromiumos.test.artifact.BuildMetadata.ChameleonConnectionType\"\xe9\x01\n\rChameleonType\x12\x1a\n\x16\x43HAMELEON_TYPE_INVALID\x10\x00\x12\x15\n\x11\x43HAMELEON_TYPE_DP\x10\x02\x12\x1e\n\x16\x43HAMELEON_TYPE_DP_HDMI\x10\x03\x1a\x02\x08\x01\x12\x1a\n\x12\x43HAMELEON_TYPE_VGA\x10\x04\x1a\x02\x08\x01\x12\x17\n\x13\x43HAMELEON_TYPE_HDMI\x10\x05\x12\x15\n\x11\x43HAMELEON_TYPE_V2\x10\t\x12\x15\n\x11\x43HAMELEON_TYPE_V3\x10\n\x12\x16\n\x12\x43HAMELEON_TYPE_RPI\x10\x0b\"\x04\x08\x01\x10\x01\"\x04\x08\x06\x10\x08\"\xd2\x01\n\x17\x43hameleonConnectionType\x12%\n!CHAMELEON_CONNECTION_TYPE_INVALID\x10\x00\x12\'\n#CHAMELEON_CONNECTION_TYPE_AUDIOJACK\x10\x01\x12!\n\x1d\x43HAMELEON_CONNECTION_TYPE_USB\x10\x02\x12\"\n\x1e\x43HAMELEON_CONNECTION_TYPE_HDMI\x10\x03\x12 \n\x1c\x43HAMELEON_CONNECTION_TYPE_DP\x10\x04\"\xe7\x01\n\x07\x44utInfo\x12)\n\x03\x64ut\x18\x01 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x12<\n\x0fprovision_state\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\x12\x39\n\x04tags\x18\x03 \x03(\x0b\x32+.chromiumos.test.artifact.DutInfo.TagsEntry\x12\x0b\n\x03\x63\x62x\x18\x04 \x01(\x08\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"E\n\tDroneInfo\x12\r\n\x05\x64rone\x18\x01 \x01(\t\x12\x13\n\x0b\x64rone_image\x18\x02 \x01(\t\x12\x14\n\x0c\x64rone_server\x18\x03 \x01(\t\"{\n\x0cSwarmingInfo\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x15\n\rsuite_task_id\x18\x02 \x01(\t\x12\x11\n\ttask_name\x18\x03 \x01(\t\x12\x0c\n\x04pool\x18\x04 \x01(\t\x12\x12\n\nlabel_pool\x18\x05 \x01(\t\x12\x0e\n\x06\x62ot_id\x18\x06 \x01(\t\"!\n\rInventoryInfo\x12\x10\n\x08ufs_zone\x18\x01 \x01(\t\"=\n\tBuilderID\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x0f\n\x07\x62uilder\x18\x03 \x01(\t\"i\n\x0f\x42uildbucketInfo\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x34\n\x07\x62uilder\x18\x02 \x01(\x0b\x32#.chromiumos.test.artifact.BuilderID\x12\x14\n\x0c\x61ncestor_ids\x18\x03 \x03(\x03\"\xc9\x01\n\nSkylabInfo\x12\x37\n\ndrone_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\x12=\n\rswarming_info\x18\x02 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x03 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\"\xc9\x01\n\nSatlabInfo\x12=\n\rswarming_info\x18\x01 \x01(\x0b\x32&.chromiumos.test.artifact.SwarmingInfo\x12\x43\n\x10\x62uildbucket_info\x18\x02 \x01(\x0b\x32).chromiumos.test.artifact.BuildbucketInfo\x12\x37\n\ndrone_info\x18\x03 \x01(\x0b\x32#.chromiumos.test.artifact.DroneInfo\"!\n\x0bPartnerInfo\x12\x12\n\naccount_id\x18\x01 \x01(\x03\"\xc4\x02\n\rExecutionInfo\x12\x37\n\nbuild_info\x18\x01 \x01(\x0b\x32#.chromiumos.test.artifact.BuildInfo\x12\x33\n\x08\x64ut_info\x18\x02 \x01(\x0b\x32!.chromiumos.test.artifact.DutInfo\x12;\n\x0bskylab_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.SkylabInfoH\x00\x12;\n\x0bsatlab_info\x18\x04 \x01(\x0b\x32$.chromiumos.test.artifact.SatlabInfoH\x00\x12?\n\x0einventory_info\x18\x05 \x01(\x0b\x32\'.chromiumos.test.artifact.InventoryInfoB\n\n\x08\x65nv_info\"\x8f\x01\n\x0c\x43ustomResult\x12\x35\n\x14result_artifact_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x39\n\x03\x63ts\x18\x02 \x01(\x0b\x32*.chromiumos.test.artifact.CustomResult.CtsH\x00\x1a\x05\n\x03\x43tsB\x06\n\x04type\"\x9c\x01\n\nTimingInfo\x12/\n\x0bqueued_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0cstarted_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x83\x03\n\x12SchedulingMetadata\x12\x65\n\x15hardware_dependencies\x18\x01 \x03(\x0b\x32\x46.chromiumos.test.artifact.SchedulingMetadata.HardwareDependenciesEntry\x12Y\n\x0fscheduling_args\x18\x02 \x03(\x0b\x32@.chromiumos.test.artifact.SchedulingMetadata.SchedulingArgsEntry\x12\x37\n\ttime_info\x18\x03 \x01(\x0b\x32$.chromiumos.test.artifact.TimingInfo\x1a;\n\x19HardwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x35\n\x13SchedulingArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x16ProjectTrackerMetadata\x12\x0e\n\x06\x62ug_id\x18\x01 \x01(\t\"\xb5\x02\n\x11\x45xecutionMetadata\x12\x64\n\x15software_dependencies\x18\x01 \x03(\x0b\x32\x45.chromiumos.test.artifact.ExecutionMetadata.SoftwareDependenciesEntry\x12L\n\ttest_args\x18\x02 \x03(\x0b\x32\x39.chromiumos.test.artifact.ExecutionMetadata.TestArgsEntry\x1a;\n\x19SoftwareDependenciesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x34Z2go.chromium.org/chromiumos/config/go/test/artifactb\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -107,39 +107,39 @@
   _globals['_DRONEINFO']._serialized_start=4887
   _globals['_DRONEINFO']._serialized_end=4956
   _globals['_SWARMINGINFO']._serialized_start=4958
-  _globals['_SWARMINGINFO']._serialized_end=5065
-  _globals['_INVENTORYINFO']._serialized_start=5067
-  _globals['_INVENTORYINFO']._serialized_end=5100
-  _globals['_BUILDERID']._serialized_start=5102
-  _globals['_BUILDERID']._serialized_end=5163
-  _globals['_BUILDBUCKETINFO']._serialized_start=5165
-  _globals['_BUILDBUCKETINFO']._serialized_end=5270
-  _globals['_SKYLABINFO']._serialized_start=5273
-  _globals['_SKYLABINFO']._serialized_end=5474
-  _globals['_SATLABINFO']._serialized_start=5477
-  _globals['_SATLABINFO']._serialized_end=5678
-  _globals['_PARTNERINFO']._serialized_start=5680
-  _globals['_PARTNERINFO']._serialized_end=5713
-  _globals['_EXECUTIONINFO']._serialized_start=5716
-  _globals['_EXECUTIONINFO']._serialized_end=6040
-  _globals['_CUSTOMRESULT']._serialized_start=6043
-  _globals['_CUSTOMRESULT']._serialized_end=6186
-  _globals['_CUSTOMRESULT_CTS']._serialized_start=6173
-  _globals['_CUSTOMRESULT_CTS']._serialized_end=6178
-  _globals['_TIMINGINFO']._serialized_start=6189
-  _globals['_TIMINGINFO']._serialized_end=6345
-  _globals['_SCHEDULINGMETADATA']._serialized_start=6348
-  _globals['_SCHEDULINGMETADATA']._serialized_end=6735
-  _globals['_SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY']._serialized_start=6621
-  _globals['_SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY']._serialized_end=6680
-  _globals['_SCHEDULINGMETADATA_SCHEDULINGARGSENTRY']._serialized_start=6682
-  _globals['_SCHEDULINGMETADATA_SCHEDULINGARGSENTRY']._serialized_end=6735
-  _globals['_PROJECTTRACKERMETADATA']._serialized_start=6737
-  _globals['_PROJECTTRACKERMETADATA']._serialized_end=6777
-  _globals['_EXECUTIONMETADATA']._serialized_start=6780
-  _globals['_EXECUTIONMETADATA']._serialized_end=7089
-  _globals['_EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY']._serialized_start=6981
-  _globals['_EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY']._serialized_end=7040
-  _globals['_EXECUTIONMETADATA_TESTARGSENTRY']._serialized_start=7042
-  _globals['_EXECUTIONMETADATA_TESTARGSENTRY']._serialized_end=7089
+  _globals['_SWARMINGINFO']._serialized_end=5081
+  _globals['_INVENTORYINFO']._serialized_start=5083
+  _globals['_INVENTORYINFO']._serialized_end=5116
+  _globals['_BUILDERID']._serialized_start=5118
+  _globals['_BUILDERID']._serialized_end=5179
+  _globals['_BUILDBUCKETINFO']._serialized_start=5181
+  _globals['_BUILDBUCKETINFO']._serialized_end=5286
+  _globals['_SKYLABINFO']._serialized_start=5289
+  _globals['_SKYLABINFO']._serialized_end=5490
+  _globals['_SATLABINFO']._serialized_start=5493
+  _globals['_SATLABINFO']._serialized_end=5694
+  _globals['_PARTNERINFO']._serialized_start=5696
+  _globals['_PARTNERINFO']._serialized_end=5729
+  _globals['_EXECUTIONINFO']._serialized_start=5732
+  _globals['_EXECUTIONINFO']._serialized_end=6056
+  _globals['_CUSTOMRESULT']._serialized_start=6059
+  _globals['_CUSTOMRESULT']._serialized_end=6202
+  _globals['_CUSTOMRESULT_CTS']._serialized_start=6189
+  _globals['_CUSTOMRESULT_CTS']._serialized_end=6194
+  _globals['_TIMINGINFO']._serialized_start=6205
+  _globals['_TIMINGINFO']._serialized_end=6361
+  _globals['_SCHEDULINGMETADATA']._serialized_start=6364
+  _globals['_SCHEDULINGMETADATA']._serialized_end=6751
+  _globals['_SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY']._serialized_start=6637
+  _globals['_SCHEDULINGMETADATA_HARDWAREDEPENDENCIESENTRY']._serialized_end=6696
+  _globals['_SCHEDULINGMETADATA_SCHEDULINGARGSENTRY']._serialized_start=6698
+  _globals['_SCHEDULINGMETADATA_SCHEDULINGARGSENTRY']._serialized_end=6751
+  _globals['_PROJECTTRACKERMETADATA']._serialized_start=6753
+  _globals['_PROJECTTRACKERMETADATA']._serialized_end=6793
+  _globals['_EXECUTIONMETADATA']._serialized_start=6796
+  _globals['_EXECUTIONMETADATA']._serialized_end=7105
+  _globals['_EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY']._serialized_start=6997
+  _globals['_EXECUTIONMETADATA_SOFTWAREDEPENDENCIESENTRY']._serialized_end=7056
+  _globals['_EXECUTIONMETADATA_TESTARGSENTRY']._serialized_start=7058
+  _globals['_EXECUTIONMETADATA_TESTARGSENTRY']._serialized_end=7105
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/chromiumos/test/lab/api/dut_pb2.py b/api/gen_sdk/chromiumos/test/lab/api/dut_pb2.py
index 2a09fef..9cc3374 100644
--- a/api/gen_sdk/chromiumos/test/lab/api/dut_pb2.py
+++ b/api/gen_sdk/chromiumos/test/lab/api/dut_pb2.py
@@ -13,9 +13,10 @@
 
 from chromite.api.gen_sdk.chromiumos.config.api import device_config_id_pb2 as chromiumos_dot_config_dot_api_dot_device__config__id__pb2
 from chromite.api.gen_sdk.chromiumos.test.lab.api import ip_endpoint_pb2 as chromiumos_dot_test_dot_lab_dot_api_dot_ip__endpoint__pb2
+from chromite.api.gen_sdk.chromiumos.test.lab.api import pasit_host_pb2 as chromiumos_dot_test_dot_lab_dot_api_dot_pasit__host__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chromiumos/test/lab/api/dut.proto\x12\x17\x63hromiumos.test.lab.api\x1a,chromiumos/config/api/device_config_id.proto\x1a)chromiumos/test/lab/api/ip_endpoint.proto\"\xc4\r\n\x03\x44ut\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x39\n\x08\x63hromeos\x18\x02 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.ChromeOSH\x00\x12\x37\n\x07\x61ndroid\x18\x03 \x01(\x0b\x32$.chromiumos.test.lab.api.Dut.AndroidH\x00\x12\x39\n\x08\x64\x65vboard\x18\x05 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.DevboardH\x00\x12:\n\x0c\x63\x61\x63he_server\x18\x04 \x01(\x0b\x32$.chromiumos.test.lab.api.CacheServer\x12\x38\n\x0bwifi_secret\x18\x06 \x01(\x0b\x32#.chromiumos.test.lab.api.WifiSecret\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\x1a\xd2\x07\n\x08\x43hromeOS\x12?\n\x10\x64\x65vice_config_id\x18\x03 \x01(\x0b\x32%.chromiumos.config.api.DeviceConfigId\x12\x30\n\x03ssh\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x0f \x01(\t\x12\x34\n\tdut_model\x18\x0e \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x12-\n\x05servo\x18\x04 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x35\n\tchameleon\x18\x05 \x01(\x0b\x32\".chromiumos.test.lab.api.Chameleon\x12)\n\x03rpm\x18\x06 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.RPM\x12\x41\n\x10\x65xternal_cameras\x18\x07 \x03(\x0b\x32\'.chromiumos.test.lab.api.ExternalCamera\x12-\n\x05\x61udio\x18\x08 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Audio\x12+\n\x04wifi\x18\t \x01(\x0b\x32\x1d.chromiumos.test.lab.api.Wifi\x12-\n\x05touch\x18\n \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Touch\x12\x35\n\tcamerabox\x18\x0b \x01(\x0b\x32\".chromiumos.test.lab.api.Camerabox\x12.\n\x06\x63\x61\x62les\x18\x0c \x03(\x0b\x32\x1e.chromiumos.test.lab.api.Cable\x12\x33\n\x08\x63\x65llular\x18\r \x01(\x0b\x32!.chromiumos.test.lab.api.Cellular\x12\x16\n\x0ehwid_component\x18\x10 \x03(\t\x12?\n\x0f\x62luetooth_peers\x18\x11 \x03(\x0b\x32&.chromiumos.test.lab.api.BluetoothPeer\x12\x0b\n\x03sku\x18\x12 \x01(\t\x12\x0c\n\x04hwid\x18\x13 \x01(\t\x12-\n\x05phase\x18\x14 \x01(\x0e\x32\x1e.chromiumos.test.lab.api.Phase\x12\x33\n\tsim_infos\x18\x15 \x03(\x0b\x32 .chromiumos.test.lab.api.SIMInfo\x12\x36\n\nmodem_info\x18\x16 \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfoJ\x04\x08\x01\x10\x02\x1a\xa6\x01\n\x07\x41ndroid\x12@\n\x13\x61ssociated_hostname\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rserial_number\x18\x03 \x01(\t\x12\x34\n\tdut_model\x18\x04 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x1a\xcb\x01\n\x08\x44\x65vboard\x12\x12\n\nboard_type\x18\x01 \x01(\t\x12\x19\n\x11ultradebug_serial\x18\x02 \x01(\t\x12-\n\x05servo\x18\x03 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x1d\n\x15\x66ingerprint_module_id\x18\x04 \x01(\t\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x34\n\tdut_model\x18\x06 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModelB\n\n\x08\x64ut_type\"4\n\x08\x44utModel\x12\x14\n\x0c\x62uild_target\x18\x01 \x01(\t\x12\x12\n\nmodel_name\x18\x02 \x01(\t\"\x8f\x01\n\x0b\x44utTopology\x12\x33\n\x02id\x18\x03 \x01(\x0b\x32\'.chromiumos.test.lab.api.DutTopology.Id\x12*\n\x04\x64uts\x18\x04 \x03(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\tJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03\")\n\x05\x41udio\x12\x11\n\taudio_box\x18\x01 \x01(\x08\x12\r\n\x05\x61trus\x18\x02 \x01(\x08\"\x95\x01\n\x05\x43\x61\x62le\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32#.chromiumos.test.lab.api.Cable.Type\"Y\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\r\n\tAUDIOJACK\x10\x01\x12\x0c\n\x08USBAUDIO\x10\x02\x12\x0f\n\x0bUSBPRINTING\x10\x03\x12\r\n\tHDMIAUDIO\x10\x04\"C\n\x0b\x43\x61\x63heServer\x12\x34\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"}\n\tCamerabox\x12\x39\n\x06\x66\x61\x63ing\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Camerabox.Facing\"5\n\x06\x46\x61\x63ing\x12\x16\n\x12\x46\x41\x43ING_UNSPECIFIED\x10\x00\x12\x08\n\x04\x42\x41\x43K\x10\x01\x12\t\n\x05\x46RONT\x10\x02\"\xa3\x01\n\x08\x43\x65llular\x12=\n\toperators\x18\x01 \x03(\x0e\x32*.chromiumos.test.lab.api.Cellular.Operator\x12\x0f\n\x07\x63\x61rrier\x18\x02 \x01(\t\"G\n\x08Operator\x12\x18\n\x14OPERATOR_UNSPECIFIED\x10\x00\x12\x07\n\x03\x41TT\x10\x01\x12\x0b\n\x07VERIZON\x10\x02\x12\x0b\n\x07TMOBILE\x10\x03\"\x8e\x01\n\tModemInfo\x12\x30\n\x04type\x18\x01 \x01(\x0e\x32\".chromiumos.test.lab.api.ModemType\x12\x0c\n\x04imei\x18\x02 \x01(\t\x12\x17\n\x0fsupported_bands\x18\x03 \x01(\t\x12\x11\n\tsim_count\x18\x04 \x01(\x05\x12\x15\n\rmodel_variant\x18\x05 \x01(\t\"\xa9\x01\n\x07SIMInfo\x12\x0f\n\x07slot_id\x18\x01 \x01(\x05\x12.\n\x04type\x18\x02 \x01(\x0e\x32 .chromiumos.test.lab.api.SIMType\x12\x0b\n\x03\x65id\x18\x03 \x01(\t\x12\x11\n\ttest_esim\x18\x04 \x01(\x08\x12=\n\x0cprofile_info\x18\x05 \x03(\x0b\x32\'.chromiumos.test.lab.api.SIMProfileInfo\"\x95\x01\n\x0eSIMProfileInfo\x12\r\n\x05iccid\x18\x01 \x01(\t\x12\x0f\n\x07sim_pin\x18\x02 \x01(\t\x12\x0f\n\x07sim_puk\x18\x03 \x01(\t\x12>\n\x0c\x63\x61rrier_name\x18\x04 \x01(\x0e\x32(.chromiumos.test.lab.api.NetworkProvider\x12\x12\n\nown_number\x18\x05 \x01(\t\"\xac\x03\n\tChameleon\x12\x42\n\x0bperipherals\x18\x01 \x03(\x0e\x32-.chromiumos.test.lab.api.Chameleon.Peripheral\x12\x13\n\x0b\x61udio_board\x18\x02 \x01(\x08\x12\x37\n\x05state\x18\x03 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\x12\x10\n\x08hostname\x18\x04 \x01(\t\x12\x36\n\x05types\x18\x05 \x03(\x0e\x32\'.chromiumos.test.lab.api.Chameleon.Type\"\x94\x01\n\nPeripheral\x12\x1a\n\x16PERIPHERAL_UNSPECIFIED\x10\x00\x12\n\n\x06\x42T_HID\x10\x01\x12\x06\n\x02\x44P\x10\x02\x12\x0b\n\x07\x44P_HDMI\x10\x03\x12\x07\n\x03VGA\x10\x04\x12\x08\n\x04HDMI\x10\x05\x12\x0e\n\nBT_BLE_HID\x10\x06\x12\x10\n\x0c\x42T_A2DP_SINK\x10\x07\x12\x0b\n\x07\x42T_PEER\x10\x08\x12\x07\n\x03RPI\x10\t\",\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x06\n\x02V2\x10\x01\x12\x06\n\x02V3\x10\x02\"\x83\x01\n\x0e\x45xternalCamera\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.test.lab.api.ExternalCamera.Type\"5\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\n\n\x06HUDDLY\x10\x01\x12\x0b\n\x07PTZPRO2\x10\x02\"\xef\x01\n\x03RPM\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12=\n\x10\x66rontend_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12@\n\x13power_unit_hostname\x18\x03 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x19\n\x11power_unit_outlet\x18\x04 \x01(\t\x12;\n\x0ehydra_hostname\x18\x05 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"e\n\x05Servo\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12;\n\x0eservod_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0e\n\x06serial\x18\x03 \x01(\t\"\x15\n\x05Touch\x12\x0c\n\x04mimo\x18\x01 \x01(\x08\"\xe6\x01\n\x04Wifi\x12>\n\x0b\x65nvironment\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Wifi.Environment\x12\x35\n\x07\x61ntenna\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.WifiAntenna\"g\n\x0b\x45nvironment\x12\x1b\n\x17\x45NVIRONMENT_UNSPECIFIED\x10\x00\x12\x0c\n\x08STANDARD\x10\x01\x12\r\n\tWIFI_CELL\x10\x02\x12\t\n\x05\x43HAOS\x10\x03\x12\x13\n\x0fROUTER_802_11AX\x10\x04\"\x95\x01\n\x0bWifiAntenna\x12\x43\n\nconnection\x18\x01 \x01(\x0e\x32/.chromiumos.test.lab.api.WifiAntenna.Connection\"A\n\nConnection\x12\x1a\n\x16\x43ONNECTION_UNSPECIFIED\x10\x00\x12\x0e\n\nCONDUCTIVE\x10\x01\x12\x07\n\x03OTA\x10\x02\"Z\n\rBluetoothPeer\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\x37\n\x05state\x18\x02 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\">\n\nWifiSecret\x12\x0c\n\x04ssid\x18\x01 \x01(\t\x12\x10\n\x08security\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t*\xfb\x01\n\tModemType\x12\x1a\n\x16MODEM_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n\x16MODEM_TYPE_UNSUPPORTED\x10\x08\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7180\x10\x01\x12\x1e\n\x1aMODEM_TYPE_FIBOCOMM_L850GL\x10\x02\x12\x14\n\x10MODEM_TYPE_NL668\x10\x03\x12\x14\n\x10MODEM_TYPE_FM350\x10\x04\x12\x14\n\x10MODEM_TYPE_FM101\x10\x05\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7280\x10\x06\x12\x14\n\x10MODEM_TYPE_EM060\x10\x07*\xf4\x02\n\x0fNetworkProvider\x12\x11\n\rNETWORK_OTHER\x10\x00\x12\x17\n\x13NETWORK_UNSUPPORTED\x10\x05\x12\x10\n\x0cNETWORK_TEST\x10\x01\x12\x0f\n\x0bNETWORK_ATT\x10\x02\x12\x13\n\x0fNETWORK_TMOBILE\x10\x03\x12\x13\n\x0fNETWORK_VERIZON\x10\x04\x12\x12\n\x0eNETWORK_SPRINT\x10\x06\x12\x12\n\x0eNETWORK_DOCOMO\x10\x07\x12\x14\n\x10NETWORK_SOFTBANK\x10\x08\x12\x10\n\x0cNETWORK_KDDI\x10\t\x12\x13\n\x0fNETWORK_RAKUTEN\x10\n\x12\x14\n\x10NETWORK_VODAFONE\x10\x0b\x12\x0e\n\nNETWORK_EE\x10\x0c\x12\x15\n\x11NETWORK_AMARISOFT\x10\r\x12\x11\n\rNETWORK_ROGER\x10\x0e\x12\x10\n\x0cNETWORK_BELL\x10\x0f\x12\x11\n\rNETWORK_TELUS\x10\x10\x12\x0e\n\nNETWORK_FI\x10\x11*=\n\x07SIMType\x12\x0f\n\x0bSIM_UNKNOWN\x10\x00\x12\x10\n\x0cSIM_PHYSICAL\x10\x01\x12\x0f\n\x0bSIM_DIGITAL\x10\x02*`\n\x0fPeripheralState\x12 \n\x1cPERIPHERAL_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07WORKING\x10\x01\x12\n\n\x06\x42ROKEN\x10\x02\x12\x12\n\x0eNOT_APPLICABLE\x10\x03*\xfb\x03\n\x05Phase\x12\x15\n\x11PHASE_UNSPECIFIED\x10\x00\x12\x07\n\x03\x44VT\x10\x01\x12\t\n\x05\x44VT_2\x10\x02\x12\x11\n\rDVT_2_MPS_LTE\x10\x03\x12\x0f\n\x0b\x44VT_BIPSHIP\x10\x04\x12\x0e\n\nDVT_BOOKEM\x10\x05\x12\x0f\n\x0b\x44VT_ELECTRO\x10\x06\x12\r\n\tDVT_LOCKE\x10\x07\x12\x0e\n\nDVT_OSCINO\x10\x08\x12\x0e\n\nDVT_REKS14\x10\t\x12\x14\n\x10\x44VT_REKS14_TOUCH\x10\n\x12\r\n\tDVT_TOUCH\x10\x0b\x12\x07\n\x03\x45VT\x10\x0c\x12\x11\n\rEVT_FLEEX_LTE\x10\r\x12\n\n\x06\x45VT_HQ\x10\x0e\x12\x0b\n\x07\x45VT_LTE\x10\x0f\x12\r\n\tEVT_MAPLE\x10\x10\x12\r\n\tEVT_PUJJO\x10\x11\x12\t\n\x05PROTO\x10\x12\x12\n\n\x06PROTO1\x10\x13\x12\x07\n\x03PVT\x10\x14\x12\x0e\n\nPVT_TERRA3\x10\x15\x12\n\n\x06PVT_US\x10\x16\x12\t\n\x05PVT_2\x10\x17\x12\x0e\n\nPVT_BOOKEM\x10\x18\x12\x0f\n\x0bPVT_ELECTRO\x10\x19\x12\x0e\n\nPVT_GIK360\x10\x1a\x12\x0c\n\x08PVT_LILI\x10\x1b\x12\x0b\n\x07PVT_LTE\x10\x1c\x12\x0f\n\x0bPVT_NEW_CPU\x10\x1d\x12\x0c\n\x08PVT_SAND\x10\x1e\x12\x11\n\rPVT_TUNE_BITS\x10\x1f\x12\x0e\n\nPVT_TELESU\x10 \x12\x06\n\x02SR\x10!B3Z1go.chromium.org/chromiumos/config/go/test/lab/apib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chromiumos/test/lab/api/dut.proto\x12\x17\x63hromiumos.test.lab.api\x1a,chromiumos/config/api/device_config_id.proto\x1a)chromiumos/test/lab/api/ip_endpoint.proto\x1a(chromiumos/test/lab/api/pasit_host.proto\"\xfc\r\n\x03\x44ut\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x39\n\x08\x63hromeos\x18\x02 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.ChromeOSH\x00\x12\x37\n\x07\x61ndroid\x18\x03 \x01(\x0b\x32$.chromiumos.test.lab.api.Dut.AndroidH\x00\x12\x39\n\x08\x64\x65vboard\x18\x05 \x01(\x0b\x32%.chromiumos.test.lab.api.Dut.DevboardH\x00\x12:\n\x0c\x63\x61\x63he_server\x18\x04 \x01(\x0b\x32$.chromiumos.test.lab.api.CacheServer\x12\x38\n\x0bwifi_secret\x18\x06 \x01(\x0b\x32#.chromiumos.test.lab.api.WifiSecret\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\x1a\x8a\x08\n\x08\x43hromeOS\x12?\n\x10\x64\x65vice_config_id\x18\x03 \x01(\x0b\x32%.chromiumos.config.api.DeviceConfigId\x12\x30\n\x03ssh\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x0f \x01(\t\x12\x34\n\tdut_model\x18\x0e \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x12-\n\x05servo\x18\x04 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x35\n\tchameleon\x18\x05 \x01(\x0b\x32\".chromiumos.test.lab.api.Chameleon\x12)\n\x03rpm\x18\x06 \x01(\x0b\x32\x1c.chromiumos.test.lab.api.RPM\x12\x41\n\x10\x65xternal_cameras\x18\x07 \x03(\x0b\x32\'.chromiumos.test.lab.api.ExternalCamera\x12-\n\x05\x61udio\x18\x08 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Audio\x12+\n\x04wifi\x18\t \x01(\x0b\x32\x1d.chromiumos.test.lab.api.Wifi\x12-\n\x05touch\x18\n \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Touch\x12\x35\n\tcamerabox\x18\x0b \x01(\x0b\x32\".chromiumos.test.lab.api.Camerabox\x12.\n\x06\x63\x61\x62les\x18\x0c \x03(\x0b\x32\x1e.chromiumos.test.lab.api.Cable\x12\x33\n\x08\x63\x65llular\x18\r \x01(\x0b\x32!.chromiumos.test.lab.api.Cellular\x12\x16\n\x0ehwid_component\x18\x10 \x03(\t\x12?\n\x0f\x62luetooth_peers\x18\x11 \x03(\x0b\x32&.chromiumos.test.lab.api.BluetoothPeer\x12\x0b\n\x03sku\x18\x12 \x01(\t\x12\x0c\n\x04hwid\x18\x13 \x01(\t\x12-\n\x05phase\x18\x14 \x01(\x0e\x32\x1e.chromiumos.test.lab.api.Phase\x12\x33\n\tsim_infos\x18\x15 \x03(\x0b\x32 .chromiumos.test.lab.api.SIMInfo\x12\x36\n\nmodem_info\x18\x16 \x01(\x0b\x32\".chromiumos.test.lab.api.ModemInfo\x12\x36\n\npasit_host\x18\x17 \x01(\x0b\x32\".chromiumos.test.lab.api.PasitHostJ\x04\x08\x01\x10\x02\x1a\xa6\x01\n\x07\x41ndroid\x12@\n\x13\x61ssociated_hostname\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rserial_number\x18\x03 \x01(\t\x12\x34\n\tdut_model\x18\x04 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModel\x1a\xcb\x01\n\x08\x44\x65vboard\x12\x12\n\nboard_type\x18\x01 \x01(\t\x12\x19\n\x11ultradebug_serial\x18\x02 \x01(\t\x12-\n\x05servo\x18\x03 \x01(\x0b\x32\x1e.chromiumos.test.lab.api.Servo\x12\x1d\n\x15\x66ingerprint_module_id\x18\x04 \x01(\t\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x34\n\tdut_model\x18\x06 \x01(\x0b\x32!.chromiumos.test.lab.api.DutModelB\n\n\x08\x64ut_type\"4\n\x08\x44utModel\x12\x14\n\x0c\x62uild_target\x18\x01 \x01(\t\x12\x12\n\nmodel_name\x18\x02 \x01(\t\"\x8f\x01\n\x0b\x44utTopology\x12\x33\n\x02id\x18\x03 \x01(\x0b\x32\'.chromiumos.test.lab.api.DutTopology.Id\x12*\n\x04\x64uts\x18\x04 \x03(\x0b\x32\x1c.chromiumos.test.lab.api.Dut\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\tJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03\")\n\x05\x41udio\x12\x11\n\taudio_box\x18\x01 \x01(\x08\x12\r\n\x05\x61trus\x18\x02 \x01(\x08\"\x95\x01\n\x05\x43\x61\x62le\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32#.chromiumos.test.lab.api.Cable.Type\"Y\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\r\n\tAUDIOJACK\x10\x01\x12\x0c\n\x08USBAUDIO\x10\x02\x12\x0f\n\x0bUSBPRINTING\x10\x03\x12\r\n\tHDMIAUDIO\x10\x04\"C\n\x0b\x43\x61\x63heServer\x12\x34\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"}\n\tCamerabox\x12\x39\n\x06\x66\x61\x63ing\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Camerabox.Facing\"5\n\x06\x46\x61\x63ing\x12\x16\n\x12\x46\x41\x43ING_UNSPECIFIED\x10\x00\x12\x08\n\x04\x42\x41\x43K\x10\x01\x12\t\n\x05\x46RONT\x10\x02\"\xa3\x01\n\x08\x43\x65llular\x12=\n\toperators\x18\x01 \x03(\x0e\x32*.chromiumos.test.lab.api.Cellular.Operator\x12\x0f\n\x07\x63\x61rrier\x18\x02 \x01(\t\"G\n\x08Operator\x12\x18\n\x14OPERATOR_UNSPECIFIED\x10\x00\x12\x07\n\x03\x41TT\x10\x01\x12\x0b\n\x07VERIZON\x10\x02\x12\x0b\n\x07TMOBILE\x10\x03\"\x8e\x01\n\tModemInfo\x12\x30\n\x04type\x18\x01 \x01(\x0e\x32\".chromiumos.test.lab.api.ModemType\x12\x0c\n\x04imei\x18\x02 \x01(\t\x12\x17\n\x0fsupported_bands\x18\x03 \x01(\t\x12\x11\n\tsim_count\x18\x04 \x01(\x05\x12\x15\n\rmodel_variant\x18\x05 \x01(\t\"\xa9\x01\n\x07SIMInfo\x12\x0f\n\x07slot_id\x18\x01 \x01(\x05\x12.\n\x04type\x18\x02 \x01(\x0e\x32 .chromiumos.test.lab.api.SIMType\x12\x0b\n\x03\x65id\x18\x03 \x01(\t\x12\x11\n\ttest_esim\x18\x04 \x01(\x08\x12=\n\x0cprofile_info\x18\x05 \x03(\x0b\x32\'.chromiumos.test.lab.api.SIMProfileInfo\"\x95\x01\n\x0eSIMProfileInfo\x12\r\n\x05iccid\x18\x01 \x01(\t\x12\x0f\n\x07sim_pin\x18\x02 \x01(\t\x12\x0f\n\x07sim_puk\x18\x03 \x01(\t\x12>\n\x0c\x63\x61rrier_name\x18\x04 \x01(\x0e\x32(.chromiumos.test.lab.api.NetworkProvider\x12\x12\n\nown_number\x18\x05 \x01(\t\"\xac\x03\n\tChameleon\x12\x42\n\x0bperipherals\x18\x01 \x03(\x0e\x32-.chromiumos.test.lab.api.Chameleon.Peripheral\x12\x13\n\x0b\x61udio_board\x18\x02 \x01(\x08\x12\x37\n\x05state\x18\x03 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\x12\x10\n\x08hostname\x18\x04 \x01(\t\x12\x36\n\x05types\x18\x05 \x03(\x0e\x32\'.chromiumos.test.lab.api.Chameleon.Type\"\x94\x01\n\nPeripheral\x12\x1a\n\x16PERIPHERAL_UNSPECIFIED\x10\x00\x12\n\n\x06\x42T_HID\x10\x01\x12\x06\n\x02\x44P\x10\x02\x12\x0b\n\x07\x44P_HDMI\x10\x03\x12\x07\n\x03VGA\x10\x04\x12\x08\n\x04HDMI\x10\x05\x12\x0e\n\nBT_BLE_HID\x10\x06\x12\x10\n\x0c\x42T_A2DP_SINK\x10\x07\x12\x0b\n\x07\x42T_PEER\x10\x08\x12\x07\n\x03RPI\x10\t\",\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x06\n\x02V2\x10\x01\x12\x06\n\x02V3\x10\x02\"\x83\x01\n\x0e\x45xternalCamera\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.test.lab.api.ExternalCamera.Type\"5\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\n\n\x06HUDDLY\x10\x01\x12\x0b\n\x07PTZPRO2\x10\x02\"\xef\x01\n\x03RPM\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12=\n\x10\x66rontend_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12@\n\x13power_unit_hostname\x18\x03 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x19\n\x11power_unit_outlet\x18\x04 \x01(\t\x12;\n\x0ehydra_hostname\x18\x05 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\"e\n\x05Servo\x12\x0f\n\x07present\x18\x01 \x01(\x08\x12;\n\x0eservod_address\x18\x02 \x01(\x0b\x32#.chromiumos.test.lab.api.IpEndpoint\x12\x0e\n\x06serial\x18\x03 \x01(\t\"\x15\n\x05Touch\x12\x0c\n\x04mimo\x18\x01 \x01(\x08\"\xe6\x01\n\x04Wifi\x12>\n\x0b\x65nvironment\x18\x01 \x01(\x0e\x32).chromiumos.test.lab.api.Wifi.Environment\x12\x35\n\x07\x61ntenna\x18\x02 \x01(\x0b\x32$.chromiumos.test.lab.api.WifiAntenna\"g\n\x0b\x45nvironment\x12\x1b\n\x17\x45NVIRONMENT_UNSPECIFIED\x10\x00\x12\x0c\n\x08STANDARD\x10\x01\x12\r\n\tWIFI_CELL\x10\x02\x12\t\n\x05\x43HAOS\x10\x03\x12\x13\n\x0fROUTER_802_11AX\x10\x04\"\x95\x01\n\x0bWifiAntenna\x12\x43\n\nconnection\x18\x01 \x01(\x0e\x32/.chromiumos.test.lab.api.WifiAntenna.Connection\"A\n\nConnection\x12\x1a\n\x16\x43ONNECTION_UNSPECIFIED\x10\x00\x12\x0e\n\nCONDUCTIVE\x10\x01\x12\x07\n\x03OTA\x10\x02\"Z\n\rBluetoothPeer\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\x37\n\x05state\x18\x02 \x01(\x0e\x32(.chromiumos.test.lab.api.PeripheralState\">\n\nWifiSecret\x12\x0c\n\x04ssid\x18\x01 \x01(\t\x12\x10\n\x08security\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t*\xfb\x01\n\tModemType\x12\x1a\n\x16MODEM_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n\x16MODEM_TYPE_UNSUPPORTED\x10\x08\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7180\x10\x01\x12\x1e\n\x1aMODEM_TYPE_FIBOCOMM_L850GL\x10\x02\x12\x14\n\x10MODEM_TYPE_NL668\x10\x03\x12\x14\n\x10MODEM_TYPE_FM350\x10\x04\x12\x14\n\x10MODEM_TYPE_FM101\x10\x05\x12\x1e\n\x1aMODEM_TYPE_QUALCOMM_SC7280\x10\x06\x12\x14\n\x10MODEM_TYPE_EM060\x10\x07*\xf4\x02\n\x0fNetworkProvider\x12\x11\n\rNETWORK_OTHER\x10\x00\x12\x17\n\x13NETWORK_UNSUPPORTED\x10\x05\x12\x10\n\x0cNETWORK_TEST\x10\x01\x12\x0f\n\x0bNETWORK_ATT\x10\x02\x12\x13\n\x0fNETWORK_TMOBILE\x10\x03\x12\x13\n\x0fNETWORK_VERIZON\x10\x04\x12\x12\n\x0eNETWORK_SPRINT\x10\x06\x12\x12\n\x0eNETWORK_DOCOMO\x10\x07\x12\x14\n\x10NETWORK_SOFTBANK\x10\x08\x12\x10\n\x0cNETWORK_KDDI\x10\t\x12\x13\n\x0fNETWORK_RAKUTEN\x10\n\x12\x14\n\x10NETWORK_VODAFONE\x10\x0b\x12\x0e\n\nNETWORK_EE\x10\x0c\x12\x15\n\x11NETWORK_AMARISOFT\x10\r\x12\x11\n\rNETWORK_ROGER\x10\x0e\x12\x10\n\x0cNETWORK_BELL\x10\x0f\x12\x11\n\rNETWORK_TELUS\x10\x10\x12\x0e\n\nNETWORK_FI\x10\x11*=\n\x07SIMType\x12\x0f\n\x0bSIM_UNKNOWN\x10\x00\x12\x10\n\x0cSIM_PHYSICAL\x10\x01\x12\x0f\n\x0bSIM_DIGITAL\x10\x02*`\n\x0fPeripheralState\x12 \n\x1cPERIPHERAL_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07WORKING\x10\x01\x12\n\n\x06\x42ROKEN\x10\x02\x12\x12\n\x0eNOT_APPLICABLE\x10\x03*\xfb\x03\n\x05Phase\x12\x15\n\x11PHASE_UNSPECIFIED\x10\x00\x12\x07\n\x03\x44VT\x10\x01\x12\t\n\x05\x44VT_2\x10\x02\x12\x11\n\rDVT_2_MPS_LTE\x10\x03\x12\x0f\n\x0b\x44VT_BIPSHIP\x10\x04\x12\x0e\n\nDVT_BOOKEM\x10\x05\x12\x0f\n\x0b\x44VT_ELECTRO\x10\x06\x12\r\n\tDVT_LOCKE\x10\x07\x12\x0e\n\nDVT_OSCINO\x10\x08\x12\x0e\n\nDVT_REKS14\x10\t\x12\x14\n\x10\x44VT_REKS14_TOUCH\x10\n\x12\r\n\tDVT_TOUCH\x10\x0b\x12\x07\n\x03\x45VT\x10\x0c\x12\x11\n\rEVT_FLEEX_LTE\x10\r\x12\n\n\x06\x45VT_HQ\x10\x0e\x12\x0b\n\x07\x45VT_LTE\x10\x0f\x12\r\n\tEVT_MAPLE\x10\x10\x12\r\n\tEVT_PUJJO\x10\x11\x12\t\n\x05PROTO\x10\x12\x12\n\n\x06PROTO1\x10\x13\x12\x07\n\x03PVT\x10\x14\x12\x0e\n\nPVT_TERRA3\x10\x15\x12\n\n\x06PVT_US\x10\x16\x12\t\n\x05PVT_2\x10\x17\x12\x0e\n\nPVT_BOOKEM\x10\x18\x12\x0f\n\x0bPVT_ELECTRO\x10\x19\x12\x0e\n\nPVT_GIK360\x10\x1a\x12\x0c\n\x08PVT_LILI\x10\x1b\x12\x0b\n\x07PVT_LTE\x10\x1c\x12\x0f\n\x0bPVT_NEW_CPU\x10\x1d\x12\x0c\n\x08PVT_SAND\x10\x1e\x12\x11\n\rPVT_TUNE_BITS\x10\x1f\x12\x0e\n\nPVT_TELESU\x10 \x12\x06\n\x02SR\x10!B3Z1go.chromium.org/chromiumos/config/go/test/lab/apib\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -24,80 +25,80 @@
 
   DESCRIPTOR._options = None
   DESCRIPTOR._serialized_options = b'Z1go.chromium.org/chromiumos/config/go/test/lab/api'
-  _globals['_MODEMTYPE']._serialized_start=4587
-  _globals['_MODEMTYPE']._serialized_end=4838
-  _globals['_NETWORKPROVIDER']._serialized_start=4841
-  _globals['_NETWORKPROVIDER']._serialized_end=5213
-  _globals['_SIMTYPE']._serialized_start=5215
-  _globals['_SIMTYPE']._serialized_end=5276
-  _globals['_PERIPHERALSTATE']._serialized_start=5278
-  _globals['_PERIPHERALSTATE']._serialized_end=5374
-  _globals['_PHASE']._serialized_start=5377
-  _globals['_PHASE']._serialized_end=5884
-  _globals['_DUT']._serialized_start=152
-  _globals['_DUT']._serialized_end=1884
-  _globals['_DUT_ID']._serialized_start=497
-  _globals['_DUT_ID']._serialized_end=516
-  _globals['_DUT_CHROMEOS']._serialized_start=519
-  _globals['_DUT_CHROMEOS']._serialized_end=1497
-  _globals['_DUT_ANDROID']._serialized_start=1500
-  _globals['_DUT_ANDROID']._serialized_end=1666
-  _globals['_DUT_DEVBOARD']._serialized_start=1669
-  _globals['_DUT_DEVBOARD']._serialized_end=1872
-  _globals['_DUTMODEL']._serialized_start=1886
-  _globals['_DUTMODEL']._serialized_end=1938
-  _globals['_DUTTOPOLOGY']._serialized_start=1941
-  _globals['_DUTTOPOLOGY']._serialized_end=2084
-  _globals['_DUTTOPOLOGY_ID']._serialized_start=497
-  _globals['_DUTTOPOLOGY_ID']._serialized_end=516
-  _globals['_AUDIO']._serialized_start=2086
-  _globals['_AUDIO']._serialized_end=2127
-  _globals['_CABLE']._serialized_start=2130
-  _globals['_CABLE']._serialized_end=2279
-  _globals['_CABLE_TYPE']._serialized_start=2190
-  _globals['_CABLE_TYPE']._serialized_end=2279
-  _globals['_CACHESERVER']._serialized_start=2281
-  _globals['_CACHESERVER']._serialized_end=2348
-  _globals['_CAMERABOX']._serialized_start=2350
-  _globals['_CAMERABOX']._serialized_end=2475
-  _globals['_CAMERABOX_FACING']._serialized_start=2422
-  _globals['_CAMERABOX_FACING']._serialized_end=2475
-  _globals['_CELLULAR']._serialized_start=2478
-  _globals['_CELLULAR']._serialized_end=2641
-  _globals['_CELLULAR_OPERATOR']._serialized_start=2570
-  _globals['_CELLULAR_OPERATOR']._serialized_end=2641
-  _globals['_MODEMINFO']._serialized_start=2644
-  _globals['_MODEMINFO']._serialized_end=2786
-  _globals['_SIMINFO']._serialized_start=2789
-  _globals['_SIMINFO']._serialized_end=2958
-  _globals['_SIMPROFILEINFO']._serialized_start=2961
-  _globals['_SIMPROFILEINFO']._serialized_end=3110
-  _globals['_CHAMELEON']._serialized_start=3113
-  _globals['_CHAMELEON']._serialized_end=3541
-  _globals['_CHAMELEON_PERIPHERAL']._serialized_start=3347
-  _globals['_CHAMELEON_PERIPHERAL']._serialized_end=3495
-  _globals['_CHAMELEON_TYPE']._serialized_start=3497
-  _globals['_CHAMELEON_TYPE']._serialized_end=3541
-  _globals['_EXTERNALCAMERA']._serialized_start=3544
-  _globals['_EXTERNALCAMERA']._serialized_end=3675
-  _globals['_EXTERNALCAMERA_TYPE']._serialized_start=3622
-  _globals['_EXTERNALCAMERA_TYPE']._serialized_end=3675
-  _globals['_RPM']._serialized_start=3678
-  _globals['_RPM']._serialized_end=3917
-  _globals['_SERVO']._serialized_start=3919
-  _globals['_SERVO']._serialized_end=4020
-  _globals['_TOUCH']._serialized_start=4022
-  _globals['_TOUCH']._serialized_end=4043
-  _globals['_WIFI']._serialized_start=4046
-  _globals['_WIFI']._serialized_end=4276
-  _globals['_WIFI_ENVIRONMENT']._serialized_start=4173
-  _globals['_WIFI_ENVIRONMENT']._serialized_end=4276
-  _globals['_WIFIANTENNA']._serialized_start=4279
-  _globals['_WIFIANTENNA']._serialized_end=4428
-  _globals['_WIFIANTENNA_CONNECTION']._serialized_start=4363
-  _globals['_WIFIANTENNA_CONNECTION']._serialized_end=4428
-  _globals['_BLUETOOTHPEER']._serialized_start=4430
-  _globals['_BLUETOOTHPEER']._serialized_end=4520
-  _globals['_WIFISECRET']._serialized_start=4522
-  _globals['_WIFISECRET']._serialized_end=4584
+  _globals['_MODEMTYPE']._serialized_start=4685
+  _globals['_MODEMTYPE']._serialized_end=4936
+  _globals['_NETWORKPROVIDER']._serialized_start=4939
+  _globals['_NETWORKPROVIDER']._serialized_end=5311
+  _globals['_SIMTYPE']._serialized_start=5313
+  _globals['_SIMTYPE']._serialized_end=5374
+  _globals['_PERIPHERALSTATE']._serialized_start=5376
+  _globals['_PERIPHERALSTATE']._serialized_end=5472
+  _globals['_PHASE']._serialized_start=5475
+  _globals['_PHASE']._serialized_end=5982
+  _globals['_DUT']._serialized_start=194
+  _globals['_DUT']._serialized_end=1982
+  _globals['_DUT_ID']._serialized_start=539
+  _globals['_DUT_ID']._serialized_end=558
+  _globals['_DUT_CHROMEOS']._serialized_start=561
+  _globals['_DUT_CHROMEOS']._serialized_end=1595
+  _globals['_DUT_ANDROID']._serialized_start=1598
+  _globals['_DUT_ANDROID']._serialized_end=1764
+  _globals['_DUT_DEVBOARD']._serialized_start=1767
+  _globals['_DUT_DEVBOARD']._serialized_end=1970
+  _globals['_DUTMODEL']._serialized_start=1984
+  _globals['_DUTMODEL']._serialized_end=2036
+  _globals['_DUTTOPOLOGY']._serialized_start=2039
+  _globals['_DUTTOPOLOGY']._serialized_end=2182
+  _globals['_DUTTOPOLOGY_ID']._serialized_start=539
+  _globals['_DUTTOPOLOGY_ID']._serialized_end=558
+  _globals['_AUDIO']._serialized_start=2184
+  _globals['_AUDIO']._serialized_end=2225
+  _globals['_CABLE']._serialized_start=2228
+  _globals['_CABLE']._serialized_end=2377
+  _globals['_CABLE_TYPE']._serialized_start=2288
+  _globals['_CABLE_TYPE']._serialized_end=2377
+  _globals['_CACHESERVER']._serialized_start=2379
+  _globals['_CACHESERVER']._serialized_end=2446
+  _globals['_CAMERABOX']._serialized_start=2448
+  _globals['_CAMERABOX']._serialized_end=2573
+  _globals['_CAMERABOX_FACING']._serialized_start=2520
+  _globals['_CAMERABOX_FACING']._serialized_end=2573
+  _globals['_CELLULAR']._serialized_start=2576
+  _globals['_CELLULAR']._serialized_end=2739
+  _globals['_CELLULAR_OPERATOR']._serialized_start=2668
+  _globals['_CELLULAR_OPERATOR']._serialized_end=2739
+  _globals['_MODEMINFO']._serialized_start=2742
+  _globals['_MODEMINFO']._serialized_end=2884
+  _globals['_SIMINFO']._serialized_start=2887
+  _globals['_SIMINFO']._serialized_end=3056
+  _globals['_SIMPROFILEINFO']._serialized_start=3059
+  _globals['_SIMPROFILEINFO']._serialized_end=3208
+  _globals['_CHAMELEON']._serialized_start=3211
+  _globals['_CHAMELEON']._serialized_end=3639
+  _globals['_CHAMELEON_PERIPHERAL']._serialized_start=3445
+  _globals['_CHAMELEON_PERIPHERAL']._serialized_end=3593
+  _globals['_CHAMELEON_TYPE']._serialized_start=3595
+  _globals['_CHAMELEON_TYPE']._serialized_end=3639
+  _globals['_EXTERNALCAMERA']._serialized_start=3642
+  _globals['_EXTERNALCAMERA']._serialized_end=3773
+  _globals['_EXTERNALCAMERA_TYPE']._serialized_start=3720
+  _globals['_EXTERNALCAMERA_TYPE']._serialized_end=3773
+  _globals['_RPM']._serialized_start=3776
+  _globals['_RPM']._serialized_end=4015
+  _globals['_SERVO']._serialized_start=4017
+  _globals['_SERVO']._serialized_end=4118
+  _globals['_TOUCH']._serialized_start=4120
+  _globals['_TOUCH']._serialized_end=4141
+  _globals['_WIFI']._serialized_start=4144
+  _globals['_WIFI']._serialized_end=4374
+  _globals['_WIFI_ENVIRONMENT']._serialized_start=4271
+  _globals['_WIFI_ENVIRONMENT']._serialized_end=4374
+  _globals['_WIFIANTENNA']._serialized_start=4377
+  _globals['_WIFIANTENNA']._serialized_end=4526
+  _globals['_WIFIANTENNA_CONNECTION']._serialized_start=4461
+  _globals['_WIFIANTENNA_CONNECTION']._serialized_end=4526
+  _globals['_BLUETOOTHPEER']._serialized_start=4528
+  _globals['_BLUETOOTHPEER']._serialized_end=4618
+  _globals['_WIFISECRET']._serialized_start=4620
+  _globals['_WIFISECRET']._serialized_end=4682
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/chromiumos/test/lab/api/pasit_host_pb2.py b/api/gen_sdk/chromiumos/test/lab/api/pasit_host_pb2.py
new file mode 100644
index 0000000..2e36ecc
--- /dev/null
+++ b/api/gen_sdk/chromiumos/test/lab/api/pasit_host_pb2.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: chromiumos/test/lab/api/pasit_host.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(chromiumos/test/lab/api/pasit_host.proto\x12\x17\x63hromiumos.test.lab.api\"\x93\x05\n\tPasitHost\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12:\n\x07\x64\x65vices\x18\x02 \x03(\x0b\x32).chromiumos.test.lab.api.PasitHost.Device\x12\x42\n\x0b\x63onnections\x18\x03 \x03(\x0b\x32-.chromiumos.test.lab.api.PasitHost.Connection\x1a\x63\n\nConnection\x12\x13\n\x0bparent_port\x18\x01 \x01(\t\x12\x11\n\tparent_id\x18\x02 \x01(\t\x12\x10\n\x08\x63hild_id\x18\x03 \x01(\t\x12\r\n\x05speed\x18\x04 \x01(\x02\x12\x0c\n\x04type\x18\x05 \x01(\t\x1a\x8e\x03\n\x06\x44\x65vice\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05model\x18\x02 \x01(\t\x12<\n\x04type\x18\x03 \x01(\x0e\x32..chromiumos.test.lab.api.PasitHost.Device.Type\x12K\n\x0cpower_supply\x18\x04 \x01(\x0b\x32\x35.chromiumos.test.lab.api.PasitHost.Device.PowerSupply\x1a>\n\x0bPowerSupply\x12\x0f\n\x07\x63urrent\x18\x01 \x01(\x02\x12\x0f\n\x07voltage\x18\x02 \x01(\x02\x12\r\n\x05power\x18\x03 \x01(\x02\"\x9d\x01\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03\x44UT\x10\x01\x12\x12\n\x0eSWITCH_FIXTURE\x10\x02\x12\x13\n\x0f\x44OCKING_STATION\x10\x03\x12\x0b\n\x07MONITOR\x10\x04\x12\n\n\x06\x43\x41MERA\x10\x05\x12\x0b\n\x07STORAGE\x10\x06\x12\x07\n\x03HID\x10\x07\x12\x0b\n\x07NETWORK\x10\x08\x12\r\n\tHEADPHONE\x10\t\x12\x0b\n\x07SPEAKER\x10\nB3Z1go.chromium.org/chromiumos/config/go/test/lab/apib\x06proto3')
+
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.test.lab.api.pasit_host_pb2', _globals)
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  DESCRIPTOR._serialized_options = b'Z1go.chromium.org/chromiumos/config/go/test/lab/api'
+  _globals['_PASITHOST']._serialized_start=70
+  _globals['_PASITHOST']._serialized_end=729
+  _globals['_PASITHOST_CONNECTION']._serialized_start=229
+  _globals['_PASITHOST_CONNECTION']._serialized_end=328
+  _globals['_PASITHOST_DEVICE']._serialized_start=331
+  _globals['_PASITHOST_DEVICE']._serialized_end=729
+  _globals['_PASITHOST_DEVICE_POWERSUPPLY']._serialized_start=507
+  _globals['_PASITHOST_DEVICE_POWERSUPPLY']._serialized_end=569
+  _globals['_PASITHOST_DEVICE_TYPE']._serialized_start=572
+  _globals['_PASITHOST_DEVICE_TYPE']._serialized_end=729
+# @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/test_platform/common/cft_steps_config_pb2.py b/api/gen_sdk/test_platform/common/cft_steps_config_pb2.py
index fc68565..efe5969 100644
--- a/api/gen_sdk/test_platform/common/cft_steps_config_pb2.py
+++ b/api/gen_sdk/test_platform/common/cft_steps_config_pb2.py
@@ -13,7 +13,7 @@
 
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+test_platform/common/cft_steps_config.proto\x12\x14test_platform.common\"]\n\x0e\x43\x66tStepsConfig\x12<\n\x0ehw_test_config\x18\x01 \x01(\x0b\x32\".test_platform.common.HwTestConfigH\x00\x42\r\n\x0b\x63onfig_type\"\x93\x02\n\x0cHwTestConfig\x12!\n\x19skip_loading_dut_topology\x18\x01 \x01(\x08\x12!\n\x19skip_starting_dut_service\x18\x02 \x01(\x08\x12\x16\n\x0eskip_provision\x18\x03 \x01(\x08\x12\x1b\n\x13skip_test_execution\x18\x04 \x01(\x08\x12\x1f\n\x17skip_all_result_publish\x18\x05 \x01(\x08\x12\x18\n\x10skip_gcs_publish\x18\x06 \x01(\x08\x12\x18\n\x10skip_rdb_publish\x18\x07 \x01(\x08\x12\x18\n\x10skip_tko_publish\x18\x08 \x01(\x08\x12\x19\n\x11run_cpcon_publish\x18\t \x01(\x08\x42@Z>go.chromium.org/chromiumos/infra/proto/go/test_platform/commonb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+test_platform/common/cft_steps_config.proto\x12\x14test_platform.common\"]\n\x0e\x43\x66tStepsConfig\x12<\n\x0ehw_test_config\x18\x01 \x01(\x0b\x32\".test_platform.common.HwTestConfigH\x00\x42\r\n\x0b\x63onfig_type\"\xae\x02\n\x0cHwTestConfig\x12!\n\x19skip_loading_dut_topology\x18\x01 \x01(\x08\x12!\n\x19skip_starting_dut_service\x18\x02 \x01(\x08\x12\x16\n\x0eskip_provision\x18\x03 \x01(\x08\x12\x1b\n\x13skip_test_execution\x18\x04 \x01(\x08\x12\x1f\n\x17skip_all_result_publish\x18\x05 \x01(\x08\x12\x18\n\x10skip_gcs_publish\x18\x06 \x01(\x08\x12\x18\n\x10skip_rdb_publish\x18\x07 \x01(\x08\x12\x18\n\x10skip_tko_publish\x18\x08 \x01(\x08\x12\x19\n\x11run_cpcon_publish\x18\t \x01(\x08\x12\x19\n\x11skip_post_process\x18\n \x01(\x08\x42@Z>go.chromium.org/chromiumos/infra/proto/go/test_platform/commonb\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -25,5 +25,5 @@
   _globals['_CFTSTEPSCONFIG']._serialized_start=69
   _globals['_CFTSTEPSCONFIG']._serialized_end=162
   _globals['_HWTESTCONFIG']._serialized_start=165
-  _globals['_HWTESTCONFIG']._serialized_end=440
+  _globals['_HWTESTCONFIG']._serialized_end=467
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/test_platform/request_pb2.py b/api/gen_sdk/test_platform/request_pb2.py
index f235cc4..3997f96 100644
--- a/api/gen_sdk/test_platform/request_pb2.py
+++ b/api/gen_sdk/test_platform/request_pb2.py
@@ -21,7 +21,7 @@
 from chromite.api.gen_sdk.test_platform.common import cft_steps_config_pb2 as test__platform_dot_common_dot_cft__steps__config__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btest_platform/request.proto\x12\rtest_platform\x1a chromite/api/test_metadata.proto\x1a\x17\x63hromiumos/common.proto\x1a$chromiumos/test/api/test_suite.proto\x1a\x31\x63hromiumos/test/api/test_execution_metadata.proto\x1a\x1e\x63hromiumos/test/api/ctp2.proto\x1a\x1egoogle/protobuf/duration.proto\x1a#test_platform/execution/param.proto\x1a+test_platform/common/cft_steps_config.proto\"\xfe\"\n\x07Request\x12-\n\x06params\x18\x01 \x01(\x0b\x32\x1d.test_platform.Request.Params\x12\x32\n\ttest_plan\x18\x05 \x01(\x0b\x32\x1f.test_platform.Request.TestPlan\x1a\xb1\x1a\n\x06Params\x12M\n\x13hardware_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12M\n\x13software_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13\x66reeform_attributes\x18\t \x01(\x0b\x32\x30.test_platform.Request.Params.FreeformAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x12H\n\x11secondary_devices\x18\x0e \x03(\x0b\x32-.test_platform.Request.Params.SecondaryDevice\x12<\n\nscheduling\x18\x04 \x01(\x0b\x32(.test_platform.Request.Params.Scheduling\x12\x32\n\x05retry\x18\x05 \x01(\x0b\x32#.test_platform.Request.Params.Retry\x12\x38\n\x08metadata\x18\x06 \x01(\x0b\x32&.test_platform.Request.Params.Metadata\x12\x30\n\x04time\x18\x07 \x01(\x0b\x32\".test_platform.Request.Params.Time\x12>\n\x0b\x64\x65\x63orations\x18\x08 \x01(\x0b\x32).test_platform.Request.Params.Decorations\x12<\n\nmigrations\x18\x0c \x01(\x0b\x32(.test_platform.Request.Params.Migrations\x12\x37\n\x0f\x65xecution_param\x18\r \x01(\x0b\x32\x1e.test_platform.execution.Param\x12T\n\x17test_execution_behavior\x18\x0f \x01(\x0e\x32\x33.test_platform.Request.Params.TestExecutionBehavior\x12\x13\n\x0brun_via_cft\x18\x10 \x01(\x08\x12\x1d\n\x15schedule_via_scheduke\x18\x11 \x01(\x08\x12\x14\n\x0crun_via_trv2\x18\x12 \x01(\x08\x12?\n\x11trv2_steps_config\x18\x13 \x01(\x0b\x32$.test_platform.common.CftStepsConfig\x12\x11\n\tddd_suite\x18\x14 \x01(\x08\x12\x42\n\x07results\x18\x15 \x01(\x0b\x32\x31.test_platform.Request.Params.ResultsUploadConfig\x12\x1e\n\x16translate_trv2_request\x18\x16 \x01(\x08\x12<\n\x14user_defined_filters\x18\x17 \x03(\x0b\x32\x1e.chromiumos.test.api.CTPFilter\x1a\x42\n\x12HardwareAttributes\x12\r\n\x05model\x18\x01 \x01(\t\x12\x1d\n\x15require_stable_device\x18\x02 \x01(\x08\x1a\x43\n\x12SoftwareAttributes\x12-\n\x0c\x62uild_target\x18\x02 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x1a\x31\n\x12\x46reeformAttributes\x12\x1b\n\x13swarming_dimensions\x18\x01 \x03(\t\x1a\xac\x02\n\x12SoftwareDependency\x12\x18\n\x0e\x63hromeos_build\x18\x03 \x01(\tH\x00\x12#\n\x19\x63hromeos_build_gcs_bucket\x18\x07 \x01(\tH\x00\x12\x1b\n\x11ro_firmware_build\x18\x04 \x01(\tH\x00\x12\x1b\n\x11rw_firmware_build\x18\x05 \x01(\tH\x00\x12\x1e\n\x14\x65\x63_ro_firmware_build\x18\n \x01(\tH\x00\x12\x1e\n\x14\x65\x63_rw_firmware_build\x18\x0b \x01(\tH\x00\x12\x19\n\x0flacros_gcs_path\x18\x06 \x01(\tH\x00\x12\x1f\n\x15\x61ndroid_image_version\x18\x08 \x01(\tH\x00\x12\x1a\n\x10gms_core_package\x18\t \x01(\tH\x00\x42\x05\n\x03\x64\x65p\x1a\x80\x02\n\x0fSecondaryDevice\x12M\n\x13software_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13hardware_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x1a\x9e\x03\n\nScheduling\x12L\n\x0cmanaged_pool\x18\x01 \x01(\x0e\x32\x34.test_platform.Request.Params.Scheduling.ManagedPoolH\x00\x12\x18\n\x0eunmanaged_pool\x18\x02 \x01(\tH\x00\x12\x10\n\x08priority\x18\x04 \x01(\x03\x12\x12\n\nqs_account\x18\x05 \x01(\t\"\xf9\x01\n\x0bManagedPool\x12\x1c\n\x18MANAGED_POOL_UNSPECIFIED\x10\x00\x12\x13\n\x0fMANAGED_POOL_CQ\x10\x01\x12\x14\n\x10MANAGED_POOL_BVT\x10\x02\x12\x17\n\x13MANAGED_POOL_SUITES\x10\x03\x12\x14\n\x10MANAGED_POOL_CTS\x10\x04\x12\x1d\n\x19MANAGED_POOL_CTS_PERBUILD\x10\x05\x12\x1b\n\x17MANAGED_POOL_CONTINUOUS\x10\x06\x12\x1e\n\x1aMANAGED_POOL_ARC_PRESUBMIT\x10\x07\x12\x16\n\x12MANAGED_POOL_QUOTA\x10\x08\x42\x06\n\x04pool\x1a#\n\x05Retry\x12\r\n\x05\x61llow\x18\x01 \x01(\x08\x12\x0b\n\x03max\x18\x02 \x01(\x05\x1ah\n\x08Metadata\x12\x19\n\x11test_metadata_url\x18\x01 \x01(\t\x12!\n\x19\x64\x65\x62ug_symbols_archive_url\x18\x02 \x01(\t\x12\x1e\n\x16\x63ontainer_metadata_url\x18\x03 \x01(\t\x1a;\n\x04Time\x12\x33\n\x10maximum_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\xaa\x02\n\x0b\x44\x65\x63orations\x12X\n\x10\x61utotest_keyvals\x18\x01 \x03(\x0b\x32>.test_platform.Request.Params.Decorations.AutotestKeyvalsEntry\x12\x0c\n\x04tags\x18\x02 \x03(\t\x12J\n\ttest_args\x18\x03 \x03(\x0b\x32\x37.test_platform.Request.Params.Decorations.TestArgsEntry\x1a\x36\n\x14\x41utotestKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\nMigrationsJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04R\x0fuse_test_runnerR\x1a\x65nable_synchronous_offloadR\x18notificationless_offload\x1a\x8e\x02\n\x13ResultsUploadConfig\x12[\n\x04mode\x18\x01 \x01(\x0e\x32M.test_platform.Request.Params.ResultsUploadConfig.TestResultsUploadVisibility\"\x99\x01\n\x1bTestResultsUploadVisibility\x12\'\n#TEST_RESULTS_VISIBILITY_UNSPECIFIED\x10\x00\x12\'\n#TEST_RESULTS_VISIBILITY_BOARD_MODEL\x10\x01\x12(\n$TEST_RESULTS_VISIBILITY_CUSTOM_REALM\x10\x02\"Q\n\x15TestExecutionBehavior\x12\x18\n\x14\x42\x45HAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x01\x12\x10\n\x0cNON_CRITICAL\x10\x02J\x04\x08\x0b\x10\x0cJ\x04\x08\n\x10\x0bR\rnotificationsR\x06legacy\x1a\x14\n\x03Tag\x12\r\n\x05value\x18\x01 \x01(\t\x1a;\n\x05Suite\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x04 \x01(\tJ\x04\x08\x02\x10\x03R\x0brun_via_cft\x1a\x8e\x01\n\x04Test\x12\x38\n\x08\x61utotest\x18\x01 \x01(\x0b\x32$.test_platform.Request.Test.AutotestH\x00\x1a\x41\n\x08\x41utotest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\tB\t\n\x07harness\x1a\xe4\x02\n\x0b\x45numeration\x12S\n\x14\x61utotest_invocations\x18\x02 \x03(\x0b\x32\x35.test_platform.Request.Enumeration.AutotestInvocation\x1a\xff\x01\n\x12\x41utotestInvocation\x12(\n\x04test\x18\x01 \x01(\x0b\x32\x1a.chromite.api.AutotestTest\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12`\n\x0eresult_keyvals\x18\x04 \x03(\x0b\x32H.test_platform.Request.Enumeration.AutotestInvocation.ResultKeyvalsEntry\x1a\x34\n\x12ResultKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x84\x03\n\x08TestPlan\x12+\n\x05suite\x18\x01 \x03(\x0b\x32\x1c.test_platform.Request.Suite\x12)\n\x04test\x18\x02 \x03(\x0b\x32\x1b.test_platform.Request.Test\x12\x37\n\x0b\x65numeration\x18\x03 \x01(\x0b\x32\".test_platform.Request.Enumeration\x12H\n\x0ctag_criteria\x18\x04 \x01(\x0b\x32\x32.chromiumos.test.api.TestSuite.TestCaseTagCriteria\x12\x0c\n\x04seed\x18\x05 \x01(\x03\x12\x41\n\ttest_args\x18\x06 \x01(\x0b\x32..chromiumos.test.api.AutotestExecutionMetadata\x12\x14\n\x0ctotal_shards\x18\x07 \x01(\x03\x12\x14\n\x0cmax_in_shard\x18\x08 \x01(\x03\x12 \n\x18\x65nable_autotest_sharding\x18\t \x01(\x08J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\x42\x39Z7go.chromium.org/chromiumos/infra/proto/go/test_platformb\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btest_platform/request.proto\x12\rtest_platform\x1a chromite/api/test_metadata.proto\x1a\x17\x63hromiumos/common.proto\x1a$chromiumos/test/api/test_suite.proto\x1a\x31\x63hromiumos/test/api/test_execution_metadata.proto\x1a\x1e\x63hromiumos/test/api/ctp2.proto\x1a\x1egoogle/protobuf/duration.proto\x1a#test_platform/execution/param.proto\x1a+test_platform/common/cft_steps_config.proto\"\x99#\n\x07Request\x12-\n\x06params\x18\x01 \x01(\x0b\x32\x1d.test_platform.Request.Params\x12\x32\n\ttest_plan\x18\x05 \x01(\x0b\x32\x1f.test_platform.Request.TestPlan\x1a\xcc\x1a\n\x06Params\x12M\n\x13hardware_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12M\n\x13software_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13\x66reeform_attributes\x18\t \x01(\x0b\x32\x30.test_platform.Request.Params.FreeformAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x12H\n\x11secondary_devices\x18\x0e \x03(\x0b\x32-.test_platform.Request.Params.SecondaryDevice\x12<\n\nscheduling\x18\x04 \x01(\x0b\x32(.test_platform.Request.Params.Scheduling\x12\x32\n\x05retry\x18\x05 \x01(\x0b\x32#.test_platform.Request.Params.Retry\x12\x38\n\x08metadata\x18\x06 \x01(\x0b\x32&.test_platform.Request.Params.Metadata\x12\x30\n\x04time\x18\x07 \x01(\x0b\x32\".test_platform.Request.Params.Time\x12>\n\x0b\x64\x65\x63orations\x18\x08 \x01(\x0b\x32).test_platform.Request.Params.Decorations\x12<\n\nmigrations\x18\x0c \x01(\x0b\x32(.test_platform.Request.Params.Migrations\x12\x37\n\x0f\x65xecution_param\x18\r \x01(\x0b\x32\x1e.test_platform.execution.Param\x12T\n\x17test_execution_behavior\x18\x0f \x01(\x0e\x32\x33.test_platform.Request.Params.TestExecutionBehavior\x12\x13\n\x0brun_via_cft\x18\x10 \x01(\x08\x12\x1d\n\x15schedule_via_scheduke\x18\x11 \x01(\x08\x12\x14\n\x0crun_via_trv2\x18\x12 \x01(\x08\x12?\n\x11trv2_steps_config\x18\x13 \x01(\x0b\x32$.test_platform.common.CftStepsConfig\x12\x11\n\tddd_suite\x18\x14 \x01(\x08\x12\x42\n\x07results\x18\x15 \x01(\x0b\x32\x31.test_platform.Request.Params.ResultsUploadConfig\x12\x1e\n\x16translate_trv2_request\x18\x16 \x01(\x08\x12<\n\x14user_defined_filters\x18\x17 \x03(\x0b\x32\x1e.chromiumos.test.api.CTPFilter\x12\x19\n\x11run_ctpv2_with_qs\x18\x18 \x01(\x08\x1a\x42\n\x12HardwareAttributes\x12\r\n\x05model\x18\x01 \x01(\t\x12\x1d\n\x15require_stable_device\x18\x02 \x01(\x08\x1a\x43\n\x12SoftwareAttributes\x12-\n\x0c\x62uild_target\x18\x02 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x1a\x31\n\x12\x46reeformAttributes\x12\x1b\n\x13swarming_dimensions\x18\x01 \x03(\t\x1a\xac\x02\n\x12SoftwareDependency\x12\x18\n\x0e\x63hromeos_build\x18\x03 \x01(\tH\x00\x12#\n\x19\x63hromeos_build_gcs_bucket\x18\x07 \x01(\tH\x00\x12\x1b\n\x11ro_firmware_build\x18\x04 \x01(\tH\x00\x12\x1b\n\x11rw_firmware_build\x18\x05 \x01(\tH\x00\x12\x1e\n\x14\x65\x63_ro_firmware_build\x18\n \x01(\tH\x00\x12\x1e\n\x14\x65\x63_rw_firmware_build\x18\x0b \x01(\tH\x00\x12\x19\n\x0flacros_gcs_path\x18\x06 \x01(\tH\x00\x12\x1f\n\x15\x61ndroid_image_version\x18\x08 \x01(\tH\x00\x12\x1a\n\x10gms_core_package\x18\t \x01(\tH\x00\x42\x05\n\x03\x64\x65p\x1a\x80\x02\n\x0fSecondaryDevice\x12M\n\x13software_attributes\x18\x01 \x01(\x0b\x32\x30.test_platform.Request.Params.SoftwareAttributes\x12M\n\x13hardware_attributes\x18\x02 \x01(\x0b\x32\x30.test_platform.Request.Params.HardwareAttributes\x12O\n\x15software_dependencies\x18\x03 \x03(\x0b\x32\x30.test_platform.Request.Params.SoftwareDependency\x1a\x9e\x03\n\nScheduling\x12L\n\x0cmanaged_pool\x18\x01 \x01(\x0e\x32\x34.test_platform.Request.Params.Scheduling.ManagedPoolH\x00\x12\x18\n\x0eunmanaged_pool\x18\x02 \x01(\tH\x00\x12\x10\n\x08priority\x18\x04 \x01(\x03\x12\x12\n\nqs_account\x18\x05 \x01(\t\"\xf9\x01\n\x0bManagedPool\x12\x1c\n\x18MANAGED_POOL_UNSPECIFIED\x10\x00\x12\x13\n\x0fMANAGED_POOL_CQ\x10\x01\x12\x14\n\x10MANAGED_POOL_BVT\x10\x02\x12\x17\n\x13MANAGED_POOL_SUITES\x10\x03\x12\x14\n\x10MANAGED_POOL_CTS\x10\x04\x12\x1d\n\x19MANAGED_POOL_CTS_PERBUILD\x10\x05\x12\x1b\n\x17MANAGED_POOL_CONTINUOUS\x10\x06\x12\x1e\n\x1aMANAGED_POOL_ARC_PRESUBMIT\x10\x07\x12\x16\n\x12MANAGED_POOL_QUOTA\x10\x08\x42\x06\n\x04pool\x1a#\n\x05Retry\x12\r\n\x05\x61llow\x18\x01 \x01(\x08\x12\x0b\n\x03max\x18\x02 \x01(\x05\x1ah\n\x08Metadata\x12\x19\n\x11test_metadata_url\x18\x01 \x01(\t\x12!\n\x19\x64\x65\x62ug_symbols_archive_url\x18\x02 \x01(\t\x12\x1e\n\x16\x63ontainer_metadata_url\x18\x03 \x01(\t\x1a;\n\x04Time\x12\x33\n\x10maximum_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\xaa\x02\n\x0b\x44\x65\x63orations\x12X\n\x10\x61utotest_keyvals\x18\x01 \x03(\x0b\x32>.test_platform.Request.Params.Decorations.AutotestKeyvalsEntry\x12\x0c\n\x04tags\x18\x02 \x03(\t\x12J\n\ttest_args\x18\x03 \x03(\x0b\x32\x37.test_platform.Request.Params.Decorations.TestArgsEntry\x1a\x36\n\x14\x41utotestKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rTestArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x65\n\nMigrationsJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04R\x0fuse_test_runnerR\x1a\x65nable_synchronous_offloadR\x18notificationless_offload\x1a\x8e\x02\n\x13ResultsUploadConfig\x12[\n\x04mode\x18\x01 \x01(\x0e\x32M.test_platform.Request.Params.ResultsUploadConfig.TestResultsUploadVisibility\"\x99\x01\n\x1bTestResultsUploadVisibility\x12\'\n#TEST_RESULTS_VISIBILITY_UNSPECIFIED\x10\x00\x12\'\n#TEST_RESULTS_VISIBILITY_BOARD_MODEL\x10\x01\x12(\n$TEST_RESULTS_VISIBILITY_CUSTOM_REALM\x10\x02\"Q\n\x15TestExecutionBehavior\x12\x18\n\x14\x42\x45HAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x01\x12\x10\n\x0cNON_CRITICAL\x10\x02J\x04\x08\x0b\x10\x0cJ\x04\x08\n\x10\x0bR\rnotificationsR\x06legacy\x1a\x14\n\x03Tag\x12\r\n\x05value\x18\x01 \x01(\t\x1a;\n\x05Suite\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x04 \x01(\tJ\x04\x08\x02\x10\x03R\x0brun_via_cft\x1a\x8e\x01\n\x04Test\x12\x38\n\x08\x61utotest\x18\x01 \x01(\x0b\x32$.test_platform.Request.Test.AutotestH\x00\x1a\x41\n\x08\x41utotest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\tB\t\n\x07harness\x1a\xe4\x02\n\x0b\x45numeration\x12S\n\x14\x61utotest_invocations\x18\x02 \x03(\x0b\x32\x35.test_platform.Request.Enumeration.AutotestInvocation\x1a\xff\x01\n\x12\x41utotestInvocation\x12(\n\x04test\x18\x01 \x01(\x0b\x32\x1a.chromite.api.AutotestTest\x12\x11\n\ttest_args\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12`\n\x0eresult_keyvals\x18\x04 \x03(\x0b\x32H.test_platform.Request.Enumeration.AutotestInvocation.ResultKeyvalsEntry\x1a\x34\n\x12ResultKeyvalsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x84\x03\n\x08TestPlan\x12+\n\x05suite\x18\x01 \x03(\x0b\x32\x1c.test_platform.Request.Suite\x12)\n\x04test\x18\x02 \x03(\x0b\x32\x1b.test_platform.Request.Test\x12\x37\n\x0b\x65numeration\x18\x03 \x01(\x0b\x32\".test_platform.Request.Enumeration\x12H\n\x0ctag_criteria\x18\x04 \x01(\x0b\x32\x32.chromiumos.test.api.TestSuite.TestCaseTagCriteria\x12\x0c\n\x04seed\x18\x05 \x01(\x03\x12\x41\n\ttest_args\x18\x06 \x01(\x0b\x32..chromiumos.test.api.AutotestExecutionMetadata\x12\x14\n\x0ctotal_shards\x18\x07 \x01(\x03\x12\x14\n\x0cmax_in_shard\x18\x08 \x01(\x03\x12 \n\x18\x65nable_autotest_sharding\x18\t \x01(\x08J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\x42\x39Z7go.chromium.org/chromiumos/infra/proto/go/test_platformb\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -37,57 +37,57 @@
   _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._options = None
   _REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY._serialized_options = b'8\001'
   _globals['_REQUEST']._serialized_start=341
-  _globals['_REQUEST']._serialized_end=4819
+  _globals['_REQUEST']._serialized_end=4846
   _globals['_REQUEST_PARAMS']._serialized_start=452
-  _globals['_REQUEST_PARAMS']._serialized_end=3829
-  _globals['_REQUEST_PARAMS_HARDWAREATTRIBUTES']._serialized_start=1665
-  _globals['_REQUEST_PARAMS_HARDWAREATTRIBUTES']._serialized_end=1731
-  _globals['_REQUEST_PARAMS_SOFTWAREATTRIBUTES']._serialized_start=1733
-  _globals['_REQUEST_PARAMS_SOFTWAREATTRIBUTES']._serialized_end=1800
-  _globals['_REQUEST_PARAMS_FREEFORMATTRIBUTES']._serialized_start=1802
-  _globals['_REQUEST_PARAMS_FREEFORMATTRIBUTES']._serialized_end=1851
-  _globals['_REQUEST_PARAMS_SOFTWAREDEPENDENCY']._serialized_start=1854
-  _globals['_REQUEST_PARAMS_SOFTWAREDEPENDENCY']._serialized_end=2154
-  _globals['_REQUEST_PARAMS_SECONDARYDEVICE']._serialized_start=2157
-  _globals['_REQUEST_PARAMS_SECONDARYDEVICE']._serialized_end=2413
-  _globals['_REQUEST_PARAMS_SCHEDULING']._serialized_start=2416
-  _globals['_REQUEST_PARAMS_SCHEDULING']._serialized_end=2830
-  _globals['_REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL']._serialized_start=2573
-  _globals['_REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL']._serialized_end=2822
-  _globals['_REQUEST_PARAMS_RETRY']._serialized_start=2832
-  _globals['_REQUEST_PARAMS_RETRY']._serialized_end=2867
-  _globals['_REQUEST_PARAMS_METADATA']._serialized_start=2869
-  _globals['_REQUEST_PARAMS_METADATA']._serialized_end=2973
-  _globals['_REQUEST_PARAMS_TIME']._serialized_start=2975
-  _globals['_REQUEST_PARAMS_TIME']._serialized_end=3034
-  _globals['_REQUEST_PARAMS_DECORATIONS']._serialized_start=3037
-  _globals['_REQUEST_PARAMS_DECORATIONS']._serialized_end=3335
-  _globals['_REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY']._serialized_start=3232
-  _globals['_REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY']._serialized_end=3286
-  _globals['_REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY']._serialized_start=3288
-  _globals['_REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY']._serialized_end=3335
-  _globals['_REQUEST_PARAMS_MIGRATIONS']._serialized_start=3337
-  _globals['_REQUEST_PARAMS_MIGRATIONS']._serialized_end=3438
-  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG']._serialized_start=3441
-  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG']._serialized_end=3711
-  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY']._serialized_start=3558
-  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY']._serialized_end=3711
-  _globals['_REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR']._serialized_start=3713
-  _globals['_REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR']._serialized_end=3794
-  _globals['_REQUEST_TAG']._serialized_start=3831
-  _globals['_REQUEST_TAG']._serialized_end=3851
-  _globals['_REQUEST_SUITE']._serialized_start=3853
-  _globals['_REQUEST_SUITE']._serialized_end=3912
-  _globals['_REQUEST_TEST']._serialized_start=3915
-  _globals['_REQUEST_TEST']._serialized_end=4057
-  _globals['_REQUEST_TEST_AUTOTEST']._serialized_start=3981
-  _globals['_REQUEST_TEST_AUTOTEST']._serialized_end=4046
-  _globals['_REQUEST_ENUMERATION']._serialized_start=4060
-  _globals['_REQUEST_ENUMERATION']._serialized_end=4416
-  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION']._serialized_start=4161
-  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION']._serialized_end=4416
-  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY']._serialized_start=4364
-  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY']._serialized_end=4416
-  _globals['_REQUEST_TESTPLAN']._serialized_start=4419
-  _globals['_REQUEST_TESTPLAN']._serialized_end=4807
+  _globals['_REQUEST_PARAMS']._serialized_end=3856
+  _globals['_REQUEST_PARAMS_HARDWAREATTRIBUTES']._serialized_start=1692
+  _globals['_REQUEST_PARAMS_HARDWAREATTRIBUTES']._serialized_end=1758
+  _globals['_REQUEST_PARAMS_SOFTWAREATTRIBUTES']._serialized_start=1760
+  _globals['_REQUEST_PARAMS_SOFTWAREATTRIBUTES']._serialized_end=1827
+  _globals['_REQUEST_PARAMS_FREEFORMATTRIBUTES']._serialized_start=1829
+  _globals['_REQUEST_PARAMS_FREEFORMATTRIBUTES']._serialized_end=1878
+  _globals['_REQUEST_PARAMS_SOFTWAREDEPENDENCY']._serialized_start=1881
+  _globals['_REQUEST_PARAMS_SOFTWAREDEPENDENCY']._serialized_end=2181
+  _globals['_REQUEST_PARAMS_SECONDARYDEVICE']._serialized_start=2184
+  _globals['_REQUEST_PARAMS_SECONDARYDEVICE']._serialized_end=2440
+  _globals['_REQUEST_PARAMS_SCHEDULING']._serialized_start=2443
+  _globals['_REQUEST_PARAMS_SCHEDULING']._serialized_end=2857
+  _globals['_REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL']._serialized_start=2600
+  _globals['_REQUEST_PARAMS_SCHEDULING_MANAGEDPOOL']._serialized_end=2849
+  _globals['_REQUEST_PARAMS_RETRY']._serialized_start=2859
+  _globals['_REQUEST_PARAMS_RETRY']._serialized_end=2894
+  _globals['_REQUEST_PARAMS_METADATA']._serialized_start=2896
+  _globals['_REQUEST_PARAMS_METADATA']._serialized_end=3000
+  _globals['_REQUEST_PARAMS_TIME']._serialized_start=3002
+  _globals['_REQUEST_PARAMS_TIME']._serialized_end=3061
+  _globals['_REQUEST_PARAMS_DECORATIONS']._serialized_start=3064
+  _globals['_REQUEST_PARAMS_DECORATIONS']._serialized_end=3362
+  _globals['_REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY']._serialized_start=3259
+  _globals['_REQUEST_PARAMS_DECORATIONS_AUTOTESTKEYVALSENTRY']._serialized_end=3313
+  _globals['_REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY']._serialized_start=3315
+  _globals['_REQUEST_PARAMS_DECORATIONS_TESTARGSENTRY']._serialized_end=3362
+  _globals['_REQUEST_PARAMS_MIGRATIONS']._serialized_start=3364
+  _globals['_REQUEST_PARAMS_MIGRATIONS']._serialized_end=3465
+  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG']._serialized_start=3468
+  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG']._serialized_end=3738
+  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY']._serialized_start=3585
+  _globals['_REQUEST_PARAMS_RESULTSUPLOADCONFIG_TESTRESULTSUPLOADVISIBILITY']._serialized_end=3738
+  _globals['_REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR']._serialized_start=3740
+  _globals['_REQUEST_PARAMS_TESTEXECUTIONBEHAVIOR']._serialized_end=3821
+  _globals['_REQUEST_TAG']._serialized_start=3858
+  _globals['_REQUEST_TAG']._serialized_end=3878
+  _globals['_REQUEST_SUITE']._serialized_start=3880
+  _globals['_REQUEST_SUITE']._serialized_end=3939
+  _globals['_REQUEST_TEST']._serialized_start=3942
+  _globals['_REQUEST_TEST']._serialized_end=4084
+  _globals['_REQUEST_TEST_AUTOTEST']._serialized_start=4008
+  _globals['_REQUEST_TEST_AUTOTEST']._serialized_end=4073
+  _globals['_REQUEST_ENUMERATION']._serialized_start=4087
+  _globals['_REQUEST_ENUMERATION']._serialized_end=4443
+  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION']._serialized_start=4188
+  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION']._serialized_end=4443
+  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY']._serialized_start=4391
+  _globals['_REQUEST_ENUMERATION_AUTOTESTINVOCATION_RESULTKEYVALSENTRY']._serialized_end=4443
+  _globals['_REQUEST_TESTPLAN']._serialized_start=4446
+  _globals['_REQUEST_TESTPLAN']._serialized_end=4834
 # @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/test_platform/suite_manager/__init__.py b/api/gen_sdk/test_platform/suite_manager/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/api/gen_sdk/test_platform/suite_manager/__init__.py
diff --git a/api/gen_sdk/test_platform/suite_manager/api_pb2.py b/api/gen_sdk/test_platform/suite_manager/api_pb2.py
new file mode 100644
index 0000000..8dd5051
--- /dev/null
+++ b/api/gen_sdk/test_platform/suite_manager/api_pb2.py
@@ -0,0 +1,82 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: test_platform/suite_manager/api.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from chromite.api.gen_sdk.testplans import suite_scheduler_pb2 as testplans_dot_suite__scheduler__pb2
+from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2
+from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%test_platform/suite_manager/api.proto\x12\x1btest_platform.suite_manager\x1a\x1ftestplans/suite_scheduler.proto\x1a google/protobuf/field_mask.proto\x1a\x19google/protobuf/any.proto\"N\n\x06Status\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12%\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.Any\" \n\x10GetConfigRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"t\n\x11GetConfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12*\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"\x94\x02\n\x13\x46\x65tchConfigsRequest\x12I\n\x07\x66ilters\x18\x01 \x01(\x0b\x32\x38.test_platform.suite_manager.FetchConfigsRequest.Filters\x1a\xb1\x01\n\x07\x46ilters\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05suite\x18\x02 \x01(\t\x12\x0c\n\x04pool\x18\x03 \x01(\t\x12O\n\x0elaunch_profile\x18\x04 \x01(\x0e\x32\x37.testplans.SchedulerConfig.LaunchCriteria.LaunchProfile\x12*\n\x0ftarget_branches\x18\x05 \x03(\x0e\x32\x11.testplans.Branch\"x\n\x14\x46\x65tchConfigsResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12+\n\x07\x63onfigs\x18\x02 \x03(\x0b\x32\x1a.testplans.SchedulerConfig\"[\n\x10\x41\x64\x64\x43onfigRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\x12\x32\n\x0e\x63onfig_payload\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"H\n\x11\x41\x64\x64\x43onfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\"*\n\x13\x44\x65leteConfigRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\"K\n\x14\x44\x65leteConfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\"\x8f\x01\n\x13UpdateConfigRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\x12\x32\n\x0e\x63onfig_payload\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"K\n\x14UpdateConfigResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\">\n\x0b\x42uildTarget\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\x0e\n\x06models\x18\x02 \x03(\t\x12\x10\n\x08variants\x18\x03 \x03(\t\"\xad\x01\n\x18\x46\x65tchBuildTargetsRequest\x12N\n\x07\x66ilters\x18\x01 \x01(\x0b\x32=.test_platform.suite_manager.FetchBuildTargetsRequest.Filters\x1a\x41\n\x07\x46ilters\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\r\n\x05model\x18\x02 \x01(\t\x12\x18\n\x10include_variants\x18\x03 \x01(\x08\"\x91\x01\n\x19\x46\x65tchBuildTargetsResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12?\n\rbuild_targets\x18\x02 \x03(\x0b\x32(.test_platform.suite_manager.BuildTarget\"w\n\x15\x45stimateImpactRequest\x12*\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12\x32\n\x0e\x63ompare_config\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"\x92\x01\n\x16\x45stimateImpactResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12\x16\n\x0cimpact_hours\x18\x02 \x01(\x03H\x00\x12!\n\x17impact_hours_difference\x18\x03 \x01(\x03H\x00\x42\x08\n\x06impact\"\xf0\x01\n\x1a\x42\x61tchEstimateImpactRequest\x12Q\n\x08requests\x18\x01 \x03(\x0b\x32?.test_platform.suite_manager.BatchEstimateImpactRequest.Request\x1a\x7f\n\x07Request\x12\x14\n\x0crequest_uuid\x18\x01 \x01(\t\x12*\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12\x32\n\x0e\x63ompare_config\x18\x03 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\"\x8c\x02\n\x1b\x42\x61tchEstimateImpactResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12R\n\x08reponses\x18\x02 \x03(\x0b\x32@.test_platform.suite_manager.BatchEstimateImpactResponse.Reponse\x1a\x64\n\x07Reponse\x12\x14\n\x0crequest_uuid\x18\x01 \x01(\t\x12\x16\n\x0cimpact_hours\x18\x02 \x01(\x03H\x00\x12!\n\x17impact_hours_difference\x18\x03 \x01(\x03H\x00\x42\x08\n\x06impact\"g\n\x14ProposeChangeRequest\x12\x13\n\x0b\x63onfig_name\x18\x01 \x01(\t\x12*\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1a.testplans.SchedulerConfig\x12\x0e\n\x06\x61uthor\x18\x03 \x01(\t\"Z\n\x15ProposeChangeResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12\x0c\n\x04uuid\x18\x02 \x01(\t\"\x17\n\x15UpdateProposalRequest\"[\n\x16UpdateProposalResponse\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.test_platform.suite_manager.Status\x12\x0c\n\x04uuid\x18\x02 \x01(\t2\xca\t\n\x13SuiteManagerService\x12j\n\tGetConfig\x12-.test_platform.suite_manager.GetConfigRequest\x1a..test_platform.suite_manager.GetConfigResponse\x12s\n\x0c\x46\x65tchConfigs\x12\x30.test_platform.suite_manager.FetchConfigsRequest\x1a\x31.test_platform.suite_manager.FetchConfigsResponse\x12j\n\tAddConfig\x12-.test_platform.suite_manager.AddConfigRequest\x1a..test_platform.suite_manager.AddConfigResponse\x12s\n\x0c\x44\x65leteConfig\x12\x30.test_platform.suite_manager.DeleteConfigRequest\x1a\x31.test_platform.suite_manager.DeleteConfigResponse\x12s\n\x0cUpdateConfig\x12\x30.test_platform.suite_manager.UpdateConfigRequest\x1a\x31.test_platform.suite_manager.UpdateConfigResponse\x12\x82\x01\n\x11\x46\x65tchBuildTargets\x12\x35.test_platform.suite_manager.FetchBuildTargetsRequest\x1a\x36.test_platform.suite_manager.FetchBuildTargetsResponse\x12y\n\x0e\x45stimateImpact\x12\x32.test_platform.suite_manager.EstimateImpactRequest\x1a\x33.test_platform.suite_manager.EstimateImpactResponse\x12\x88\x01\n\x13\x42\x61tchEstimateImpact\x12\x37.test_platform.suite_manager.BatchEstimateImpactRequest\x1a\x38.test_platform.suite_manager.BatchEstimateImpactResponse\x12v\n\rProposeChange\x12\x31.test_platform.suite_manager.ProposeChangeRequest\x1a\x32.test_platform.suite_manager.ProposeChangeResponse\x12y\n\x0eUpdateProposal\x12\x32.test_platform.suite_manager.UpdateProposalRequest\x1a\x33.test_platform.suite_manager.UpdateProposalResponseBGZEgo.chromium.org/chromiumos/infra/proto/go/test_platform/suite_managerb\x06proto3')
+
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'test_platform.suite_manager.api_pb2', _globals)
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  DESCRIPTOR._serialized_options = b'ZEgo.chromium.org/chromiumos/infra/proto/go/test_platform/suite_manager'
+  _globals['_STATUS']._serialized_start=164
+  _globals['_STATUS']._serialized_end=242
+  _globals['_GETCONFIGREQUEST']._serialized_start=244
+  _globals['_GETCONFIGREQUEST']._serialized_end=276
+  _globals['_GETCONFIGRESPONSE']._serialized_start=278
+  _globals['_GETCONFIGRESPONSE']._serialized_end=394
+  _globals['_FETCHCONFIGSREQUEST']._serialized_start=397
+  _globals['_FETCHCONFIGSREQUEST']._serialized_end=673
+  _globals['_FETCHCONFIGSREQUEST_FILTERS']._serialized_start=496
+  _globals['_FETCHCONFIGSREQUEST_FILTERS']._serialized_end=673
+  _globals['_FETCHCONFIGSRESPONSE']._serialized_start=675
+  _globals['_FETCHCONFIGSRESPONSE']._serialized_end=795
+  _globals['_ADDCONFIGREQUEST']._serialized_start=797
+  _globals['_ADDCONFIGREQUEST']._serialized_end=888
+  _globals['_ADDCONFIGRESPONSE']._serialized_start=890
+  _globals['_ADDCONFIGRESPONSE']._serialized_end=962
+  _globals['_DELETECONFIGREQUEST']._serialized_start=964
+  _globals['_DELETECONFIGREQUEST']._serialized_end=1006
+  _globals['_DELETECONFIGRESPONSE']._serialized_start=1008
+  _globals['_DELETECONFIGRESPONSE']._serialized_end=1083
+  _globals['_UPDATECONFIGREQUEST']._serialized_start=1086
+  _globals['_UPDATECONFIGREQUEST']._serialized_end=1229
+  _globals['_UPDATECONFIGRESPONSE']._serialized_start=1231
+  _globals['_UPDATECONFIGRESPONSE']._serialized_end=1306
+  _globals['_BUILDTARGET']._serialized_start=1308
+  _globals['_BUILDTARGET']._serialized_end=1370
+  _globals['_FETCHBUILDTARGETSREQUEST']._serialized_start=1373
+  _globals['_FETCHBUILDTARGETSREQUEST']._serialized_end=1546
+  _globals['_FETCHBUILDTARGETSREQUEST_FILTERS']._serialized_start=1481
+  _globals['_FETCHBUILDTARGETSREQUEST_FILTERS']._serialized_end=1546
+  _globals['_FETCHBUILDTARGETSRESPONSE']._serialized_start=1549
+  _globals['_FETCHBUILDTARGETSRESPONSE']._serialized_end=1694
+  _globals['_ESTIMATEIMPACTREQUEST']._serialized_start=1696
+  _globals['_ESTIMATEIMPACTREQUEST']._serialized_end=1815
+  _globals['_ESTIMATEIMPACTRESPONSE']._serialized_start=1818
+  _globals['_ESTIMATEIMPACTRESPONSE']._serialized_end=1964
+  _globals['_BATCHESTIMATEIMPACTREQUEST']._serialized_start=1967
+  _globals['_BATCHESTIMATEIMPACTREQUEST']._serialized_end=2207
+  _globals['_BATCHESTIMATEIMPACTREQUEST_REQUEST']._serialized_start=2080
+  _globals['_BATCHESTIMATEIMPACTREQUEST_REQUEST']._serialized_end=2207
+  _globals['_BATCHESTIMATEIMPACTRESPONSE']._serialized_start=2210
+  _globals['_BATCHESTIMATEIMPACTRESPONSE']._serialized_end=2478
+  _globals['_BATCHESTIMATEIMPACTRESPONSE_REPONSE']._serialized_start=2378
+  _globals['_BATCHESTIMATEIMPACTRESPONSE_REPONSE']._serialized_end=2478
+  _globals['_PROPOSECHANGEREQUEST']._serialized_start=2480
+  _globals['_PROPOSECHANGEREQUEST']._serialized_end=2583
+  _globals['_PROPOSECHANGERESPONSE']._serialized_start=2585
+  _globals['_PROPOSECHANGERESPONSE']._serialized_end=2675
+  _globals['_UPDATEPROPOSALREQUEST']._serialized_start=2677
+  _globals['_UPDATEPROPOSALREQUEST']._serialized_end=2700
+  _globals['_UPDATEPROPOSALRESPONSE']._serialized_start=2702
+  _globals['_UPDATEPROPOSALRESPONSE']._serialized_end=2793
+  _globals['_SUITEMANAGERSERVICE']._serialized_start=2796
+  _globals['_SUITEMANAGERSERVICE']._serialized_end=4022
+# @@protoc_insertion_point(module_scope)