diff --git a/benchmarking/locust/common/ateapi_pb2.py b/benchmarking/locust/common/ateapi_pb2.py index 0e7f9760c..9781bfc54 100644 --- a/benchmarking/locust/common/ateapi_pb2.py +++ b/benchmarking/locust/common/ateapi_pb2.py @@ -40,7 +40,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x61teapi.proto\x12\x06\x61teapi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"]\n\x10\x45xternalSnapshot\x12\x14\n\x0csnapshot_uri\x18\x01 \x01(\t\x12\x33\n\rcontent_scope\x18\x02 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\"\x86\x01\n\x11LocalSnapshotInfo\x12\x15\n\rsnapshot_name\x18\x01 \x01(\t\x12%\n\x1dnode_vms_with_local_snapshots\x18\x02 \x03(\t\x12\x33\n\rcontent_scope\x18\x03 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\"w\n\x08Selector\x12\x37\n\x0cmatch_labels\x18\x01 \x03(\x0b\x32!.ateapi.Selector.MatchLabelsEntry\x1a\x32\n\x10MatchLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb2\x01\n\x10ResourceMetadata\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0b\n\x03uid\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\x03\x12/\n\x0b\x63reate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xdc\x02\n\x0e\x45xternalVolume\x12\x13\n\x0bvolume_name\x18\x01 \x01(\t\x12\x19\n\x11storage_volume_id\x18\x02 \x01(\t\x12\x13\n\x0bvolume_type\x18\x03 \x01(\t\x12-\n\x06status\x18\x04 \x01(\x0e\x32\x1d.ateapi.ExternalVolume.Status\x12\x41\n\x0evolume_context\x18\x05 \x03(\x0b\x32).ateapi.ExternalVolume.VolumeContextEntry\x1a\x34\n\x12VolumeContextEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"]\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATUS_PENDING\x10\x01\x12\x12\n\x0eSTATUS_CREATED\x10\x02\x12\x13\n\x0fSTATUS_DELETING\x10\x03\"\xd5\x01\n\x05\x41\x63tor\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12)\n\x0e\x61\x63tor_template\x18\x04 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12)\n\x0fworker_selector\x18\x05 \x01(\x0b\x32\x10.ateapi.Selector\x12%\n\nsource_tag\x18\x06 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12#\n\x06status\x18\x07 \x01(\x0b\x32\x13.ateapi.ActorStatus\"]\n\x0c\x45gressPolicy\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12!\n\x05rules\x18\x02 \x03(\x0b\x32\x12.ateapi.EgressRule\"{\n\nEgressRule\x12\'\n\thostnames\x18\x01 \x01(\x0b\x32\x14.ateapi.HostnameRule\x12\x1f\n\x05\x63idrs\x18\x02 \x01(\x0b\x32\x10.ateapi.CIDRRule\x12#\n\x03\x61ll\x18\x03 \x01(\x0b\x32\x16.google.protobuf.Empty\"L\n\x0cHostnameRule\x12\x10\n\x08patterns\x18\x01 \x03(\t\x12*\n\x07\x65\x66\x66\x65\x63ts\x18\x02 \x01(\x0b\x32\x19.ateapi.EgressRuleEffects\"\x19\n\x08\x43IDRRule\x12\r\n\x05\x63idrs\x18\x01 \x03(\t\"U\n\x11\x45gressRuleEffects\x12@\n\x15inject_static_headers\x18\x01 \x03(\x0b\x32!.ateapi.CredentialHeaderInjection\"S\n\x19\x43redentialHeaderInjection\x12\x0e\n\x06header\x18\x01 \x01(\t\x12\x0e\n\x06prefix\x18\x02 \x01(\t\x12\x16\n\x0e\x63redential_uri\x18\x03 \x01(\t\"\xf0\x02\n\x0b\x41\x63torStatus\x12!\n\x05state\x18\x01 \x01(\x0e\x32\x12.ateapi.ActorState\x12\x33\n\x11worker_assignment\x18\x02 \x01(\x0b\x32\x18.ateapi.WorkerAssignment\x12 \n\x18in_progress_snapshot_uri\x18\x03 \x01(\t\x12\x33\n\x11\x65xternal_snapshot\x18\x04 \x01(\x0b\x32\x18.ateapi.ExternalSnapshot\x12\x36\n\x13local_snapshot_info\x18\x05 \x01(\x0b\x32\x19.ateapi.LocalSnapshotInfo\x12-\n\ractor_volumes\x18\x07 \x03(\x0b\x32\x16.ateapi.ExternalVolume\x12\'\n\x1fin_progress_local_snapshot_name\x18\x08 \x01(\t\x12\"\n\x1a\x63urrent_actor_template_uid\x18\x0b \x01(\t\"\xba\x01\n\x10WorkerAssignment\x12!\n\x06worker\x18\x06 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x18\n\x10worker_namespace\x18\x01 \x01(\t\x12\x13\n\x0bworker_pool\x18\x02 \x01(\t\x12\x12\n\nworker_pod\x18\x03 \x01(\t\x12\x16\n\x0eworker_pod_uid\x18\x04 \x01(\t\x12\x15\n\rworker_pod_ip\x18\x05 \x01(\t\x12\x11\n\tnode_name\x18\x07 \x01(\t\"\x87\x01\n\tTagStatus\x12*\n\x08snapshot\x18\x01 \x01(\x0b\x32\x18.ateapi.ExternalSnapshot\x12\x1a\n\x12\x61\x63tor_template_uid\x18\x02 \x01(\t\x12\x18\n\x10storage_location\x18\x03 \x01(\t\x12\x18\n\x10source_actor_uid\x18\x04 \x01(\t\"\x9e\x01\n\x03Tag\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12!\n\x06status\x18\x02 \x01(\x0b\x32\x11.ateapi.TagStatus\x12\x1f\n\x05scope\x18\x03 \x01(\x0e\x32\x10.ateapi.TagScope\x12\'\n\x0csource_actor\x18\x04 \x01(\x0b\x32\x11.ateapi.ObjectRef\"6\n\x08\x41tespace\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\"+\n\tObjectRef\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xe3\x02\n\rActorTemplate\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12)\n\x0fworker_selector\x18\x02 \x01(\x0b\x32\x10.ateapi.Selector\x12%\n\ncontainers\x18\x03 \x03(\x0b\x32\x11.ateapi.Container\x12\x1f\n\x07volumes\x18\x04 \x03(\x0b\x32\x0e.ateapi.Volume\x12\x31\n\x10snapshots_config\x18\x05 \x01(\x0b\x32\x17.ateapi.SnapshotsConfig\x12-\n\x0esandbox_config\x18\x06 \x01(\x0b\x32\x15.ateapi.SandboxConfig\x12$\n\tresources\x18\x07 \x01(\x0b\x32\x11.ateapi.Resources\x12+\n\x06status\x18\x08 \x01(\x0b\x32\x1b.ateapi.ActorTemplateStatus\"+\n\tResources\x12\x1e\n\x06limits\x18\x01 \x03(\x0b\x32\x0e.ateapi.Limits\"(\n\x06Limits\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08quantity\x18\x02 \x01(\t\"\x91\x01\n\x14GoldenSnapshotStatus\x12%\n\ngolden_tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12;\n\x17take_golden_snapshot_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rerror_message\x18\x03 \x01(\t\"S\n\x13\x41\x63torTemplateStatus\x12<\n\x16golden_snapshot_status\x18\x01 \x01(\x0b\x32\x1c.ateapi.GoldenSnapshotStatus\"Q\n\rSandboxConfig\x12+\n\rsandbox_class\x18\x01 \x01(\x0e\x32\x14.ateapi.SandboxClass\x12\x13\n\x0b\x63onfig_name\x18\x02 \x01(\t\"\xb7\x01\n\x0fSnapshotsConfig\x12.\n\x08on_pause\x18\x01 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\x12/\n\ton_commit\x18\x02 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\x12)\n\ton_resume\x18\x03 \x01(\x0b\x32\x16.ateapi.OnResumeConfig\x12\x18\n\x10storage_location\x18\x04 \x01(\t\"9\n\x0eOnResumeConfig\x12\'\n\tfrom_data\x18\x01 \x01(\x0e\x32\x14.ateapi.ResumeSource\"\x92\x02\n\tContainer\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05image\x18\x02 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x03 \x03(\t\x12\x0c\n\x04\x61rgs\x18\x04 \x03(\t\x12\x1b\n\x03\x65nv\x18\x05 \x03(\x0b\x32\x0e.ateapi.EnvVar\x12\'\n\x06readyz\x18\x06 \x01(\x0b\x32\x17.ateapi.ContainerReadyz\x12*\n\rvolume_mounts\x18\x07 \x03(\x0b\x32\x13.ateapi.VolumeMount\x12\x31\n\x10security_context\x18\x08 \x01(\x0b\x32\x17.ateapi.SecurityContext\x12$\n\tresources\x18\t \x01(\x0b\x32\x11.ateapi.Resources\"=\n\x0fSecurityContext\x12*\n\x0c\x63\x61pabilities\x18\x01 \x01(\x0b\x32\x14.ateapi.Capabilities\")\n\x0c\x43\x61pabilities\x12\x0b\n\x03\x61\x64\x64\x18\x01 \x03(\t\x12\x0c\n\x04\x64rop\x18\x02 \x03(\t\"%\n\x06\x45nvVar\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"S\n\x0f\x43ontainerReadyz\x12\'\n\x08http_get\x18\x01 \x01(\x0b\x32\x15.ateapi.HTTPGetAction\x12\x17\n\x0ftimeout_seconds\x18\x02 \x01(\x05\"+\n\rHTTPGetAction\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\"\xec\x01\n\x06Volume\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x33\n\x0b\x64urable_dir\x18\x02 \x01(\x0b\x32\x1e.ateapi.DurableDirVolumeSource\x12@\n\x18\x65xternal_volume_template\x18\x03 \x01(\x0b\x32\x1e.ateapi.ExternalVolumeTemplate\x12\x33\n\x0bsystem_info\x18\x05 \x01(\x0b\x32\x1e.ateapi.SystemInfoVolumeSource\x12(\n\x05image\x18\x06 \x01(\x0b\x32\x19.ateapi.ImageVolumeSource\"&\n\x11ImageVolumeSource\x12\x11\n\treference\x18\x01 \x01(\t\"\x18\n\x16\x44urableDirVolumeSource\"F\n\x16\x45xternalVolumeTemplate\x12\x10\n\x08\x63\x61pacity\x18\x01 \x01(\t\x12\x1a\n\x12storage_class_name\x18\x02 \x01(\t\"L\n\x16SystemInfoVolumeSource\x12\x32\n\x0c\x64\x61ta_sources\x18\x01 \x03(\x0b\x32\x1c.ateapi.SystemInfoDataSource\"\x84\x01\n\x14SystemInfoDataSource\x12\x37\n\x0e\x61\x63tor_metadata\x18\x01 \x01(\x0b\x32\x1f.ateapi.ActorMetadataDataSource\x12\x33\n\x0ctrust_bundle\x18\x02 \x01(\x0b\x32\x1d.ateapi.TrustBundleDataSource\"C\n\x17\x41\x63torMetadataDataSource\x12(\n\x05items\x18\x01 \x03(\x0b\x32\x19.ateapi.ActorMetadataItem\"L\n\x11\x41\x63torMetadataItem\x12)\n\x05\x66ield\x18\x01 \x01(\x0e\x32\x1a.ateapi.ActorMetadataField\x12\x0c\n\x04path\x18\x02 \x01(\t\"3\n\x15TrustBundleDataSource\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"/\n\x0bVolumeMount\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nmount_path\x18\x02 \x01(\t\";\n\x15\x43reateAtespaceRequest\x12\"\n\x08\x61tespace\x18\x01 \x01(\x0b\x32\x10.ateapi.Atespace\"9\n\x12GetAtespaceRequest\x12#\n\x08\x61tespace\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"=\n\x14ListAtespacesRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\"U\n\x15ListAtespacesResponse\x12#\n\tatespaces\x18\x01 \x03(\x0b\x32\x10.ateapi.Atespace\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"<\n\x15\x44\x65leteAtespaceRequest\x12#\n\x08\x61tespace\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"K\n\x1a\x43reateActorTemplateRequest\x12-\n\x0e\x61\x63tor_template\x18\x01 \x01(\x0b\x32\x15.ateapi.ActorTemplate\"D\n\x17GetActorTemplateRequest\x12)\n\x0e\x61\x63tor_template\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"T\n\x19ListActorTemplatesRequest\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"e\n\x1aListActorTemplatesResponse\x12.\n\x0f\x61\x63tor_templates\x18\x01 \x03(\x0b\x32\x15.ateapi.ActorTemplate\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"G\n\x1a\x44\x65leteActorTemplateRequest\x12)\n\x0e\x61\x63tor_template\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"3\n\x0fGetActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"2\n\x12\x43reateActorRequest\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"2\n\x12UpdateActorRequest\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"7\n\x13SuspendActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"4\n\x14SuspendActorResponse\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"5\n\x11PauseActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"2\n\x12PauseActorResponse\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"6\n\x12ResumeActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"D\n\x13ResumeActorResponse\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\x12\x0f\n\x07resumed\x18\x02 \x01(\x08\"I\n\x12\x44\x65leteActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tany_state\x18\x02 \x01(\x08\"?\n\x1bGetActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"o\n\x1e\x43reateActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12+\n\regress_policy\x18\x02 \x01(\x0b\x32\x14.ateapi.EgressPolicy\"o\n\x1eUpdateActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12+\n\regress_policy\x18\x02 \x01(\x0b\x32\x14.ateapi.EgressPolicy\"B\n\x1e\x44\x65leteActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"/\n\rGetTagRequest\x12\x1e\n\x03tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"\\\n\x13MintActorJWTRequest\x12 \n\x05\x61\x63tor\x18\x05 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tactor_uid\x18\x07 \x01(\t\x12\x10\n\x08\x61udience\x18\x01 \x03(\t\")\n\x14MintActorJWTResponse\x12\x11\n\tactor_jwt\x18\x01 \x01(\t\"\xa9\x01\n\x1bMintActorCertificateRequest\x12 \n\x05\x61\x63tor\x18\x06 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tactor_uid\x18\x07 \x01(\t\x12#\n\x1b\x63\x65rtificate_signing_request\x18\x02 \x01(\x0c\x12\x30\n\x07purpose\x18\x04 \x01(\x0e\x32\x1f.ateapi.ActorCertificatePurpose\":\n\x1cMintActorCertificateResponse\x12\x1a\n\x12\x61\x63tor_certificates\x18\x01 \x03(\x0c\"D\n\x17GetActorSnapshotRequest\x12)\n\x0e\x61\x63tor_snapshot\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"K\n\x1aGetActorSnapshotTagRequest\x12-\n\x12\x61\x63tor_snapshot_tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"J\n\x0fListTagsRequest\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"F\n\x10ListTagsResponse\x12\x19\n\x04tags\x18\x01 \x03(\x0b\x32\x0b.ateapi.Tag\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\",\n\x10\x43reateTagRequest\x12\x18\n\x03tag\x18\x01 \x01(\x0b\x32\x0b.ateapi.Tag\",\n\x10UpdateTagRequest\x12\x18\n\x03tag\x18\x01 \x01(\x0b\x32\x0b.ateapi.Tag\"2\n\x10\x44\x65leteTagRequest\x12\x1e\n\x03tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"-\n\rDeleteOptions\x12\x0f\n\x07version\x18\x01 \x01(\x03\x12\x0b\n\x03uid\x18\x02 \x01(\t\"m\n!ListWorkerActorAssignmentsRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"q\n\"ListWorkerActorAssignmentsResponse\x12\x32\n\x11\x61\x63tor_assignments\x18\x01 \x03(\x0b\x32\x17.ateapi.ActorAssignment\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\";\n\x12ListWorkersRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\"O\n\x13ListWorkersResponse\x12\x1f\n\x07workers\x18\x01 \x03(\x0b\x32\x0e.ateapi.Worker\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"5\n\x10GetWorkerRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"5\n\x13\x43reateWorkerRequest\x12\x1e\n\x06worker\x18\x01 \x01(\x0b\x32\x0e.ateapi.Worker\"5\n\x13UpdateWorkerRequest\x12\x1e\n\x06worker\x18\x01 \x01(\x0b\x32\x0e.ateapi.Worker\"`\n\x13\x44\x65leteWorkerRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12&\n\x07options\x18\x02 \x01(\x0b\x32\x15.ateapi.DeleteOptions\"7\n\x12\x44rainWorkerRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"L\n\x11ListActorsRequest\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"L\n\x12ListActorsResponse\x12\x1d\n\x06\x61\x63tors\x18\x01 \x03(\x0b\x32\r.ateapi.Actor\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xc6\x02\n\x06Worker\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12\x18\n\x10worker_namespace\x18\x02 \x01(\t\x12\x13\n\x0bworker_pool\x18\x03 \x01(\t\x12\x12\n\nworker_pod\x18\x04 \x01(\t\x12\x16\n\x0eworker_pod_uid\x18\x05 \x01(\t\x12\x11\n\tnode_name\x18\x06 \x01(\t\x12\n\n\x02ip\x18\x07 \x01(\t\x12\x15\n\rsandbox_class\x18\x08 \x01(\t\x12*\n\x06labels\x18\t \x03(\x0b\x32\x1a.ateapi.Worker.LabelsEntry\x12$\n\x06status\x18\x0b \x01(\x0b\x32\x14.ateapi.WorkerStatus\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x89\x01\n\x0cWorkerStatus\x12\"\n\x05state\x18\x01 \x01(\x0e\x32\x13.ateapi.WorkerState\x12)\n\x08\x63\x61pacity\x18\x02 \x01(\x0b\x32\x17.ateapi.WorkerResources\x12*\n\tallocated\x18\x03 \x01(\x0b\x32\x17.ateapi.WorkerResources\"G\n\x0fWorkerResources\x12$\n\tresources\x18\x01 \x01(\x0b\x32\x11.ateapi.Resources\x12\x0e\n\x06\x61\x63tors\x18\x02 \x01(\x05\"\xc7\x01\n\x0f\x41\x63torAssignment\x12*\n\x08metadata\x18\x06 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12 \n\x05\x61\x63tor\x18\x02 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tactor_uid\x18\x03 \x01(\t\x12-\n\x12\x61\x63tor_template_ref\x18\x04 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12$\n\tresources\x18\x05 \x01(\x0b\x32\x11.ateapi.Resources\"h\n\x18SetWorkerCapacityRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12)\n\x08\x63\x61pacity\x18\x02 \x01(\x0b\x32\x17.ateapi.WorkerResources\";\n\x19SetWorkerCapacityResponse\x12\x1e\n\x06worker\x18\x01 \x01(\x0b\x32\x0e.ateapi.Worker*\x80\x01\n\x14SnapshotContentScope\x12&\n\"SNAPSHOT_CONTENT_SCOPE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bSNAPSHOT_CONTENT_SCOPE_FULL\x10\x01\x12\x1f\n\x1bSNAPSHOT_CONTENT_SCOPE_DATA\x10\x02*V\n\x08TagScope\x12\x19\n\x15TAG_SCOPE_UNSPECIFIED\x10\x00\x12\x16\n\x12TAG_SCOPE_ATESPACE\x10\x01\x12\x17\n\x13TAG_SCOPE_PUBLISHED\x10\x02*\xf7\x01\n\nActorState\x12\x1b\n\x17\x41\x43TOR_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x41\x43TOR_STATE_RESUMING\x10\x01\x12\x17\n\x13\x41\x43TOR_STATE_RUNNING\x10\x02\x12\x1a\n\x16\x41\x43TOR_STATE_SUSPENDING\x10\x03\x12\x19\n\x15\x41\x43TOR_STATE_SUSPENDED\x10\x04\x12\x17\n\x13\x41\x43TOR_STATE_PAUSING\x10\x05\x12\x16\n\x12\x41\x43TOR_STATE_PAUSED\x10\x06\x12\x17\n\x13\x41\x43TOR_STATE_CRASHED\x10\x07\x12\x18\n\x14\x41\x43TOR_STATE_DELETING\x10\x08*b\n\x0cSandboxClass\x12\x1d\n\x19SANDBOX_CLASS_UNSPECIFIED\x10\x00\x12\x18\n\x14SANDBOX_CLASS_GVISOR\x10\x01\x12\x19\n\x15SANDBOX_CLASS_MICROVM\x10\x02*d\n\x0cResumeSource\x12\x1d\n\x19RESUME_SOURCE_UNSPECIFIED\x10\x00\x12\x1b\n\x17RESUME_SOURCE_COLD_BOOT\x10\x01\x12\x18\n\x14RESUME_SOURCE_GOLDEN\x10\x02*\x9a\x01\n\x12\x41\x63torMetadataField\x12$\n ACTOR_METADATA_FIELD_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x41\x43TOR_METADATA_FIELD_NAME\x10\x01\x12!\n\x1d\x41\x43TOR_METADATA_FIELD_ATESPACE\x10\x02\x12\x1c\n\x18\x41\x43TOR_METADATA_FIELD_UID\x10\x03*k\n\x17\x41\x63torCertificatePurpose\x12)\n%ACTOR_CERTIFICATE_PURPOSE_UNSPECIFIED\x10\x00\x12%\n!ACTOR_CERTIFICATE_PURPOSE_ATUNNEL\x10\x01*_\n\x0bWorkerState\x12\x1c\n\x18WORKER_STATE_UNSPECIFIED\x10\x00\x12\x17\n\x13WORKER_STATE_ACTIVE\x10\x01\x12\x19\n\x15WORKER_STATE_DRAINING\x10\x02\x32\xa5\x13\n\x07\x43ontrol\x12\x34\n\x08GetActor\x12\x17.ateapi.GetActorRequest\x1a\r.ateapi.Actor\"\x00\x12:\n\x0b\x43reateActor\x12\x1a.ateapi.CreateActorRequest\x1a\r.ateapi.Actor\"\x00\x12:\n\x0bUpdateActor\x12\x1a.ateapi.UpdateActorRequest\x1a\r.ateapi.Actor\"\x00\x12K\n\x0cSuspendActor\x12\x1b.ateapi.SuspendActorRequest\x1a\x1c.ateapi.SuspendActorResponse\"\x00\x12\x45\n\nPauseActor\x12\x19.ateapi.PauseActorRequest\x1a\x1a.ateapi.PauseActorResponse\"\x00\x12H\n\x0bResumeActor\x12\x1a.ateapi.ResumeActorRequest\x1a\x1b.ateapi.ResumeActorResponse\"\x00\x12:\n\x0b\x44\x65leteActor\x12\x1a.ateapi.DeleteActorRequest\x1a\r.ateapi.Actor\"\x00\x12S\n\x14GetActorEgressPolicy\x12#.ateapi.GetActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12Y\n\x17\x43reateActorEgressPolicy\x12&.ateapi.CreateActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12Y\n\x17UpdateActorEgressPolicy\x12&.ateapi.UpdateActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12Y\n\x17\x44\x65leteActorEgressPolicy\x12&.ateapi.DeleteActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12K\n\x0cMintActorJWT\x12\x1b.ateapi.MintActorJWTRequest\x1a\x1c.ateapi.MintActorJWTResponse\"\x00\x12\x63\n\x14MintActorCertificate\x12#.ateapi.MintActorCertificateRequest\x1a$.ateapi.MintActorCertificateResponse\"\x00\x12\x34\n\tCreateTag\x12\x18.ateapi.CreateTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12.\n\x06GetTag\x12\x15.ateapi.GetTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12?\n\x08ListTags\x12\x17.ateapi.ListTagsRequest\x1a\x18.ateapi.ListTagsResponse\"\x00\x12\x34\n\tUpdateTag\x12\x18.ateapi.UpdateTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12\x34\n\tDeleteTag\x12\x18.ateapi.DeleteTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12H\n\x0bListWorkers\x12\x1a.ateapi.ListWorkersRequest\x1a\x1b.ateapi.ListWorkersResponse\"\x00\x12\x37\n\tGetWorker\x12\x18.ateapi.GetWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12=\n\x0c\x43reateWorker\x12\x1b.ateapi.CreateWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12=\n\x0cUpdateWorker\x12\x1b.ateapi.UpdateWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12=\n\x0c\x44\x65leteWorker\x12\x1b.ateapi.DeleteWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12;\n\x0b\x44rainWorker\x12\x1a.ateapi.DrainWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12u\n\x1aListWorkerActorAssignments\x12).ateapi.ListWorkerActorAssignmentsRequest\x1a*.ateapi.ListWorkerActorAssignmentsResponse\"\x00\x12\x45\n\nListActors\x12\x19.ateapi.ListActorsRequest\x1a\x1a.ateapi.ListActorsResponse\"\x00\x12\x43\n\x0e\x43reateAtespace\x12\x1d.ateapi.CreateAtespaceRequest\x1a\x10.ateapi.Atespace\"\x00\x12=\n\x0bGetAtespace\x12\x1a.ateapi.GetAtespaceRequest\x1a\x10.ateapi.Atespace\"\x00\x12N\n\rListAtespaces\x12\x1c.ateapi.ListAtespacesRequest\x1a\x1d.ateapi.ListAtespacesResponse\"\x00\x12\x43\n\x0e\x44\x65leteAtespace\x12\x1d.ateapi.DeleteAtespaceRequest\x1a\x10.ateapi.Atespace\"\x00\x12R\n\x13\x43reateActorTemplate\x12\".ateapi.CreateActorTemplateRequest\x1a\x15.ateapi.ActorTemplate\"\x00\x12L\n\x10GetActorTemplate\x12\x1f.ateapi.GetActorTemplateRequest\x1a\x15.ateapi.ActorTemplate\"\x00\x12]\n\x12ListActorTemplates\x12!.ateapi.ListActorTemplatesRequest\x1a\".ateapi.ListActorTemplatesResponse\"\x00\x12R\n\x13\x44\x65leteActorTemplate\x12\".ateapi.DeleteActorTemplateRequest\x1a\x15.ateapi.ActorTemplate\"\x00\x32i\n\rWorkerService\x12X\n\x11SetWorkerCapacity\x12 .ateapi.SetWorkerCapacityRequest\x1a!.ateapi.SetWorkerCapacityResponseB9Z7github.com/agent-substrate/substrate/pkg/proto/ateapipbb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x61teapi.proto\x12\x06\x61teapi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"y\n\x10\x45xternalSnapshot\x12\x14\n\x0csnapshot_uri\x18\x01 \x01(\t\x12\x33\n\rcontent_scope\x18\x02 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\x12\x1a\n\x12\x61\x63tor_template_uid\x18\x03 \x01(\t\"\x86\x01\n\x11LocalSnapshotInfo\x12\x15\n\rsnapshot_name\x18\x01 \x01(\t\x12%\n\x1dnode_vms_with_local_snapshots\x18\x02 \x03(\t\x12\x33\n\rcontent_scope\x18\x03 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\"w\n\x08Selector\x12\x37\n\x0cmatch_labels\x18\x01 \x03(\x0b\x32!.ateapi.Selector.MatchLabelsEntry\x1a\x32\n\x10MatchLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb2\x01\n\x10ResourceMetadata\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0b\n\x03uid\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\x03\x12/\n\x0b\x63reate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xdc\x02\n\x0e\x45xternalVolume\x12\x13\n\x0bvolume_name\x18\x01 \x01(\t\x12\x19\n\x11storage_volume_id\x18\x02 \x01(\t\x12\x13\n\x0bvolume_type\x18\x03 \x01(\t\x12-\n\x06status\x18\x04 \x01(\x0e\x32\x1d.ateapi.ExternalVolume.Status\x12\x41\n\x0evolume_context\x18\x05 \x03(\x0b\x32).ateapi.ExternalVolume.VolumeContextEntry\x1a\x34\n\x12VolumeContextEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"]\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATUS_PENDING\x10\x01\x12\x12\n\x0eSTATUS_CREATED\x10\x02\x12\x13\n\x0fSTATUS_DELETING\x10\x03\"\xd5\x01\n\x05\x41\x63tor\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12)\n\x0e\x61\x63tor_template\x18\x04 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12)\n\x0fworker_selector\x18\x05 \x01(\x0b\x32\x10.ateapi.Selector\x12%\n\nsource_tag\x18\x06 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12#\n\x06status\x18\x07 \x01(\x0b\x32\x13.ateapi.ActorStatus\"]\n\x0c\x45gressPolicy\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12!\n\x05rules\x18\x02 \x03(\x0b\x32\x12.ateapi.EgressRule\"{\n\nEgressRule\x12\'\n\thostnames\x18\x01 \x01(\x0b\x32\x14.ateapi.HostnameRule\x12\x1f\n\x05\x63idrs\x18\x02 \x01(\x0b\x32\x10.ateapi.CIDRRule\x12#\n\x03\x61ll\x18\x03 \x01(\x0b\x32\x16.google.protobuf.Empty\"L\n\x0cHostnameRule\x12\x10\n\x08patterns\x18\x01 \x03(\t\x12*\n\x07\x65\x66\x66\x65\x63ts\x18\x02 \x01(\x0b\x32\x19.ateapi.EgressRuleEffects\"\x19\n\x08\x43IDRRule\x12\r\n\x05\x63idrs\x18\x01 \x03(\t\"U\n\x11\x45gressRuleEffects\x12@\n\x15inject_static_headers\x18\x01 \x03(\x0b\x32!.ateapi.CredentialHeaderInjection\"S\n\x19\x43redentialHeaderInjection\x12\x0e\n\x06header\x18\x01 \x01(\t\x12\x0e\n\x06prefix\x18\x02 \x01(\t\x12\x16\n\x0e\x63redential_uri\x18\x03 \x01(\t\"\xf0\x02\n\x0b\x41\x63torStatus\x12!\n\x05state\x18\x01 \x01(\x0e\x32\x12.ateapi.ActorState\x12\x33\n\x11worker_assignment\x18\x02 \x01(\x0b\x32\x18.ateapi.WorkerAssignment\x12 \n\x18in_progress_snapshot_uri\x18\x03 \x01(\t\x12\x33\n\x11\x65xternal_snapshot\x18\x04 \x01(\x0b\x32\x18.ateapi.ExternalSnapshot\x12\x36\n\x13local_snapshot_info\x18\x05 \x01(\x0b\x32\x19.ateapi.LocalSnapshotInfo\x12-\n\ractor_volumes\x18\x07 \x03(\x0b\x32\x16.ateapi.ExternalVolume\x12\'\n\x1fin_progress_local_snapshot_name\x18\x08 \x01(\t\x12\"\n\x1a\x63urrent_actor_template_uid\x18\x0b \x01(\t\"\xba\x01\n\x10WorkerAssignment\x12!\n\x06worker\x18\x06 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x18\n\x10worker_namespace\x18\x01 \x01(\t\x12\x13\n\x0bworker_pool\x18\x02 \x01(\t\x12\x12\n\nworker_pod\x18\x03 \x01(\t\x12\x16\n\x0eworker_pod_uid\x18\x04 \x01(\t\x12\x15\n\rworker_pod_ip\x18\x05 \x01(\t\x12\x11\n\tnode_name\x18\x07 \x01(\t\"\x87\x01\n\tTagStatus\x12*\n\x08snapshot\x18\x01 \x01(\x0b\x32\x18.ateapi.ExternalSnapshot\x12\x1a\n\x12\x61\x63tor_template_uid\x18\x02 \x01(\t\x12\x18\n\x10storage_location\x18\x03 \x01(\t\x12\x18\n\x10source_actor_uid\x18\x04 \x01(\t\"\x9e\x01\n\x03Tag\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12!\n\x06status\x18\x02 \x01(\x0b\x32\x11.ateapi.TagStatus\x12\x1f\n\x05scope\x18\x03 \x01(\x0e\x32\x10.ateapi.TagScope\x12\'\n\x0csource_actor\x18\x04 \x01(\x0b\x32\x11.ateapi.ObjectRef\"6\n\x08\x41tespace\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\"+\n\tObjectRef\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xe3\x02\n\rActorTemplate\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12)\n\x0fworker_selector\x18\x02 \x01(\x0b\x32\x10.ateapi.Selector\x12%\n\ncontainers\x18\x03 \x03(\x0b\x32\x11.ateapi.Container\x12\x1f\n\x07volumes\x18\x04 \x03(\x0b\x32\x0e.ateapi.Volume\x12\x31\n\x10snapshots_config\x18\x05 \x01(\x0b\x32\x17.ateapi.SnapshotsConfig\x12-\n\x0esandbox_config\x18\x06 \x01(\x0b\x32\x15.ateapi.SandboxConfig\x12$\n\tresources\x18\x07 \x01(\x0b\x32\x11.ateapi.Resources\x12+\n\x06status\x18\x08 \x01(\x0b\x32\x1b.ateapi.ActorTemplateStatus\"+\n\tResources\x12\x1e\n\x06limits\x18\x01 \x03(\x0b\x32\x0e.ateapi.Limits\"(\n\x06Limits\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08quantity\x18\x02 \x01(\t\"\x91\x01\n\x14GoldenSnapshotStatus\x12%\n\ngolden_tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12;\n\x17take_golden_snapshot_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rerror_message\x18\x03 \x01(\t\"S\n\x13\x41\x63torTemplateStatus\x12<\n\x16golden_snapshot_status\x18\x01 \x01(\x0b\x32\x1c.ateapi.GoldenSnapshotStatus\"Q\n\rSandboxConfig\x12+\n\rsandbox_class\x18\x01 \x01(\x0e\x32\x14.ateapi.SandboxClass\x12\x13\n\x0b\x63onfig_name\x18\x02 \x01(\t\"\xb7\x01\n\x0fSnapshotsConfig\x12.\n\x08on_pause\x18\x01 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\x12/\n\ton_commit\x18\x02 \x01(\x0e\x32\x1c.ateapi.SnapshotContentScope\x12)\n\ton_resume\x18\x03 \x01(\x0b\x32\x16.ateapi.OnResumeConfig\x12\x18\n\x10storage_location\x18\x04 \x01(\t\"9\n\x0eOnResumeConfig\x12\'\n\tfrom_data\x18\x01 \x01(\x0e\x32\x14.ateapi.ResumeSource\"\x92\x02\n\tContainer\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05image\x18\x02 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x03 \x03(\t\x12\x0c\n\x04\x61rgs\x18\x04 \x03(\t\x12\x1b\n\x03\x65nv\x18\x05 \x03(\x0b\x32\x0e.ateapi.EnvVar\x12\'\n\x06readyz\x18\x06 \x01(\x0b\x32\x17.ateapi.ContainerReadyz\x12*\n\rvolume_mounts\x18\x07 \x03(\x0b\x32\x13.ateapi.VolumeMount\x12\x31\n\x10security_context\x18\x08 \x01(\x0b\x32\x17.ateapi.SecurityContext\x12$\n\tresources\x18\t \x01(\x0b\x32\x11.ateapi.Resources\"=\n\x0fSecurityContext\x12*\n\x0c\x63\x61pabilities\x18\x01 \x01(\x0b\x32\x14.ateapi.Capabilities\")\n\x0c\x43\x61pabilities\x12\x0b\n\x03\x61\x64\x64\x18\x01 \x03(\t\x12\x0c\n\x04\x64rop\x18\x02 \x03(\t\"%\n\x06\x45nvVar\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"S\n\x0f\x43ontainerReadyz\x12\'\n\x08http_get\x18\x01 \x01(\x0b\x32\x15.ateapi.HTTPGetAction\x12\x17\n\x0ftimeout_seconds\x18\x02 \x01(\x05\"+\n\rHTTPGetAction\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\"\xec\x01\n\x06Volume\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x33\n\x0b\x64urable_dir\x18\x02 \x01(\x0b\x32\x1e.ateapi.DurableDirVolumeSource\x12@\n\x18\x65xternal_volume_template\x18\x03 \x01(\x0b\x32\x1e.ateapi.ExternalVolumeTemplate\x12\x33\n\x0bsystem_info\x18\x05 \x01(\x0b\x32\x1e.ateapi.SystemInfoVolumeSource\x12(\n\x05image\x18\x06 \x01(\x0b\x32\x19.ateapi.ImageVolumeSource\"&\n\x11ImageVolumeSource\x12\x11\n\treference\x18\x01 \x01(\t\"\x18\n\x16\x44urableDirVolumeSource\"F\n\x16\x45xternalVolumeTemplate\x12\x10\n\x08\x63\x61pacity\x18\x01 \x01(\t\x12\x1a\n\x12storage_class_name\x18\x02 \x01(\t\"L\n\x16SystemInfoVolumeSource\x12\x32\n\x0c\x64\x61ta_sources\x18\x01 \x03(\x0b\x32\x1c.ateapi.SystemInfoDataSource\"\x84\x01\n\x14SystemInfoDataSource\x12\x37\n\x0e\x61\x63tor_metadata\x18\x01 \x01(\x0b\x32\x1f.ateapi.ActorMetadataDataSource\x12\x33\n\x0ctrust_bundle\x18\x02 \x01(\x0b\x32\x1d.ateapi.TrustBundleDataSource\"C\n\x17\x41\x63torMetadataDataSource\x12(\n\x05items\x18\x01 \x03(\x0b\x32\x19.ateapi.ActorMetadataItem\"L\n\x11\x41\x63torMetadataItem\x12)\n\x05\x66ield\x18\x01 \x01(\x0e\x32\x1a.ateapi.ActorMetadataField\x12\x0c\n\x04path\x18\x02 \x01(\t\"3\n\x15TrustBundleDataSource\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"/\n\x0bVolumeMount\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nmount_path\x18\x02 \x01(\t\";\n\x15\x43reateAtespaceRequest\x12\"\n\x08\x61tespace\x18\x01 \x01(\x0b\x32\x10.ateapi.Atespace\"9\n\x12GetAtespaceRequest\x12#\n\x08\x61tespace\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"=\n\x14ListAtespacesRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\"U\n\x15ListAtespacesResponse\x12#\n\tatespaces\x18\x01 \x03(\x0b\x32\x10.ateapi.Atespace\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"<\n\x15\x44\x65leteAtespaceRequest\x12#\n\x08\x61tespace\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"K\n\x1a\x43reateActorTemplateRequest\x12-\n\x0e\x61\x63tor_template\x18\x01 \x01(\x0b\x32\x15.ateapi.ActorTemplate\"D\n\x17GetActorTemplateRequest\x12)\n\x0e\x61\x63tor_template\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"T\n\x19ListActorTemplatesRequest\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"e\n\x1aListActorTemplatesResponse\x12.\n\x0f\x61\x63tor_templates\x18\x01 \x03(\x0b\x32\x15.ateapi.ActorTemplate\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"G\n\x1a\x44\x65leteActorTemplateRequest\x12)\n\x0e\x61\x63tor_template\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"3\n\x0fGetActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"2\n\x12\x43reateActorRequest\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"2\n\x12UpdateActorRequest\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"7\n\x13SuspendActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"4\n\x14SuspendActorResponse\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"5\n\x11PauseActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"2\n\x12PauseActorResponse\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\"6\n\x12ResumeActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"D\n\x13ResumeActorResponse\x12\x1c\n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\r.ateapi.Actor\x12\x0f\n\x07resumed\x18\x02 \x01(\x08\"I\n\x12\x44\x65leteActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tany_state\x18\x02 \x01(\x08\"?\n\x1bGetActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"o\n\x1e\x43reateActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12+\n\regress_policy\x18\x02 \x01(\x0b\x32\x14.ateapi.EgressPolicy\"o\n\x1eUpdateActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12+\n\regress_policy\x18\x02 \x01(\x0b\x32\x14.ateapi.EgressPolicy\"B\n\x1e\x44\x65leteActorEgressPolicyRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"/\n\rGetTagRequest\x12\x1e\n\x03tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"\\\n\x13MintActorJWTRequest\x12 \n\x05\x61\x63tor\x18\x05 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tactor_uid\x18\x07 \x01(\t\x12\x10\n\x08\x61udience\x18\x01 \x03(\t\")\n\x14MintActorJWTResponse\x12\x11\n\tactor_jwt\x18\x01 \x01(\t\"\xa9\x01\n\x1bMintActorCertificateRequest\x12 \n\x05\x61\x63tor\x18\x06 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tactor_uid\x18\x07 \x01(\t\x12#\n\x1b\x63\x65rtificate_signing_request\x18\x02 \x01(\x0c\x12\x30\n\x07purpose\x18\x04 \x01(\x0e\x32\x1f.ateapi.ActorCertificatePurpose\":\n\x1cMintActorCertificateResponse\x12\x1a\n\x12\x61\x63tor_certificates\x18\x01 \x03(\x0c\"D\n\x17GetActorSnapshotRequest\x12)\n\x0e\x61\x63tor_snapshot\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"K\n\x1aGetActorSnapshotTagRequest\x12-\n\x12\x61\x63tor_snapshot_tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"J\n\x0fListTagsRequest\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"F\n\x10ListTagsResponse\x12\x19\n\x04tags\x18\x01 \x03(\x0b\x32\x0b.ateapi.Tag\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\",\n\x10\x43reateTagRequest\x12\x18\n\x03tag\x18\x01 \x01(\x0b\x32\x0b.ateapi.Tag\",\n\x10UpdateTagRequest\x12\x18\n\x03tag\x18\x01 \x01(\x0b\x32\x0b.ateapi.Tag\"2\n\x10\x44\x65leteTagRequest\x12\x1e\n\x03tag\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"-\n\rDeleteOptions\x12\x0f\n\x07version\x18\x01 \x01(\x03\x12\x0b\n\x03uid\x18\x02 \x01(\t\"m\n!ListWorkerActorAssignmentsRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"q\n\"ListWorkerActorAssignmentsResponse\x12\x32\n\x11\x61\x63tor_assignments\x18\x01 \x03(\x0b\x32\x17.ateapi.ActorAssignment\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\";\n\x12ListWorkersRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\"O\n\x13ListWorkersResponse\x12\x1f\n\x07workers\x18\x01 \x03(\x0b\x32\x0e.ateapi.Worker\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"5\n\x10GetWorkerRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"5\n\x13\x43reateWorkerRequest\x12\x1e\n\x06worker\x18\x01 \x01(\x0b\x32\x0e.ateapi.Worker\"5\n\x13UpdateWorkerRequest\x12\x1e\n\x06worker\x18\x01 \x01(\x0b\x32\x0e.ateapi.Worker\"`\n\x13\x44\x65leteWorkerRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12&\n\x07options\x18\x02 \x01(\x0b\x32\x15.ateapi.DeleteOptions\"7\n\x12\x44rainWorkerRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\"L\n\x11ListActorsRequest\x12\x10\n\x08\x61tespace\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"L\n\x12ListActorsResponse\x12\x1d\n\x06\x61\x63tors\x18\x01 \x03(\x0b\x32\r.ateapi.Actor\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xc6\x02\n\x06Worker\x12*\n\x08metadata\x18\x01 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12\x18\n\x10worker_namespace\x18\x02 \x01(\t\x12\x13\n\x0bworker_pool\x18\x03 \x01(\t\x12\x12\n\nworker_pod\x18\x04 \x01(\t\x12\x16\n\x0eworker_pod_uid\x18\x05 \x01(\t\x12\x11\n\tnode_name\x18\x06 \x01(\t\x12\n\n\x02ip\x18\x07 \x01(\t\x12\x15\n\rsandbox_class\x18\x08 \x01(\t\x12*\n\x06labels\x18\t \x03(\x0b\x32\x1a.ateapi.Worker.LabelsEntry\x12$\n\x06status\x18\x0b \x01(\x0b\x32\x14.ateapi.WorkerStatus\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x89\x01\n\x0cWorkerStatus\x12\"\n\x05state\x18\x01 \x01(\x0e\x32\x13.ateapi.WorkerState\x12)\n\x08\x63\x61pacity\x18\x02 \x01(\x0b\x32\x17.ateapi.WorkerResources\x12*\n\tallocated\x18\x03 \x01(\x0b\x32\x17.ateapi.WorkerResources\"G\n\x0fWorkerResources\x12$\n\tresources\x18\x01 \x01(\x0b\x32\x11.ateapi.Resources\x12\x0e\n\x06\x61\x63tors\x18\x02 \x01(\x05\"\xc7\x01\n\x0f\x41\x63torAssignment\x12*\n\x08metadata\x18\x06 \x01(\x0b\x32\x18.ateapi.ResourceMetadata\x12 \n\x05\x61\x63tor\x18\x02 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x11\n\tactor_uid\x18\x03 \x01(\t\x12-\n\x12\x61\x63tor_template_ref\x18\x04 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12$\n\tresources\x18\x05 \x01(\x0b\x32\x11.ateapi.Resources\"h\n\x18SetWorkerCapacityRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12)\n\x08\x63\x61pacity\x18\x02 \x01(\x0b\x32\x17.ateapi.WorkerResources\";\n\x19SetWorkerCapacityResponse\x12\x1e\n\x06worker\x18\x01 \x01(\x0b\x32\x0e.ateapi.Worker*\x80\x01\n\x14SnapshotContentScope\x12&\n\"SNAPSHOT_CONTENT_SCOPE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bSNAPSHOT_CONTENT_SCOPE_FULL\x10\x01\x12\x1f\n\x1bSNAPSHOT_CONTENT_SCOPE_DATA\x10\x02*V\n\x08TagScope\x12\x19\n\x15TAG_SCOPE_UNSPECIFIED\x10\x00\x12\x16\n\x12TAG_SCOPE_ATESPACE\x10\x01\x12\x17\n\x13TAG_SCOPE_PUBLISHED\x10\x02*\xf7\x01\n\nActorState\x12\x1b\n\x17\x41\x43TOR_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x41\x43TOR_STATE_RESUMING\x10\x01\x12\x17\n\x13\x41\x43TOR_STATE_RUNNING\x10\x02\x12\x1a\n\x16\x41\x43TOR_STATE_SUSPENDING\x10\x03\x12\x19\n\x15\x41\x43TOR_STATE_SUSPENDED\x10\x04\x12\x17\n\x13\x41\x43TOR_STATE_PAUSING\x10\x05\x12\x16\n\x12\x41\x43TOR_STATE_PAUSED\x10\x06\x12\x17\n\x13\x41\x43TOR_STATE_CRASHED\x10\x07\x12\x18\n\x14\x41\x43TOR_STATE_DELETING\x10\x08*b\n\x0cSandboxClass\x12\x1d\n\x19SANDBOX_CLASS_UNSPECIFIED\x10\x00\x12\x18\n\x14SANDBOX_CLASS_GVISOR\x10\x01\x12\x19\n\x15SANDBOX_CLASS_MICROVM\x10\x02*d\n\x0cResumeSource\x12\x1d\n\x19RESUME_SOURCE_UNSPECIFIED\x10\x00\x12\x1b\n\x17RESUME_SOURCE_COLD_BOOT\x10\x01\x12\x18\n\x14RESUME_SOURCE_GOLDEN\x10\x02*\x9a\x01\n\x12\x41\x63torMetadataField\x12$\n ACTOR_METADATA_FIELD_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x41\x43TOR_METADATA_FIELD_NAME\x10\x01\x12!\n\x1d\x41\x43TOR_METADATA_FIELD_ATESPACE\x10\x02\x12\x1c\n\x18\x41\x43TOR_METADATA_FIELD_UID\x10\x03*k\n\x17\x41\x63torCertificatePurpose\x12)\n%ACTOR_CERTIFICATE_PURPOSE_UNSPECIFIED\x10\x00\x12%\n!ACTOR_CERTIFICATE_PURPOSE_ATUNNEL\x10\x01*_\n\x0bWorkerState\x12\x1c\n\x18WORKER_STATE_UNSPECIFIED\x10\x00\x12\x17\n\x13WORKER_STATE_ACTIVE\x10\x01\x12\x19\n\x15WORKER_STATE_DRAINING\x10\x02\x32\xa5\x13\n\x07\x43ontrol\x12\x34\n\x08GetActor\x12\x17.ateapi.GetActorRequest\x1a\r.ateapi.Actor\"\x00\x12:\n\x0b\x43reateActor\x12\x1a.ateapi.CreateActorRequest\x1a\r.ateapi.Actor\"\x00\x12:\n\x0bUpdateActor\x12\x1a.ateapi.UpdateActorRequest\x1a\r.ateapi.Actor\"\x00\x12K\n\x0cSuspendActor\x12\x1b.ateapi.SuspendActorRequest\x1a\x1c.ateapi.SuspendActorResponse\"\x00\x12\x45\n\nPauseActor\x12\x19.ateapi.PauseActorRequest\x1a\x1a.ateapi.PauseActorResponse\"\x00\x12H\n\x0bResumeActor\x12\x1a.ateapi.ResumeActorRequest\x1a\x1b.ateapi.ResumeActorResponse\"\x00\x12:\n\x0b\x44\x65leteActor\x12\x1a.ateapi.DeleteActorRequest\x1a\r.ateapi.Actor\"\x00\x12S\n\x14GetActorEgressPolicy\x12#.ateapi.GetActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12Y\n\x17\x43reateActorEgressPolicy\x12&.ateapi.CreateActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12Y\n\x17UpdateActorEgressPolicy\x12&.ateapi.UpdateActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12Y\n\x17\x44\x65leteActorEgressPolicy\x12&.ateapi.DeleteActorEgressPolicyRequest\x1a\x14.ateapi.EgressPolicy\"\x00\x12K\n\x0cMintActorJWT\x12\x1b.ateapi.MintActorJWTRequest\x1a\x1c.ateapi.MintActorJWTResponse\"\x00\x12\x63\n\x14MintActorCertificate\x12#.ateapi.MintActorCertificateRequest\x1a$.ateapi.MintActorCertificateResponse\"\x00\x12\x34\n\tCreateTag\x12\x18.ateapi.CreateTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12.\n\x06GetTag\x12\x15.ateapi.GetTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12?\n\x08ListTags\x12\x17.ateapi.ListTagsRequest\x1a\x18.ateapi.ListTagsResponse\"\x00\x12\x34\n\tUpdateTag\x12\x18.ateapi.UpdateTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12\x34\n\tDeleteTag\x12\x18.ateapi.DeleteTagRequest\x1a\x0b.ateapi.Tag\"\x00\x12H\n\x0bListWorkers\x12\x1a.ateapi.ListWorkersRequest\x1a\x1b.ateapi.ListWorkersResponse\"\x00\x12\x37\n\tGetWorker\x12\x18.ateapi.GetWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12=\n\x0c\x43reateWorker\x12\x1b.ateapi.CreateWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12=\n\x0cUpdateWorker\x12\x1b.ateapi.UpdateWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12=\n\x0c\x44\x65leteWorker\x12\x1b.ateapi.DeleteWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12;\n\x0b\x44rainWorker\x12\x1a.ateapi.DrainWorkerRequest\x1a\x0e.ateapi.Worker\"\x00\x12u\n\x1aListWorkerActorAssignments\x12).ateapi.ListWorkerActorAssignmentsRequest\x1a*.ateapi.ListWorkerActorAssignmentsResponse\"\x00\x12\x45\n\nListActors\x12\x19.ateapi.ListActorsRequest\x1a\x1a.ateapi.ListActorsResponse\"\x00\x12\x43\n\x0e\x43reateAtespace\x12\x1d.ateapi.CreateAtespaceRequest\x1a\x10.ateapi.Atespace\"\x00\x12=\n\x0bGetAtespace\x12\x1a.ateapi.GetAtespaceRequest\x1a\x10.ateapi.Atespace\"\x00\x12N\n\rListAtespaces\x12\x1c.ateapi.ListAtespacesRequest\x1a\x1d.ateapi.ListAtespacesResponse\"\x00\x12\x43\n\x0e\x44\x65leteAtespace\x12\x1d.ateapi.DeleteAtespaceRequest\x1a\x10.ateapi.Atespace\"\x00\x12R\n\x13\x43reateActorTemplate\x12\".ateapi.CreateActorTemplateRequest\x1a\x15.ateapi.ActorTemplate\"\x00\x12L\n\x10GetActorTemplate\x12\x1f.ateapi.GetActorTemplateRequest\x1a\x15.ateapi.ActorTemplate\"\x00\x12]\n\x12ListActorTemplates\x12!.ateapi.ListActorTemplatesRequest\x1a\".ateapi.ListActorTemplatesResponse\"\x00\x12R\n\x13\x44\x65leteActorTemplate\x12\".ateapi.DeleteActorTemplateRequest\x1a\x15.ateapi.ActorTemplate\"\x00\x32i\n\rWorkerService\x12X\n\x11SetWorkerCapacity\x12 .ateapi.SetWorkerCapacityRequest\x1a!.ateapi.SetWorkerCapacityResponseB9Z7github.com/agent-substrate/substrate/pkg/proto/ateapipbb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -54,224 +54,224 @@ _globals['_EXTERNALVOLUME_VOLUMECONTEXTENTRY']._serialized_options = b'8\001' _globals['_WORKER_LABELSENTRY']._loaded_options = None _globals['_WORKER_LABELSENTRY']._serialized_options = b'8\001' - _globals['_SNAPSHOTCONTENTSCOPE']._serialized_start=9377 - _globals['_SNAPSHOTCONTENTSCOPE']._serialized_end=9505 - _globals['_TAGSCOPE']._serialized_start=9507 - _globals['_TAGSCOPE']._serialized_end=9593 - _globals['_ACTORSTATE']._serialized_start=9596 - _globals['_ACTORSTATE']._serialized_end=9843 - _globals['_SANDBOXCLASS']._serialized_start=9845 - _globals['_SANDBOXCLASS']._serialized_end=9943 - _globals['_RESUMESOURCE']._serialized_start=9945 - _globals['_RESUMESOURCE']._serialized_end=10045 - _globals['_ACTORMETADATAFIELD']._serialized_start=10048 - _globals['_ACTORMETADATAFIELD']._serialized_end=10202 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_start=10204 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_end=10311 - _globals['_WORKERSTATE']._serialized_start=10313 - _globals['_WORKERSTATE']._serialized_end=10408 + _globals['_SNAPSHOTCONTENTSCOPE']._serialized_start=9405 + _globals['_SNAPSHOTCONTENTSCOPE']._serialized_end=9533 + _globals['_TAGSCOPE']._serialized_start=9535 + _globals['_TAGSCOPE']._serialized_end=9621 + _globals['_ACTORSTATE']._serialized_start=9624 + _globals['_ACTORSTATE']._serialized_end=9871 + _globals['_SANDBOXCLASS']._serialized_start=9873 + _globals['_SANDBOXCLASS']._serialized_end=9971 + _globals['_RESUMESOURCE']._serialized_start=9973 + _globals['_RESUMESOURCE']._serialized_end=10073 + _globals['_ACTORMETADATAFIELD']._serialized_start=10076 + _globals['_ACTORMETADATAFIELD']._serialized_end=10230 + _globals['_ACTORCERTIFICATEPURPOSE']._serialized_start=10232 + _globals['_ACTORCERTIFICATEPURPOSE']._serialized_end=10339 + _globals['_WORKERSTATE']._serialized_start=10341 + _globals['_WORKERSTATE']._serialized_end=10436 _globals['_EXTERNALSNAPSHOT']._serialized_start=86 - _globals['_EXTERNALSNAPSHOT']._serialized_end=179 - _globals['_LOCALSNAPSHOTINFO']._serialized_start=182 - _globals['_LOCALSNAPSHOTINFO']._serialized_end=316 - _globals['_SELECTOR']._serialized_start=318 - _globals['_SELECTOR']._serialized_end=437 - _globals['_SELECTOR_MATCHLABELSENTRY']._serialized_start=387 - _globals['_SELECTOR_MATCHLABELSENTRY']._serialized_end=437 - _globals['_RESOURCEMETADATA']._serialized_start=440 - _globals['_RESOURCEMETADATA']._serialized_end=618 - _globals['_EXTERNALVOLUME']._serialized_start=621 - _globals['_EXTERNALVOLUME']._serialized_end=969 - _globals['_EXTERNALVOLUME_VOLUMECONTEXTENTRY']._serialized_start=822 - _globals['_EXTERNALVOLUME_VOLUMECONTEXTENTRY']._serialized_end=874 - _globals['_EXTERNALVOLUME_STATUS']._serialized_start=876 - _globals['_EXTERNALVOLUME_STATUS']._serialized_end=969 - _globals['_ACTOR']._serialized_start=972 - _globals['_ACTOR']._serialized_end=1185 - _globals['_EGRESSPOLICY']._serialized_start=1187 - _globals['_EGRESSPOLICY']._serialized_end=1280 - _globals['_EGRESSRULE']._serialized_start=1282 - _globals['_EGRESSRULE']._serialized_end=1405 - _globals['_HOSTNAMERULE']._serialized_start=1407 - _globals['_HOSTNAMERULE']._serialized_end=1483 - _globals['_CIDRRULE']._serialized_start=1485 - _globals['_CIDRRULE']._serialized_end=1510 - _globals['_EGRESSRULEEFFECTS']._serialized_start=1512 - _globals['_EGRESSRULEEFFECTS']._serialized_end=1597 - _globals['_CREDENTIALHEADERINJECTION']._serialized_start=1599 - _globals['_CREDENTIALHEADERINJECTION']._serialized_end=1682 - _globals['_ACTORSTATUS']._serialized_start=1685 - _globals['_ACTORSTATUS']._serialized_end=2053 - _globals['_WORKERASSIGNMENT']._serialized_start=2056 - _globals['_WORKERASSIGNMENT']._serialized_end=2242 - _globals['_TAGSTATUS']._serialized_start=2245 - _globals['_TAGSTATUS']._serialized_end=2380 - _globals['_TAG']._serialized_start=2383 - _globals['_TAG']._serialized_end=2541 - _globals['_ATESPACE']._serialized_start=2543 - _globals['_ATESPACE']._serialized_end=2597 - _globals['_OBJECTREF']._serialized_start=2599 - _globals['_OBJECTREF']._serialized_end=2642 - _globals['_ACTORTEMPLATE']._serialized_start=2645 - _globals['_ACTORTEMPLATE']._serialized_end=3000 - _globals['_RESOURCES']._serialized_start=3002 - _globals['_RESOURCES']._serialized_end=3045 - _globals['_LIMITS']._serialized_start=3047 - _globals['_LIMITS']._serialized_end=3087 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_start=3090 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_end=3235 - _globals['_ACTORTEMPLATESTATUS']._serialized_start=3237 - _globals['_ACTORTEMPLATESTATUS']._serialized_end=3320 - _globals['_SANDBOXCONFIG']._serialized_start=3322 - _globals['_SANDBOXCONFIG']._serialized_end=3403 - _globals['_SNAPSHOTSCONFIG']._serialized_start=3406 - _globals['_SNAPSHOTSCONFIG']._serialized_end=3589 - _globals['_ONRESUMECONFIG']._serialized_start=3591 - _globals['_ONRESUMECONFIG']._serialized_end=3648 - _globals['_CONTAINER']._serialized_start=3651 - _globals['_CONTAINER']._serialized_end=3925 - _globals['_SECURITYCONTEXT']._serialized_start=3927 - _globals['_SECURITYCONTEXT']._serialized_end=3988 - _globals['_CAPABILITIES']._serialized_start=3990 - _globals['_CAPABILITIES']._serialized_end=4031 - _globals['_ENVVAR']._serialized_start=4033 - _globals['_ENVVAR']._serialized_end=4070 - _globals['_CONTAINERREADYZ']._serialized_start=4072 - _globals['_CONTAINERREADYZ']._serialized_end=4155 - _globals['_HTTPGETACTION']._serialized_start=4157 - _globals['_HTTPGETACTION']._serialized_end=4200 - _globals['_VOLUME']._serialized_start=4203 - _globals['_VOLUME']._serialized_end=4439 - _globals['_IMAGEVOLUMESOURCE']._serialized_start=4441 - _globals['_IMAGEVOLUMESOURCE']._serialized_end=4479 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_start=4481 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_end=4505 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_start=4507 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_end=4577 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_start=4579 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_end=4655 - _globals['_SYSTEMINFODATASOURCE']._serialized_start=4658 - _globals['_SYSTEMINFODATASOURCE']._serialized_end=4790 - _globals['_ACTORMETADATADATASOURCE']._serialized_start=4792 - _globals['_ACTORMETADATADATASOURCE']._serialized_end=4859 - _globals['_ACTORMETADATAITEM']._serialized_start=4861 - _globals['_ACTORMETADATAITEM']._serialized_end=4937 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_start=4939 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_end=4990 - _globals['_VOLUMEMOUNT']._serialized_start=4992 - _globals['_VOLUMEMOUNT']._serialized_end=5039 - _globals['_CREATEATESPACEREQUEST']._serialized_start=5041 - _globals['_CREATEATESPACEREQUEST']._serialized_end=5100 - _globals['_GETATESPACEREQUEST']._serialized_start=5102 - _globals['_GETATESPACEREQUEST']._serialized_end=5159 - _globals['_LISTATESPACESREQUEST']._serialized_start=5161 - _globals['_LISTATESPACESREQUEST']._serialized_end=5222 - _globals['_LISTATESPACESRESPONSE']._serialized_start=5224 - _globals['_LISTATESPACESRESPONSE']._serialized_end=5309 - _globals['_DELETEATESPACEREQUEST']._serialized_start=5311 - _globals['_DELETEATESPACEREQUEST']._serialized_end=5371 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_start=5373 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_end=5448 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_start=5450 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_end=5518 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_start=5520 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_end=5604 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_start=5606 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_end=5707 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_start=5709 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_end=5780 - _globals['_GETACTORREQUEST']._serialized_start=5782 - _globals['_GETACTORREQUEST']._serialized_end=5833 - _globals['_CREATEACTORREQUEST']._serialized_start=5835 - _globals['_CREATEACTORREQUEST']._serialized_end=5885 - _globals['_UPDATEACTORREQUEST']._serialized_start=5887 - _globals['_UPDATEACTORREQUEST']._serialized_end=5937 - _globals['_SUSPENDACTORREQUEST']._serialized_start=5939 - _globals['_SUSPENDACTORREQUEST']._serialized_end=5994 - _globals['_SUSPENDACTORRESPONSE']._serialized_start=5996 - _globals['_SUSPENDACTORRESPONSE']._serialized_end=6048 - _globals['_PAUSEACTORREQUEST']._serialized_start=6050 - _globals['_PAUSEACTORREQUEST']._serialized_end=6103 - _globals['_PAUSEACTORRESPONSE']._serialized_start=6105 - _globals['_PAUSEACTORRESPONSE']._serialized_end=6155 - _globals['_RESUMEACTORREQUEST']._serialized_start=6157 - _globals['_RESUMEACTORREQUEST']._serialized_end=6211 - _globals['_RESUMEACTORRESPONSE']._serialized_start=6213 - _globals['_RESUMEACTORRESPONSE']._serialized_end=6281 - _globals['_DELETEACTORREQUEST']._serialized_start=6283 - _globals['_DELETEACTORREQUEST']._serialized_end=6356 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_start=6358 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_end=6421 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_start=6423 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_end=6534 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_start=6536 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_end=6647 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_start=6649 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_end=6715 - _globals['_GETTAGREQUEST']._serialized_start=6717 - _globals['_GETTAGREQUEST']._serialized_end=6764 - _globals['_MINTACTORJWTREQUEST']._serialized_start=6766 - _globals['_MINTACTORJWTREQUEST']._serialized_end=6858 - _globals['_MINTACTORJWTRESPONSE']._serialized_start=6860 - _globals['_MINTACTORJWTRESPONSE']._serialized_end=6901 - _globals['_MINTACTORCERTIFICATEREQUEST']._serialized_start=6904 - _globals['_MINTACTORCERTIFICATEREQUEST']._serialized_end=7073 - _globals['_MINTACTORCERTIFICATERESPONSE']._serialized_start=7075 - _globals['_MINTACTORCERTIFICATERESPONSE']._serialized_end=7133 - _globals['_GETACTORSNAPSHOTREQUEST']._serialized_start=7135 - _globals['_GETACTORSNAPSHOTREQUEST']._serialized_end=7203 - _globals['_GETACTORSNAPSHOTTAGREQUEST']._serialized_start=7205 - _globals['_GETACTORSNAPSHOTTAGREQUEST']._serialized_end=7280 - _globals['_LISTTAGSREQUEST']._serialized_start=7282 - _globals['_LISTTAGSREQUEST']._serialized_end=7356 - _globals['_LISTTAGSRESPONSE']._serialized_start=7358 - _globals['_LISTTAGSRESPONSE']._serialized_end=7428 - _globals['_CREATETAGREQUEST']._serialized_start=7430 - _globals['_CREATETAGREQUEST']._serialized_end=7474 - _globals['_UPDATETAGREQUEST']._serialized_start=7476 - _globals['_UPDATETAGREQUEST']._serialized_end=7520 - _globals['_DELETETAGREQUEST']._serialized_start=7522 - _globals['_DELETETAGREQUEST']._serialized_end=7572 - _globals['_DELETEOPTIONS']._serialized_start=7574 - _globals['_DELETEOPTIONS']._serialized_end=7619 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_start=7621 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_end=7730 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_start=7732 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_end=7845 - _globals['_LISTWORKERSREQUEST']._serialized_start=7847 - _globals['_LISTWORKERSREQUEST']._serialized_end=7906 - _globals['_LISTWORKERSRESPONSE']._serialized_start=7908 - _globals['_LISTWORKERSRESPONSE']._serialized_end=7987 - _globals['_GETWORKERREQUEST']._serialized_start=7989 - _globals['_GETWORKERREQUEST']._serialized_end=8042 - _globals['_CREATEWORKERREQUEST']._serialized_start=8044 - _globals['_CREATEWORKERREQUEST']._serialized_end=8097 - _globals['_UPDATEWORKERREQUEST']._serialized_start=8099 - _globals['_UPDATEWORKERREQUEST']._serialized_end=8152 - _globals['_DELETEWORKERREQUEST']._serialized_start=8154 - _globals['_DELETEWORKERREQUEST']._serialized_end=8250 - _globals['_DRAINWORKERREQUEST']._serialized_start=8252 - _globals['_DRAINWORKERREQUEST']._serialized_end=8307 - _globals['_LISTACTORSREQUEST']._serialized_start=8309 - _globals['_LISTACTORSREQUEST']._serialized_end=8385 - _globals['_LISTACTORSRESPONSE']._serialized_start=8387 - _globals['_LISTACTORSRESPONSE']._serialized_end=8463 - _globals['_WORKER']._serialized_start=8466 - _globals['_WORKER']._serialized_end=8792 - _globals['_WORKER_LABELSENTRY']._serialized_start=8747 - _globals['_WORKER_LABELSENTRY']._serialized_end=8792 - _globals['_WORKERSTATUS']._serialized_start=8795 - _globals['_WORKERSTATUS']._serialized_end=8932 - _globals['_WORKERRESOURCES']._serialized_start=8934 - _globals['_WORKERRESOURCES']._serialized_end=9005 - _globals['_ACTORASSIGNMENT']._serialized_start=9008 - _globals['_ACTORASSIGNMENT']._serialized_end=9207 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_start=9209 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_end=9313 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_start=9315 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_end=9374 - _globals['_CONTROL']._serialized_start=10411 - _globals['_CONTROL']._serialized_end=12880 - _globals['_WORKERSERVICE']._serialized_start=12882 - _globals['_WORKERSERVICE']._serialized_end=12987 + _globals['_EXTERNALSNAPSHOT']._serialized_end=207 + _globals['_LOCALSNAPSHOTINFO']._serialized_start=210 + _globals['_LOCALSNAPSHOTINFO']._serialized_end=344 + _globals['_SELECTOR']._serialized_start=346 + _globals['_SELECTOR']._serialized_end=465 + _globals['_SELECTOR_MATCHLABELSENTRY']._serialized_start=415 + _globals['_SELECTOR_MATCHLABELSENTRY']._serialized_end=465 + _globals['_RESOURCEMETADATA']._serialized_start=468 + _globals['_RESOURCEMETADATA']._serialized_end=646 + _globals['_EXTERNALVOLUME']._serialized_start=649 + _globals['_EXTERNALVOLUME']._serialized_end=997 + _globals['_EXTERNALVOLUME_VOLUMECONTEXTENTRY']._serialized_start=850 + _globals['_EXTERNALVOLUME_VOLUMECONTEXTENTRY']._serialized_end=902 + _globals['_EXTERNALVOLUME_STATUS']._serialized_start=904 + _globals['_EXTERNALVOLUME_STATUS']._serialized_end=997 + _globals['_ACTOR']._serialized_start=1000 + _globals['_ACTOR']._serialized_end=1213 + _globals['_EGRESSPOLICY']._serialized_start=1215 + _globals['_EGRESSPOLICY']._serialized_end=1308 + _globals['_EGRESSRULE']._serialized_start=1310 + _globals['_EGRESSRULE']._serialized_end=1433 + _globals['_HOSTNAMERULE']._serialized_start=1435 + _globals['_HOSTNAMERULE']._serialized_end=1511 + _globals['_CIDRRULE']._serialized_start=1513 + _globals['_CIDRRULE']._serialized_end=1538 + _globals['_EGRESSRULEEFFECTS']._serialized_start=1540 + _globals['_EGRESSRULEEFFECTS']._serialized_end=1625 + _globals['_CREDENTIALHEADERINJECTION']._serialized_start=1627 + _globals['_CREDENTIALHEADERINJECTION']._serialized_end=1710 + _globals['_ACTORSTATUS']._serialized_start=1713 + _globals['_ACTORSTATUS']._serialized_end=2081 + _globals['_WORKERASSIGNMENT']._serialized_start=2084 + _globals['_WORKERASSIGNMENT']._serialized_end=2270 + _globals['_TAGSTATUS']._serialized_start=2273 + _globals['_TAGSTATUS']._serialized_end=2408 + _globals['_TAG']._serialized_start=2411 + _globals['_TAG']._serialized_end=2569 + _globals['_ATESPACE']._serialized_start=2571 + _globals['_ATESPACE']._serialized_end=2625 + _globals['_OBJECTREF']._serialized_start=2627 + _globals['_OBJECTREF']._serialized_end=2670 + _globals['_ACTORTEMPLATE']._serialized_start=2673 + _globals['_ACTORTEMPLATE']._serialized_end=3028 + _globals['_RESOURCES']._serialized_start=3030 + _globals['_RESOURCES']._serialized_end=3073 + _globals['_LIMITS']._serialized_start=3075 + _globals['_LIMITS']._serialized_end=3115 + _globals['_GOLDENSNAPSHOTSTATUS']._serialized_start=3118 + _globals['_GOLDENSNAPSHOTSTATUS']._serialized_end=3263 + _globals['_ACTORTEMPLATESTATUS']._serialized_start=3265 + _globals['_ACTORTEMPLATESTATUS']._serialized_end=3348 + _globals['_SANDBOXCONFIG']._serialized_start=3350 + _globals['_SANDBOXCONFIG']._serialized_end=3431 + _globals['_SNAPSHOTSCONFIG']._serialized_start=3434 + _globals['_SNAPSHOTSCONFIG']._serialized_end=3617 + _globals['_ONRESUMECONFIG']._serialized_start=3619 + _globals['_ONRESUMECONFIG']._serialized_end=3676 + _globals['_CONTAINER']._serialized_start=3679 + _globals['_CONTAINER']._serialized_end=3953 + _globals['_SECURITYCONTEXT']._serialized_start=3955 + _globals['_SECURITYCONTEXT']._serialized_end=4016 + _globals['_CAPABILITIES']._serialized_start=4018 + _globals['_CAPABILITIES']._serialized_end=4059 + _globals['_ENVVAR']._serialized_start=4061 + _globals['_ENVVAR']._serialized_end=4098 + _globals['_CONTAINERREADYZ']._serialized_start=4100 + _globals['_CONTAINERREADYZ']._serialized_end=4183 + _globals['_HTTPGETACTION']._serialized_start=4185 + _globals['_HTTPGETACTION']._serialized_end=4228 + _globals['_VOLUME']._serialized_start=4231 + _globals['_VOLUME']._serialized_end=4467 + _globals['_IMAGEVOLUMESOURCE']._serialized_start=4469 + _globals['_IMAGEVOLUMESOURCE']._serialized_end=4507 + _globals['_DURABLEDIRVOLUMESOURCE']._serialized_start=4509 + _globals['_DURABLEDIRVOLUMESOURCE']._serialized_end=4533 + _globals['_EXTERNALVOLUMETEMPLATE']._serialized_start=4535 + _globals['_EXTERNALVOLUMETEMPLATE']._serialized_end=4605 + _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_start=4607 + _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_end=4683 + _globals['_SYSTEMINFODATASOURCE']._serialized_start=4686 + _globals['_SYSTEMINFODATASOURCE']._serialized_end=4818 + _globals['_ACTORMETADATADATASOURCE']._serialized_start=4820 + _globals['_ACTORMETADATADATASOURCE']._serialized_end=4887 + _globals['_ACTORMETADATAITEM']._serialized_start=4889 + _globals['_ACTORMETADATAITEM']._serialized_end=4965 + _globals['_TRUSTBUNDLEDATASOURCE']._serialized_start=4967 + _globals['_TRUSTBUNDLEDATASOURCE']._serialized_end=5018 + _globals['_VOLUMEMOUNT']._serialized_start=5020 + _globals['_VOLUMEMOUNT']._serialized_end=5067 + _globals['_CREATEATESPACEREQUEST']._serialized_start=5069 + _globals['_CREATEATESPACEREQUEST']._serialized_end=5128 + _globals['_GETATESPACEREQUEST']._serialized_start=5130 + _globals['_GETATESPACEREQUEST']._serialized_end=5187 + _globals['_LISTATESPACESREQUEST']._serialized_start=5189 + _globals['_LISTATESPACESREQUEST']._serialized_end=5250 + _globals['_LISTATESPACESRESPONSE']._serialized_start=5252 + _globals['_LISTATESPACESRESPONSE']._serialized_end=5337 + _globals['_DELETEATESPACEREQUEST']._serialized_start=5339 + _globals['_DELETEATESPACEREQUEST']._serialized_end=5399 + _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_start=5401 + _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_end=5476 + _globals['_GETACTORTEMPLATEREQUEST']._serialized_start=5478 + _globals['_GETACTORTEMPLATEREQUEST']._serialized_end=5546 + _globals['_LISTACTORTEMPLATESREQUEST']._serialized_start=5548 + _globals['_LISTACTORTEMPLATESREQUEST']._serialized_end=5632 + _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_start=5634 + _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_end=5735 + _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_start=5737 + _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_end=5808 + _globals['_GETACTORREQUEST']._serialized_start=5810 + _globals['_GETACTORREQUEST']._serialized_end=5861 + _globals['_CREATEACTORREQUEST']._serialized_start=5863 + _globals['_CREATEACTORREQUEST']._serialized_end=5913 + _globals['_UPDATEACTORREQUEST']._serialized_start=5915 + _globals['_UPDATEACTORREQUEST']._serialized_end=5965 + _globals['_SUSPENDACTORREQUEST']._serialized_start=5967 + _globals['_SUSPENDACTORREQUEST']._serialized_end=6022 + _globals['_SUSPENDACTORRESPONSE']._serialized_start=6024 + _globals['_SUSPENDACTORRESPONSE']._serialized_end=6076 + _globals['_PAUSEACTORREQUEST']._serialized_start=6078 + _globals['_PAUSEACTORREQUEST']._serialized_end=6131 + _globals['_PAUSEACTORRESPONSE']._serialized_start=6133 + _globals['_PAUSEACTORRESPONSE']._serialized_end=6183 + _globals['_RESUMEACTORREQUEST']._serialized_start=6185 + _globals['_RESUMEACTORREQUEST']._serialized_end=6239 + _globals['_RESUMEACTORRESPONSE']._serialized_start=6241 + _globals['_RESUMEACTORRESPONSE']._serialized_end=6309 + _globals['_DELETEACTORREQUEST']._serialized_start=6311 + _globals['_DELETEACTORREQUEST']._serialized_end=6384 + _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_start=6386 + _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_end=6449 + _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_start=6451 + _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_end=6562 + _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_start=6564 + _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_end=6675 + _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_start=6677 + _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_end=6743 + _globals['_GETTAGREQUEST']._serialized_start=6745 + _globals['_GETTAGREQUEST']._serialized_end=6792 + _globals['_MINTACTORJWTREQUEST']._serialized_start=6794 + _globals['_MINTACTORJWTREQUEST']._serialized_end=6886 + _globals['_MINTACTORJWTRESPONSE']._serialized_start=6888 + _globals['_MINTACTORJWTRESPONSE']._serialized_end=6929 + _globals['_MINTACTORCERTIFICATEREQUEST']._serialized_start=6932 + _globals['_MINTACTORCERTIFICATEREQUEST']._serialized_end=7101 + _globals['_MINTACTORCERTIFICATERESPONSE']._serialized_start=7103 + _globals['_MINTACTORCERTIFICATERESPONSE']._serialized_end=7161 + _globals['_GETACTORSNAPSHOTREQUEST']._serialized_start=7163 + _globals['_GETACTORSNAPSHOTREQUEST']._serialized_end=7231 + _globals['_GETACTORSNAPSHOTTAGREQUEST']._serialized_start=7233 + _globals['_GETACTORSNAPSHOTTAGREQUEST']._serialized_end=7308 + _globals['_LISTTAGSREQUEST']._serialized_start=7310 + _globals['_LISTTAGSREQUEST']._serialized_end=7384 + _globals['_LISTTAGSRESPONSE']._serialized_start=7386 + _globals['_LISTTAGSRESPONSE']._serialized_end=7456 + _globals['_CREATETAGREQUEST']._serialized_start=7458 + _globals['_CREATETAGREQUEST']._serialized_end=7502 + _globals['_UPDATETAGREQUEST']._serialized_start=7504 + _globals['_UPDATETAGREQUEST']._serialized_end=7548 + _globals['_DELETETAGREQUEST']._serialized_start=7550 + _globals['_DELETETAGREQUEST']._serialized_end=7600 + _globals['_DELETEOPTIONS']._serialized_start=7602 + _globals['_DELETEOPTIONS']._serialized_end=7647 + _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_start=7649 + _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_end=7758 + _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_start=7760 + _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_end=7873 + _globals['_LISTWORKERSREQUEST']._serialized_start=7875 + _globals['_LISTWORKERSREQUEST']._serialized_end=7934 + _globals['_LISTWORKERSRESPONSE']._serialized_start=7936 + _globals['_LISTWORKERSRESPONSE']._serialized_end=8015 + _globals['_GETWORKERREQUEST']._serialized_start=8017 + _globals['_GETWORKERREQUEST']._serialized_end=8070 + _globals['_CREATEWORKERREQUEST']._serialized_start=8072 + _globals['_CREATEWORKERREQUEST']._serialized_end=8125 + _globals['_UPDATEWORKERREQUEST']._serialized_start=8127 + _globals['_UPDATEWORKERREQUEST']._serialized_end=8180 + _globals['_DELETEWORKERREQUEST']._serialized_start=8182 + _globals['_DELETEWORKERREQUEST']._serialized_end=8278 + _globals['_DRAINWORKERREQUEST']._serialized_start=8280 + _globals['_DRAINWORKERREQUEST']._serialized_end=8335 + _globals['_LISTACTORSREQUEST']._serialized_start=8337 + _globals['_LISTACTORSREQUEST']._serialized_end=8413 + _globals['_LISTACTORSRESPONSE']._serialized_start=8415 + _globals['_LISTACTORSRESPONSE']._serialized_end=8491 + _globals['_WORKER']._serialized_start=8494 + _globals['_WORKER']._serialized_end=8820 + _globals['_WORKER_LABELSENTRY']._serialized_start=8775 + _globals['_WORKER_LABELSENTRY']._serialized_end=8820 + _globals['_WORKERSTATUS']._serialized_start=8823 + _globals['_WORKERSTATUS']._serialized_end=8960 + _globals['_WORKERRESOURCES']._serialized_start=8962 + _globals['_WORKERRESOURCES']._serialized_end=9033 + _globals['_ACTORASSIGNMENT']._serialized_start=9036 + _globals['_ACTORASSIGNMENT']._serialized_end=9235 + _globals['_SETWORKERCAPACITYREQUEST']._serialized_start=9237 + _globals['_SETWORKERCAPACITYREQUEST']._serialized_end=9341 + _globals['_SETWORKERCAPACITYRESPONSE']._serialized_start=9343 + _globals['_SETWORKERCAPACITYRESPONSE']._serialized_end=9402 + _globals['_CONTROL']._serialized_start=10439 + _globals['_CONTROL']._serialized_end=12908 + _globals['_WORKERSERVICE']._serialized_start=12910 + _globals['_WORKERSERVICE']._serialized_end=13015 # @@protoc_insertion_point(module_scope) diff --git a/cmd/ateapi/internal/controlapi/actor.go b/cmd/ateapi/internal/controlapi/actor.go index 0049eda94..e7e0f8be5 100644 --- a/cmd/ateapi/internal/controlapi/actor.go +++ b/cmd/ateapi/internal/controlapi/actor.go @@ -140,6 +140,7 @@ func (s *ServiceImpl) CreateActor(ctx context.Context, inActor *ateapipb.Actor) // repoint before that first resume reads as "no guest state" instead of // "replaced template", and the resume restores the old template's // memory and rootfs in full instead of the volume data alone. + outActor.Status.ExternalSnapshot.ActorTemplateUid = sourceTag.GetStatus().GetActorTemplateUid() outActor.Status.CurrentActorTemplateUid = sourceTag.GetStatus().GetActorTemplateUid() } if errs := validateActorUpdate(ctx, field.NewPath("actor"), outActor, inActor, true); len(errs) > 0 { diff --git a/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go b/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go index 14290fdd7..5b8081f78 100644 --- a/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go +++ b/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go @@ -72,7 +72,7 @@ func TestCreateActor_Success(t *testing.T) { Status: &ateapipb.ActorStatus{ State: ateapipb.ActorState_ACTOR_STATE_SUSPENDED, CurrentActorTemplateUid: tmpl.GetMetadata().GetUid(), - ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL}, + ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, ActorTemplateUid: tmpl.GetMetadata().GetUid()}, }, WorkerSelector: &ateapipb.Selector{MatchLabels: map[string]string{"tier": "free"}}, } @@ -694,7 +694,7 @@ func TestUpdateActor_Success(t *testing.T) { Status: &ateapipb.ActorStatus{ State: ateapipb.ActorState_ACTOR_STATE_SUSPENDED, CurrentActorTemplateUid: tmpl.GetMetadata().GetUid(), - ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL}, + ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, ActorTemplateUid: tmpl.GetMetadata().GetUid()}, }, WorkerSelector: &ateapipb.Selector{ MatchLabels: map[string]string{"tier": "paid"}, @@ -841,7 +841,7 @@ func TestUpdateActor(t *testing.T) { Status: &ateapipb.ActorStatus{ State: ateapipb.ActorState_ACTOR_STATE_SUSPENDED, CurrentActorTemplateUid: tmpl.GetMetadata().GetUid(), - ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL}, + ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, ActorTemplateUid: tmpl.GetMetadata().GetUid()}, }, WorkerSelector: &ateapipb.Selector{ MatchLabels: map[string]string{"tier": "paid"}, @@ -1812,7 +1812,7 @@ func TestResumeActor(t *testing.T) { Status: &ateapipb.ActorStatus{ State: ateapipb.ActorState_ACTOR_STATE_RUNNING, CurrentActorTemplateUid: tmpl.GetMetadata().GetUid(), - ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL}, + ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, ActorTemplateUid: tmpl.GetMetadata().GetUid()}, WorkerAssignment: &ateapipb.WorkerAssignment{ Worker: &ateapipb.ObjectRef{Name: podUID}, WorkerNamespace: ns, @@ -2332,8 +2332,12 @@ func TestSuspendActor(t *testing.T) { Metadata: &ateapipb.ResourceMetadata{Name: name, Atespace: testAtespace}, ActorTemplate: &ateapipb.ObjectRef{Atespace: testAtespace, Name: "tmpl1"}, Status: &ateapipb.ActorStatus{ - State: ateapipb.ActorState_ACTOR_STATE_SUSPENDED, - ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: snapshotURI, ContentScope: sourceActor.GetStatus().GetExternalSnapshot().GetContentScope()}, + State: ateapipb.ActorState_ACTOR_STATE_SUSPENDED, + ExternalSnapshot: &ateapipb.ExternalSnapshot{ + SnapshotUri: snapshotURI, + ContentScope: sourceActor.GetStatus().GetExternalSnapshot().GetContentScope(), + ActorTemplateUid: tmpl.GetMetadata().GetUid(), + }, CurrentActorTemplateUid: tmpl.GetMetadata().GetUid(), }, } @@ -2494,6 +2498,78 @@ func TestResumeActor_RepointTemplateBeforeResume(t *testing.T) { } } +// TestResumeActor_PausedAfterRepointUsesLocalProvenance verifies that an actor +// paused after a template repoint restores from its pause checkpoint in FULL, +// not DATA. At that point the actor holds an external snapshot captured on v1 +// and a local checkpoint captured on v2; judging the local restore by the +// external snapshot's provenance would wrongly discard the v2 memory image. +func TestResumeActor_PausedAfterRepointUsesLocalProvenance(t *testing.T) { + ns := namespaceForTest("ns-repoint-pause") + tc := setupTest(t, ns) + defer tc.cleanup() + + ctx := context.Background() + tmpl := createTemplate(t, tc, ns) + tmpl2 := proto.Clone(tmpl).(*ateapipb.ActorTemplate) + tmpl2.Metadata = &ateapipb.ResourceMetadata{Atespace: testAtespace, Name: "tmpl2"} + tmpl2.Status = nil + if _, err := tc.client.CreateActorTemplate(ctx, &ateapipb.CreateActorTemplateRequest{ActorTemplate: tmpl2}); err != nil { + t.Fatalf("CreateActorTemplate(tmpl2) failed: %v", err) + } + worker := createWorkerPod(t, tc, ns, "worker-1", "node1", "pool1") + + const name = "actor-1" + actorRef := &ateapipb.ObjectRef{Atespace: testAtespace, Name: name} + if _, err := tc.client.CreateActor(ctx, &ateapipb.CreateActorRequest{Actor: &ateapipb.Actor{ + Metadata: &ateapipb.ResourceMetadata{Atespace: testAtespace, Name: name}, + ActorTemplate: &ateapipb.ObjectRef{Atespace: testAtespace, Name: "tmpl1"}, + }}); err != nil { + t.Fatalf("CreateActor failed: %v", err) + } + if _, err := tc.client.ResumeActor(ctx, &ateapipb.ResumeActorRequest{Actor: actorRef}); err != nil { + t.Fatalf("ResumeActor(v1) failed: %v", err) + } + suspended, err := tc.client.SuspendActor(ctx, &ateapipb.SuspendActorRequest{Actor: actorRef}) + if err != nil { + t.Fatalf("SuspendActor(v1) failed: %v", err) + } + waitForWorkerAvailable(t, tc, worker) + + // Repoint at v2 while suspended; the external snapshot stays on v1. + toUpdate := proto.Clone(suspended.GetActor()).(*ateapipb.Actor) + toUpdate.ActorTemplate = &ateapipb.ObjectRef{Atespace: testAtespace, Name: "tmpl2"} + if _, err := tc.client.UpdateActor(ctx, &ateapipb.UpdateActorRequest{Actor: toUpdate}); err != nil { + t.Fatalf("UpdateActor(tmpl2) failed: %v", err) + } + + // Resume on v2 (this restore is DATA, from the v1 external snapshot), then + // pause; the pause checkpoint is captured on v2 while the external + // snapshot still says v1. + if _, err := tc.client.ResumeActor(ctx, &ateapipb.ResumeActorRequest{Actor: actorRef}); err != nil { + t.Fatalf("ResumeActor(v2 from v1 snapshot) failed: %v", err) + } + if got := tc.fakeAtelet.lastRestoreRequest().GetScope(); got != ateletpb.SnapshotScope_SNAPSHOT_SCOPE_DATA { + t.Fatalf("first resume on v2 had scope = %v, want DATA", got) + } + if _, err := tc.client.PauseActor(ctx, &ateapipb.PauseActorRequest{Actor: actorRef}); err != nil { + t.Fatalf("PauseActor failed: %v", err) + } + waitForWorkerAvailable(t, tc, worker) + + // Resume from PAUSED: the local checkpoint was captured on v2 and the + // actor's template is v2, so the restore must be FULL. + if _, err := tc.client.ResumeActor(ctx, &ateapipb.ResumeActorRequest{Actor: actorRef}); err != nil { + t.Fatalf("ResumeActor(from v2 pause) failed: %v", err) + } + restoreReq := tc.fakeAtelet.lastRestoreRequest() + if got := restoreReq.GetType(); got != ateletpb.CheckpointType_CHECKPOINT_TYPE_LOCAL { + t.Errorf("restore request type = %v, want LOCAL", got) + } + if got := restoreReq.GetScope(); got != ateletpb.SnapshotScope_SNAPSHOT_SCOPE_FULL { + t.Errorf("restore request scope = %v, want FULL (local checkpoint was captured on v2)", got) + } +} + // TestPauseActor tests the full workflow of pausing a running actor. // Workflow: // 1. Creates a mock ActorTemplate. @@ -2558,7 +2634,7 @@ func TestPauseActor(t *testing.T) { ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, }, CurrentActorTemplateUid: tmpl.GetMetadata().GetUid(), - ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL}, + ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: goldenSnapshotURI(t), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, ActorTemplateUid: tmpl.GetMetadata().GetUid()}, }, } diff --git a/cmd/ateapi/internal/controlapi/workflow_resume.go b/cmd/ateapi/internal/controlapi/workflow_resume.go index 773a19a9e..ad6a70687 100644 --- a/cmd/ateapi/internal/controlapi/workflow_resume.go +++ b/cmd/ateapi/internal/controlapi/workflow_resume.go @@ -48,8 +48,8 @@ type resumeSnapshotSource struct { // selects the golden snapshot as the boot source for the pending restore: // restore then combines the golden snapshot with the actor's data. GoldenSnapshotURI resources.SnapshotURI - // TemplateReplaced is true when the snapshot's recorded template UID - // differs from the actor's current template. + // TemplateReplaced is true when the external snapshot's recorded template + // UID differs from the actor's current template. TemplateReplaced bool } @@ -184,13 +184,8 @@ func (w *ActorWorkflow) loadActorForResume(ctx context.Context, actorRef resourc return nil, nil, src, status.Errorf(codes.DataLoss, "Actor %s external snapshot: %v", actorRef, err) } src.Scope = actor.GetStatus().GetExternalSnapshot().GetContentScope() - // The Actor records the template its guest state was built on; a - // different UID on its current template means it was repointed since - // the capture. - // TODO: Disallow updating the ActorTemplate ID for paused actors here - // as well; it is already disallowed at admission time. - builtOnTemplateUID := actor.GetStatus().GetCurrentActorTemplateUid() - src.TemplateReplaced = builtOnTemplateUID != "" && builtOnTemplateUID != actorTemplate.GetMetadata().GetUid() + capturedUnder := actor.GetStatus().GetExternalSnapshot().GetActorTemplateUid() + src.TemplateReplaced = capturedUnder != "" && capturedUnder != actorTemplate.GetMetadata().GetUid() } // The template's onResume configuration selects the boot source for the @@ -701,8 +696,6 @@ func (w *ActorWorkflow) ensureAteletRestored(ctx context.Context, actorRef resou // loadActorForResume resolved a golden URI per the template's onResume // configuration, else what the pause captured. switch { - case src.TemplateReplaced: - req.Scope = ateletpb.SnapshotScope_SNAPSHOT_SCOPE_DATA case !src.GoldenSnapshotURI.IsZero(): req.Scope = ateletpb.SnapshotScope_SNAPSHOT_SCOPE_DATA_ON_GOLDEN req.GoldenSnapshotUri = src.GoldenSnapshotURI.String() diff --git a/cmd/ateapi/internal/controlapi/workflow_resume_test.go b/cmd/ateapi/internal/controlapi/workflow_resume_test.go index f778d4efb..464d13255 100644 --- a/cmd/ateapi/internal/controlapi/workflow_resume_test.go +++ b/cmd/ateapi/internal/controlapi/workflow_resume_test.go @@ -1090,25 +1090,38 @@ func TestLoadActorForResume_DoesNotDefaultGolden(t *testing.T) { } // TestLoadActorForResume_TemplateReplaced covers the detection of a repointed -// actor: the actor records the template UID its guest state was built on, and -// a mismatch with its current template marks the source TemplateReplaced, -// forcing the restore to data-only. +// actor: when ExternalSnapshot.actor_template_uid differs from the actor's +// current template UID, TemplateReplaced is set so the external restore +// downgrades to data-only. func TestLoadActorForResume_TemplateReplaced(t *testing.T) { actorRef := resources.ActorRef{Atespace: "team-a", Name: "id1"} + // "current" stands for the created template's own UID. + const current = "current" + tests := []struct { - name string - // builtOnTemplateUID seeds the template UID the actor's guest state - // was built on; "current" stands for the created template's own UID, - // "" leaves the field unset (an actor from before it was recorded). - builtOnTemplateUID string - noSnapshot bool - want bool + name string + snapshotUID string + noSnapshot bool + want bool }{ - {name: "snapshot taken under the current template", builtOnTemplateUID: "current", want: false}, - {name: "snapshot taken under a replaced template", builtOnTemplateUID: "some-other-uid", want: true}, - {name: "snapshot without a recorded template UID", builtOnTemplateUID: "", want: false}, - {name: "no durable snapshot", noSnapshot: true, want: false}, + { + name: "snapshot taken under the current template", + snapshotUID: current, + }, + { + name: "snapshot taken under a replaced template", + snapshotUID: "some-other-uid", + want: true, + }, + { + name: "snapshot without a recorded template UID", + snapshotUID: "", + }, + { + name: "no durable snapshot", + noSnapshot: true, + }, } for _, tt := range tests { @@ -1124,21 +1137,23 @@ func TestLoadActorForResume_TemplateReplaced(t *testing.T) { t.Fatalf("create template: %v", err) } if tmpl.GetMetadata().GetUid() == "" { - t.Fatal("created template has no UID; the matching case would be vacuous") + t.Fatal("created template has no UID; the matching cases would be vacuous") + } + resolve := func(uid string) string { + if uid == current { + return tmpl.GetMetadata().GetUid() + } + return uid } var seedOpts []func(*ateapipb.Actor) if !tt.noSnapshot { - uid := tt.builtOnTemplateUID - if uid == "current" { - uid = tmpl.GetMetadata().GetUid() - } seedOpts = append(seedOpts, func(a *ateapipb.Actor) { a.Status.ExternalSnapshot = &ateapipb.ExternalSnapshot{ - SnapshotUri: someActorSnapshotURI(t, testStorageLocation, actorRef.Atespace, "snap-1"), - ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, + SnapshotUri: someActorSnapshotURI(t, testStorageLocation, actorRef.Atespace, "snap-1"), + ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, + ActorTemplateUid: resolve(tt.snapshotUID), } - a.Status.CurrentActorTemplateUid = uid }) } seedWorkflowActor(t, ctx, persistence, actorRef, "ns", "tmpl1", ateapipb.ActorState_ACTOR_STATE_SUSPENDED, seedOpts...) @@ -1310,11 +1325,11 @@ func TestResumeActor_AteletWireRequest(t *testing.T) { localSnapshot *ateapipb.LocalSnapshotInfo // externalSnapshot seeds Status.ExternalSnapshot (the durable snapshot). externalSnapshot *ateapipb.ExternalSnapshot - // tmplUID seeds Status.CurrentActorTemplateUid, the template UID the - // guest state was built on: "current" stands for the created template's - // store-assigned UID (unknown until runtime), "" leaves the field unset - // (an actor from before it was recorded), anything else mismatches (a - // repointed actor). + // tmplUID seeds the template UID the snapshot's guest state was built + // on (stamped onto localSnapshot, externalSnapshot, and + // CurrentActorTemplateUid): "current" stands for the created template's + // store-assigned UID (unknown until runtime), "" leaves the field unset, + // anything else mismatches (a repointed actor). tmplUID string } // templateSeed is the ActorTemplate configuration a row persists. @@ -1680,9 +1695,11 @@ func TestResumeActor_AteletWireRequest(t *testing.T) { }, }, { - // TemplateReplaced wins in the local branch too: the pause - // checkpoint restores as plain Data, the golden overlay dropped. - name: "29 template repoint beats the golden policy on the local path", + // An older external snapshot's template mismatch does not affect a + // local pause restore: templates can only be updated while + // SUSPENDED, so a pause checkpoint is always from the current + // template. + name: "29 local snapshot ignores an older external snapshot's template mismatch", actor: actorSeed{ localSnapshot: &ateapipb.LocalSnapshotInfo{SnapshotName: localSnapshotName, NodeVmsWithLocalSnapshots: []string{"node-1"}}, externalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: actorURI, ContentScope: fullScope}, @@ -1696,7 +1713,8 @@ func TestResumeActor_AteletWireRequest(t *testing.T) { want: restoreWant{ checkpointType: ateletpb.CheckpointType_CHECKPOINT_TYPE_LOCAL, snapshotName: localSnapshotName, - scope: ateletpb.SnapshotScope_SNAPSHOT_SCOPE_DATA, + scope: ateletpb.SnapshotScope_SNAPSHOT_SCOPE_DATA_ON_GOLDEN, + goldenURI: goldenURI, }, }, } @@ -1753,12 +1771,18 @@ func TestResumeActor_AteletWireRequest(t *testing.T) { seedWorkflowActor(t, ctx, persistence, actorRef, "ns", "tmpl1", actorState, func(a *ateapipb.Actor) { a.Status.WorkerAssignment = wireTestAssignment() a.Status.LocalSnapshotInfo = tt.actor.localSnapshot - a.Status.ExternalSnapshot = tt.actor.externalSnapshot uid := tt.actor.tmplUID if uid == "current" { uid = createdTmpl.GetMetadata().GetUid() } a.Status.CurrentActorTemplateUid = uid + if tt.actor.externalSnapshot != nil { + ext := proto.CloneOf(tt.actor.externalSnapshot) + if ext.ActorTemplateUid == "" { + ext.ActorTemplateUid = uid + } + a.Status.ExternalSnapshot = ext + } }) actor, loadedTmpl, src, err := w.loadActorForResume(ctx, actorRef) diff --git a/cmd/ateapi/internal/controlapi/workflow_suspend.go b/cmd/ateapi/internal/controlapi/workflow_suspend.go index f7cb00125..4088d31d8 100644 --- a/cmd/ateapi/internal/controlapi/workflow_suspend.go +++ b/cmd/ateapi/internal/controlapi/workflow_suspend.go @@ -384,8 +384,9 @@ func (w *ActorWorkflow) ensureSuspendedFinalized(ctx context.Context, actorRef r externalSnapshot := latestActor.GetStatus().GetExternalSnapshot() if inProgressSnapshotURI != "" { externalSnapshot = &ateapipb.ExternalSnapshot{ - SnapshotUri: inProgressSnapshotURI, - ContentScope: commitSnapshotScope(actorRef.Atespace, actorTemplate), + SnapshotUri: inProgressSnapshotURI, + ContentScope: commitSnapshotScope(actorRef.Atespace, actorTemplate), + ActorTemplateUid: latestActor.GetStatus().GetCurrentActorTemplateUid(), } } diff --git a/cmd/ateapi/internal/controlapi/workflow_suspend_test.go b/cmd/ateapi/internal/controlapi/workflow_suspend_test.go index bcde00f80..94961da6c 100644 --- a/cmd/ateapi/internal/controlapi/workflow_suspend_test.go +++ b/cmd/ateapi/internal/controlapi/workflow_suspend_test.go @@ -285,8 +285,9 @@ func TestEnsureSuspendedFinalized_NoAssignment(t *testing.T) { actor := &ateapipb.Actor{ Metadata: &ateapipb.ResourceMetadata{Atespace: "team-a", Name: "actor-1"}, Status: &ateapipb.ActorStatus{ - State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, - InProgressSnapshotUri: snapshotURI, + State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, + InProgressSnapshotUri: snapshotURI, + CurrentActorTemplateUid: "tmpl-uid-1", LocalSnapshotInfo: &ateapipb.LocalSnapshotInfo{ SnapshotName: "actor-1-pause-snapshot", NodeVmsWithLocalSnapshots: []string{"node1"}, @@ -308,6 +309,11 @@ func TestEnsureSuspendedFinalized_NoAssignment(t *testing.T) { if got := stored.GetStatus().GetExternalSnapshot().GetSnapshotUri(); got != snapshotURI { t.Errorf("SnapshotUri = %q, want %q", got, snapshotURI) } + // The snapshot carries the template it was captured under, so a later + // repoint can tell that its guest state no longer matches. + if got := stored.GetStatus().GetExternalSnapshot().GetActorTemplateUid(); got != "tmpl-uid-1" { + t.Errorf("ExternalSnapshot.ActorTemplateUid = %q, want %q", got, "tmpl-uid-1") + } if got := stored.GetStatus().GetInProgressSnapshotUri(); got != "" { t.Errorf("InProgressSnapshotUri = %q, want cleared", got) } diff --git a/cmd/ateapi/internal/controlapi/zz_generated.validation.go b/cmd/ateapi/internal/controlapi/zz_generated.validation.go index 915617003..ded13c43a 100644 --- a/cmd/ateapi/internal/controlapi/zz_generated.validation.go +++ b/cmd/ateapi/internal/controlapi/zz_generated.validation.go @@ -2984,6 +2984,34 @@ func Validate_ExternalSnapshot( errs = append(errs, fn(fldPath.Child("content_scope"), &obj.ContentScope, oldVal, oldObj != nil)...) } + { // field ateapipb.ExternalSnapshot.ActorTemplateUid + fn := func( + fldPath *field.Path, + obj, oldObj *string, + oldValueCorrelated bool) (errs field.ErrorList) { + // don't revalidate unchanged data + if oldValueCorrelated && op.Type == operation.Update { + if obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj) { + return nil + } + } + // call field-attached validations + earlyReturn := false + if e := validate.OptionalValue(ctx, op, fldPath, obj, oldObj).MarkShortCircuit(); len(e) != 0 { + earlyReturn = true + } + if earlyReturn { + return // do not proceed + } + return + } + oldVal := safe.Field(oldObj, + func(oldObj *ateapipb.ExternalSnapshot) *string { + return &oldObj.ActorTemplateUid + }) + errs = append(errs, fn(fldPath.Child("actor_template_uid"), &obj.ActorTemplateUid, oldVal, oldObj != nil)...) + } + return errs } diff --git a/internal/e2e/suites/demo/updatetemplate_test.go b/internal/e2e/suites/demo/updatetemplate_test.go index 9729117a6..08a3cd553 100644 --- a/internal/e2e/suites/demo/updatetemplate_test.go +++ b/internal/e2e/suites/demo/updatetemplate_test.go @@ -29,7 +29,7 @@ import ( // different ActorTemplate: the actor runs and writes to its durable-dir data // volume under template A, suspends, is repointed at template B via // UpdateActor, and resumes. The resume must detect the template change (the -// recorded current_actor_template_uid no longer matches) and restore +// snapshot's recorded actor_template_uid no longer matches) and restore // data-only: the durable dir survives while the guest cold-boots from // template B. func TestUpdateTemplateLifecycle(t *testing.T) { @@ -140,6 +140,9 @@ func runUpdateTemplateTestCase(t *testing.T, onCommit ateapipb.SnapshotContentSc if got, want := suspended.GetStatus().GetCurrentActorTemplateUid(), createdA.GetMetadata().GetUid(); got != want { t.Errorf("suspended Actor current_actor_template_uid = %q, want template A's %q", got, want) } + if got, want := suspended.GetStatus().GetExternalSnapshot().GetActorTemplateUid(), createdA.GetMetadata().GetUid(); got != want { + t.Errorf("suspended Actor external_snapshot.actor_template_uid = %q, want template A's %q", got, want) + } if suspended.GetStatus().GetExternalSnapshot().GetSnapshotUri() == "" { t.Error("suspended Actor has no external snapshot") } @@ -187,6 +190,54 @@ func runUpdateTemplateTestCase(t *testing.T, onCommit ateapipb.SnapshotContentSc t.Errorf("[after template update] expected %q (template B validating the preserved file), got response: %s", want, resp) } + // + // Pause under template B while status.external_snapshot still holds the last + // committed snapshot from template A. Resuming from PAUSED restores the + // local checkpoint (which was captured under template B, since templates + // can only be updated while SUSPENDED) and preserves the in-memory counter + // when onPause is FULL. + // + t.Logf("Pausing Actor %q under template B...", actorID) + if _, err := clients.SubstrateAPI.PauseActor(ctx, &ateapipb.PauseActorRequest{ + Actor: &ateapipb.ObjectRef{Atespace: demoAtespace, Name: actorID}, + }); err != nil { + t.Fatalf("failed to pause Actor under template B: %v", err) + } + waitForActorState(ctx, t, clients, actorID, ateapipb.ActorState_ACTOR_STATE_PAUSED) + + paused, err := clients.SubstrateAPI.GetActor(ctx, &ateapipb.GetActorRequest{ + Actor: &ateapipb.ObjectRef{Atespace: demoAtespace, Name: actorID}, + }) + if err != nil { + t.Fatalf("failed to get paused Actor: %v", err) + } + if got, want := paused.GetStatus().GetExternalSnapshot().GetActorTemplateUid(), createdA.GetMetadata().GetUid(); got != want { + t.Errorf("paused Actor external_snapshot.actor_template_uid = %q, want template A's %q", got, want) + } + + t.Logf("Resuming Actor %q from pause under template B...", actorID) + if _, err := e2e.ResumeActorAwaitCapacity(t, ctx, clients, &ateapipb.ResumeActorRequest{ + Actor: &ateapipb.ObjectRef{Atespace: demoAtespace, Name: actorID}, + }); err != nil { + t.Fatalf("failed to resume Actor from pause under template B: %v", err) + } + waitForActorState(ctx, t, clients, actorID, ateapipb.ActorState_ACTOR_STATE_RUNNING) + + resp, err = callActor(t, resources.ActorRef{Atespace: demoAtespace, Name: actorID}) + if err != nil { + t.Fatalf("failed to call actor after pause/resume under template B: %v", err) + } + wantMemAfterPause := 2 + if onCommit == ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_DATA { + wantMemAfterPause = 1 + } + validateCounterResponse(t, resp, "after pause/resume under template B", wantMemAfterPause, 4) + + // TODO: Once RevertActor is available, add a resume -> crash/revert -> + // resume sequence here to verify that reverting after running on template B + // drops B's local state and resumes from template A's external snapshot + // with DATA scope (since ExternalSnapshot.actor_template_uid == A != B). + // A second suspend closes the loop: the resume under B stamped B as the // sprint's template, and the suspend preserves it. t.Logf("Suspending Actor %q again...", actorID) @@ -205,6 +256,9 @@ func runUpdateTemplateTestCase(t *testing.T, onCommit ateapipb.SnapshotContentSc if got, want := suspended.GetStatus().GetCurrentActorTemplateUid(), createdB.GetMetadata().GetUid(); got != want { t.Errorf("re-suspended Actor current_actor_template_uid = %q, want template B's %q", got, want) } + if got, want := suspended.GetStatus().GetExternalSnapshot().GetActorTemplateUid(), createdB.GetMetadata().GetUid(); got != want { + t.Errorf("re-suspended Actor external_snapshot.actor_template_uid = %q, want template B's %q", got, want) + } } // createUpdateTestTemplate creates a per-test WorkerPool plus a substrate diff --git a/pkg/proto/ateapipb/ateapi.pb.go b/pkg/proto/ateapipb/ateapi.pb.go index 322616ea9..1adc1d018 100644 --- a/pkg/proto/ateapipb/ateapi.pb.go +++ b/pkg/proto/ateapipb/ateapi.pb.go @@ -537,9 +537,14 @@ type ExternalSnapshot struct { // +k8s:optional // +k8s:minimum=1 // +k8s:maximum=2 # keep this in sync with the SnapshotContentScope enum - ContentScope SnapshotContentScope `protobuf:"varint,2,opt,name=content_scope,json=contentScope,proto3,enum=ateapi.SnapshotContentScope" json:"content_scope,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + ContentScope SnapshotContentScope `protobuf:"varint,2,opt,name=content_scope,json=contentScope,proto3,enum=ateapi.SnapshotContentScope" json:"content_scope,omitempty"` + // UID of the ActorTemplate whose sandbox this snapshot's guest state was + // captured from. + // + // +k8s:optional + ActorTemplateUid string `protobuf:"bytes,3,opt,name=actor_template_uid,json=actorTemplateUid,proto3" json:"actor_template_uid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExternalSnapshot) Reset() { @@ -586,6 +591,13 @@ func (x *ExternalSnapshot) GetContentScope() SnapshotContentScope { return SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_UNSPECIFIED } +func (x *ExternalSnapshot) GetActorTemplateUid() string { + if x != nil { + return x.ActorTemplateUid + } + return "" +} + type LocalSnapshotInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // The name of the local checkpoint on each of the nodes below. Checkpoint @@ -6860,10 +6872,11 @@ var File_ateapi_proto protoreflect.FileDescriptor const file_ateapi_proto_rawDesc = "" + "\n" + - "\fateapi.proto\x12\x06ateapi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"x\n" + + "\fateapi.proto\x12\x06ateapi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xa6\x01\n" + "\x10ExternalSnapshot\x12!\n" + "\fsnapshot_uri\x18\x01 \x01(\tR\vsnapshotUri\x12A\n" + - "\rcontent_scope\x18\x02 \x01(\x0e2\x1c.ateapi.SnapshotContentScopeR\fcontentScope\"\xbd\x01\n" + + "\rcontent_scope\x18\x02 \x01(\x0e2\x1c.ateapi.SnapshotContentScopeR\fcontentScope\x12,\n" + + "\x12actor_template_uid\x18\x03 \x01(\tR\x10actorTemplateUid\"\xbd\x01\n" + "\x11LocalSnapshotInfo\x12#\n" + "\rsnapshot_name\x18\x01 \x01(\tR\fsnapshotName\x12@\n" + "\x1dnode_vms_with_local_snapshots\x18\x02 \x03(\tR\x19nodeVmsWithLocalSnapshots\x12A\n" + diff --git a/pkg/proto/ateapipb/ateapi.proto b/pkg/proto/ateapipb/ateapi.proto index 1623045ef..b53c4d379 100644 --- a/pkg/proto/ateapipb/ateapi.proto +++ b/pkg/proto/ateapipb/ateapi.proto @@ -155,6 +155,12 @@ message ExternalSnapshot { // +k8s:minimum=1 // +k8s:maximum=2 # keep this in sync with the SnapshotContentScope enum SnapshotContentScope content_scope = 2; + + // UID of the ActorTemplate whose sandbox this snapshot's guest state was + // captured from. + // + // +k8s:optional + string actor_template_uid = 3; } message LocalSnapshotInfo {