diff --git a/benchmarking/locust/common/ateapi_pb2.py b/benchmarking/locust/common/ateapi_pb2.py index ccc332b67f..d4aadf8e03 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\"\x82\x01\n\nEgressRule\x12\'\n\thostnames\x18\x01 \x01(\x0b\x32\x14.ateapi.HostnameRule\x12&\n\tip_blocks\x18\x02 \x01(\x0b\x32\x13.ateapi.IPBlockRule\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\"\x1c\n\x0bIPBlockRule\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\"\xf1\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\x19in_progress_snapshot_name\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\"\xa7\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\"\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\"\x9d\x01\n\x14GoldenSnapshotStatus\x12\x31\n\x0fgolden_snapshot\x18\x01 \x01(\x0b\x32\x18.ateapi.ExternalSnapshot\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\"D\n\x12ResumeActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x0c\n\x04\x62oot\x18\x02 \x01(\x08\"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\"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\"[\n\x0eMintJWTRequest\x12\x10\n\x08\x61udience\x18\x01 \x03(\t\x12\x10\n\x08\x61tespace\x18\x02 \x01(\t\x12\x12\n\nactor_name\x18\x03 \x01(\t\x12\x11\n\tactor_uid\x18\x04 \x01(\t\"$\n\x0fMintJWTResponse\x12\x11\n\tactor_jwt\x18\x01 \x01(\t\"\xa7\x01\n\x0fMintCertRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12#\n\x1b\x63\x65rtificate_signing_request\x18\x02 \x01(\x0c\x12\x1a\n\x12\x65xpected_actor_uid\x18\x03 \x01(\t\x12\x30\n\x07purpose\x18\x04 \x01(\x0e\x32\x1f.ateapi.ActorCertificatePurpose\".\n\x10MintCertResponse\x12\x1a\n\x12\x61\x63tor_certificates\x18\x01 \x03(\x0c*\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*_\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*k\n\x17\x41\x63torCertificatePurpose\x12)\n%ACTOR_CERTIFICATE_PURPOSE_UNSPECIFIED\x10\x00\x12%\n!ACTOR_CERTIFICATE_PURPOSE_ATUNNEL\x10\x01\x32\xf3\x11\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\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\x32\x8a\x01\n\rActorIdentity\x12:\n\x07MintJWT\x12\x16.ateapi.MintJWTRequest\x1a\x17.ateapi.MintJWTResponse\x12=\n\x08MintCert\x12\x17.ateapi.MintCertRequest\x1a\x18.ateapi.MintCertResponse2i\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\"]\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\"\x82\x01\n\nEgressRule\x12\'\n\thostnames\x18\x01 \x01(\x0b\x32\x14.ateapi.HostnameRule\x12&\n\tip_blocks\x18\x02 \x01(\x0b\x32\x13.ateapi.IPBlockRule\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\"\x1c\n\x0bIPBlockRule\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\"\xa7\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\"\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\"\x9d\x01\n\x14GoldenSnapshotStatus\x12\x31\n\x0fgolden_snapshot\x18\x01 \x01(\x0b\x32\x18.ateapi.ExternalSnapshot\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\"D\n\x12ResumeActorRequest\x12 \n\x05\x61\x63tor\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12\x0c\n\x04\x62oot\x18\x02 \x01(\x08\"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\"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\"[\n\x0eMintJWTRequest\x12\x10\n\x08\x61udience\x18\x01 \x03(\t\x12\x10\n\x08\x61tespace\x18\x02 \x01(\t\x12\x12\n\nactor_name\x18\x03 \x01(\t\x12\x11\n\tactor_uid\x18\x04 \x01(\t\"$\n\x0fMintJWTResponse\x12\x11\n\tactor_jwt\x18\x01 \x01(\t\"\xa7\x01\n\x0fMintCertRequest\x12!\n\x06worker\x18\x01 \x01(\x0b\x32\x11.ateapi.ObjectRef\x12#\n\x1b\x63\x65rtificate_signing_request\x18\x02 \x01(\x0c\x12\x1a\n\x12\x65xpected_actor_uid\x18\x03 \x01(\t\x12\x30\n\x07purpose\x18\x04 \x01(\x0e\x32\x1f.ateapi.ActorCertificatePurpose\".\n\x10MintCertResponse\x12\x1a\n\x12\x61\x63tor_certificates\x18\x01 \x03(\x0c*\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*_\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*k\n\x17\x41\x63torCertificatePurpose\x12)\n%ACTOR_CERTIFICATE_PURPOSE_UNSPECIFIED\x10\x00\x12%\n!ACTOR_CERTIFICATE_PURPOSE_ATUNNEL\x10\x01\x32\xf3\x11\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\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\x32\x8a\x01\n\rActorIdentity\x12:\n\x07MintJWT\x12\x16.ateapi.MintJWTRequest\x1a\x17.ateapi.MintJWTResponse\x12=\n\x08MintCert\x12\x17.ateapi.MintCertRequest\x1a\x18.ateapi.MintCertResponse2i\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,22 +54,22 @@ _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=9229 - _globals['_SNAPSHOTCONTENTSCOPE']._serialized_end=9357 - _globals['_TAGSCOPE']._serialized_start=9359 - _globals['_TAGSCOPE']._serialized_end=9445 - _globals['_ACTORSTATE']._serialized_start=9448 - _globals['_ACTORSTATE']._serialized_end=9695 - _globals['_SANDBOXCLASS']._serialized_start=9697 - _globals['_SANDBOXCLASS']._serialized_end=9795 - _globals['_RESUMESOURCE']._serialized_start=9797 - _globals['_RESUMESOURCE']._serialized_end=9897 - _globals['_ACTORMETADATAFIELD']._serialized_start=9900 - _globals['_ACTORMETADATAFIELD']._serialized_end=10054 - _globals['_WORKERSTATE']._serialized_start=10056 - _globals['_WORKERSTATE']._serialized_end=10151 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_start=10153 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_end=10260 + _globals['_SNAPSHOTCONTENTSCOPE']._serialized_start=9228 + _globals['_SNAPSHOTCONTENTSCOPE']._serialized_end=9356 + _globals['_TAGSCOPE']._serialized_start=9358 + _globals['_TAGSCOPE']._serialized_end=9444 + _globals['_ACTORSTATE']._serialized_start=9447 + _globals['_ACTORSTATE']._serialized_end=9694 + _globals['_SANDBOXCLASS']._serialized_start=9696 + _globals['_SANDBOXCLASS']._serialized_end=9794 + _globals['_RESUMESOURCE']._serialized_start=9796 + _globals['_RESUMESOURCE']._serialized_end=9896 + _globals['_ACTORMETADATAFIELD']._serialized_start=9899 + _globals['_ACTORMETADATAFIELD']._serialized_end=10053 + _globals['_WORKERSTATE']._serialized_start=10055 + _globals['_WORKERSTATE']._serialized_end=10150 + _globals['_ACTORCERTIFICATEPURPOSE']._serialized_start=10152 + _globals['_ACTORCERTIFICATEPURPOSE']._serialized_end=10259 _globals['_EXTERNALSNAPSHOT']._serialized_start=86 _globals['_EXTERNALSNAPSHOT']._serialized_end=179 _globals['_LOCALSNAPSHOTINFO']._serialized_start=182 @@ -101,175 +101,175 @@ _globals['_CREDENTIALHEADERINJECTION']._serialized_start=1610 _globals['_CREDENTIALHEADERINJECTION']._serialized_end=1693 _globals['_ACTORSTATUS']._serialized_start=1696 - _globals['_ACTORSTATUS']._serialized_end=2065 - _globals['_WORKERASSIGNMENT']._serialized_start=2068 - _globals['_WORKERASSIGNMENT']._serialized_end=2235 - _globals['_TAGSTATUS']._serialized_start=2238 - _globals['_TAGSTATUS']._serialized_end=2373 - _globals['_TAG']._serialized_start=2376 - _globals['_TAG']._serialized_end=2534 - _globals['_ATESPACE']._serialized_start=2536 - _globals['_ATESPACE']._serialized_end=2590 - _globals['_OBJECTREF']._serialized_start=2592 - _globals['_OBJECTREF']._serialized_end=2635 - _globals['_ACTORTEMPLATE']._serialized_start=2638 - _globals['_ACTORTEMPLATE']._serialized_end=2993 - _globals['_RESOURCES']._serialized_start=2995 - _globals['_RESOURCES']._serialized_end=3038 - _globals['_LIMITS']._serialized_start=3040 - _globals['_LIMITS']._serialized_end=3080 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_start=3083 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_end=3240 - _globals['_ACTORTEMPLATESTATUS']._serialized_start=3242 - _globals['_ACTORTEMPLATESTATUS']._serialized_end=3325 - _globals['_SANDBOXCONFIG']._serialized_start=3327 - _globals['_SANDBOXCONFIG']._serialized_end=3408 - _globals['_SNAPSHOTSCONFIG']._serialized_start=3411 - _globals['_SNAPSHOTSCONFIG']._serialized_end=3594 - _globals['_ONRESUMECONFIG']._serialized_start=3596 - _globals['_ONRESUMECONFIG']._serialized_end=3653 - _globals['_CONTAINER']._serialized_start=3656 - _globals['_CONTAINER']._serialized_end=3930 - _globals['_SECURITYCONTEXT']._serialized_start=3932 - _globals['_SECURITYCONTEXT']._serialized_end=3993 - _globals['_CAPABILITIES']._serialized_start=3995 - _globals['_CAPABILITIES']._serialized_end=4036 - _globals['_ENVVAR']._serialized_start=4038 - _globals['_ENVVAR']._serialized_end=4075 - _globals['_CONTAINERREADYZ']._serialized_start=4077 - _globals['_CONTAINERREADYZ']._serialized_end=4160 - _globals['_HTTPGETACTION']._serialized_start=4162 - _globals['_HTTPGETACTION']._serialized_end=4205 - _globals['_VOLUME']._serialized_start=4208 - _globals['_VOLUME']._serialized_end=4444 - _globals['_IMAGEVOLUMESOURCE']._serialized_start=4446 - _globals['_IMAGEVOLUMESOURCE']._serialized_end=4484 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_start=4486 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_end=4510 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_start=4512 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_end=4582 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_start=4584 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_end=4660 - _globals['_SYSTEMINFODATASOURCE']._serialized_start=4663 - _globals['_SYSTEMINFODATASOURCE']._serialized_end=4795 - _globals['_ACTORMETADATADATASOURCE']._serialized_start=4797 - _globals['_ACTORMETADATADATASOURCE']._serialized_end=4864 - _globals['_ACTORMETADATAITEM']._serialized_start=4866 - _globals['_ACTORMETADATAITEM']._serialized_end=4942 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_start=4944 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_end=4995 - _globals['_VOLUMEMOUNT']._serialized_start=4997 - _globals['_VOLUMEMOUNT']._serialized_end=5044 - _globals['_CREATEATESPACEREQUEST']._serialized_start=5046 - _globals['_CREATEATESPACEREQUEST']._serialized_end=5105 - _globals['_GETATESPACEREQUEST']._serialized_start=5107 - _globals['_GETATESPACEREQUEST']._serialized_end=5164 - _globals['_LISTATESPACESREQUEST']._serialized_start=5166 - _globals['_LISTATESPACESREQUEST']._serialized_end=5227 - _globals['_LISTATESPACESRESPONSE']._serialized_start=5229 - _globals['_LISTATESPACESRESPONSE']._serialized_end=5314 - _globals['_DELETEATESPACEREQUEST']._serialized_start=5316 - _globals['_DELETEATESPACEREQUEST']._serialized_end=5376 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_start=5378 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_end=5453 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_start=5455 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_end=5523 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_start=5525 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_end=5609 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_start=5611 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_end=5712 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_start=5714 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_end=5785 - _globals['_GETACTORREQUEST']._serialized_start=5787 - _globals['_GETACTORREQUEST']._serialized_end=5838 - _globals['_CREATEACTORREQUEST']._serialized_start=5840 - _globals['_CREATEACTORREQUEST']._serialized_end=5890 - _globals['_UPDATEACTORREQUEST']._serialized_start=5892 - _globals['_UPDATEACTORREQUEST']._serialized_end=5942 - _globals['_SUSPENDACTORREQUEST']._serialized_start=5944 - _globals['_SUSPENDACTORREQUEST']._serialized_end=5999 - _globals['_SUSPENDACTORRESPONSE']._serialized_start=6001 - _globals['_SUSPENDACTORRESPONSE']._serialized_end=6053 - _globals['_PAUSEACTORREQUEST']._serialized_start=6055 - _globals['_PAUSEACTORREQUEST']._serialized_end=6108 - _globals['_PAUSEACTORRESPONSE']._serialized_start=6110 - _globals['_PAUSEACTORRESPONSE']._serialized_end=6160 - _globals['_RESUMEACTORREQUEST']._serialized_start=6162 - _globals['_RESUMEACTORREQUEST']._serialized_end=6230 - _globals['_RESUMEACTORRESPONSE']._serialized_start=6232 - _globals['_RESUMEACTORRESPONSE']._serialized_end=6300 - _globals['_DELETEACTORREQUEST']._serialized_start=6302 - _globals['_DELETEACTORREQUEST']._serialized_end=6375 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_start=6377 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_end=6440 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_start=6442 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_end=6553 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_start=6555 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_end=6666 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_start=6668 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_end=6734 - _globals['_GETTAGREQUEST']._serialized_start=6736 - _globals['_GETTAGREQUEST']._serialized_end=6783 - _globals['_LISTTAGSREQUEST']._serialized_start=6785 - _globals['_LISTTAGSREQUEST']._serialized_end=6859 - _globals['_LISTTAGSRESPONSE']._serialized_start=6861 - _globals['_LISTTAGSRESPONSE']._serialized_end=6931 - _globals['_CREATETAGREQUEST']._serialized_start=6933 - _globals['_CREATETAGREQUEST']._serialized_end=6977 - _globals['_UPDATETAGREQUEST']._serialized_start=6979 - _globals['_UPDATETAGREQUEST']._serialized_end=7023 - _globals['_DELETETAGREQUEST']._serialized_start=7025 - _globals['_DELETETAGREQUEST']._serialized_end=7075 - _globals['_DELETEOPTIONS']._serialized_start=7077 - _globals['_DELETEOPTIONS']._serialized_end=7122 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_start=7124 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_end=7233 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_start=7235 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_end=7348 - _globals['_LISTWORKERSREQUEST']._serialized_start=7350 - _globals['_LISTWORKERSREQUEST']._serialized_end=7409 - _globals['_LISTWORKERSRESPONSE']._serialized_start=7411 - _globals['_LISTWORKERSRESPONSE']._serialized_end=7490 - _globals['_GETWORKERREQUEST']._serialized_start=7492 - _globals['_GETWORKERREQUEST']._serialized_end=7545 - _globals['_CREATEWORKERREQUEST']._serialized_start=7547 - _globals['_CREATEWORKERREQUEST']._serialized_end=7600 - _globals['_UPDATEWORKERREQUEST']._serialized_start=7602 - _globals['_UPDATEWORKERREQUEST']._serialized_end=7655 - _globals['_DELETEWORKERREQUEST']._serialized_start=7657 - _globals['_DELETEWORKERREQUEST']._serialized_end=7753 - _globals['_DRAINWORKERREQUEST']._serialized_start=7755 - _globals['_DRAINWORKERREQUEST']._serialized_end=7810 - _globals['_LISTACTORSREQUEST']._serialized_start=7812 - _globals['_LISTACTORSREQUEST']._serialized_end=7888 - _globals['_LISTACTORSRESPONSE']._serialized_start=7890 - _globals['_LISTACTORSRESPONSE']._serialized_end=7966 - _globals['_WORKER']._serialized_start=7969 - _globals['_WORKER']._serialized_end=8295 - _globals['_WORKER_LABELSENTRY']._serialized_start=8250 - _globals['_WORKER_LABELSENTRY']._serialized_end=8295 - _globals['_WORKERSTATUS']._serialized_start=8298 - _globals['_WORKERSTATUS']._serialized_end=8435 - _globals['_WORKERRESOURCES']._serialized_start=8437 - _globals['_WORKERRESOURCES']._serialized_end=8508 - _globals['_ACTORASSIGNMENT']._serialized_start=8511 - _globals['_ACTORASSIGNMENT']._serialized_end=8710 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_start=8712 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_end=8816 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_start=8818 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_end=8877 - _globals['_MINTJWTREQUEST']._serialized_start=8879 - _globals['_MINTJWTREQUEST']._serialized_end=8970 - _globals['_MINTJWTRESPONSE']._serialized_start=8972 - _globals['_MINTJWTRESPONSE']._serialized_end=9008 - _globals['_MINTCERTREQUEST']._serialized_start=9011 - _globals['_MINTCERTREQUEST']._serialized_end=9178 - _globals['_MINTCERTRESPONSE']._serialized_start=9180 - _globals['_MINTCERTRESPONSE']._serialized_end=9226 - _globals['_CONTROL']._serialized_start=10263 - _globals['_CONTROL']._serialized_end=12554 - _globals['_ACTORIDENTITY']._serialized_start=12557 - _globals['_ACTORIDENTITY']._serialized_end=12695 - _globals['_WORKERSERVICE']._serialized_start=12697 - _globals['_WORKERSERVICE']._serialized_end=12802 + _globals['_ACTORSTATUS']._serialized_end=2064 + _globals['_WORKERASSIGNMENT']._serialized_start=2067 + _globals['_WORKERASSIGNMENT']._serialized_end=2234 + _globals['_TAGSTATUS']._serialized_start=2237 + _globals['_TAGSTATUS']._serialized_end=2372 + _globals['_TAG']._serialized_start=2375 + _globals['_TAG']._serialized_end=2533 + _globals['_ATESPACE']._serialized_start=2535 + _globals['_ATESPACE']._serialized_end=2589 + _globals['_OBJECTREF']._serialized_start=2591 + _globals['_OBJECTREF']._serialized_end=2634 + _globals['_ACTORTEMPLATE']._serialized_start=2637 + _globals['_ACTORTEMPLATE']._serialized_end=2992 + _globals['_RESOURCES']._serialized_start=2994 + _globals['_RESOURCES']._serialized_end=3037 + _globals['_LIMITS']._serialized_start=3039 + _globals['_LIMITS']._serialized_end=3079 + _globals['_GOLDENSNAPSHOTSTATUS']._serialized_start=3082 + _globals['_GOLDENSNAPSHOTSTATUS']._serialized_end=3239 + _globals['_ACTORTEMPLATESTATUS']._serialized_start=3241 + _globals['_ACTORTEMPLATESTATUS']._serialized_end=3324 + _globals['_SANDBOXCONFIG']._serialized_start=3326 + _globals['_SANDBOXCONFIG']._serialized_end=3407 + _globals['_SNAPSHOTSCONFIG']._serialized_start=3410 + _globals['_SNAPSHOTSCONFIG']._serialized_end=3593 + _globals['_ONRESUMECONFIG']._serialized_start=3595 + _globals['_ONRESUMECONFIG']._serialized_end=3652 + _globals['_CONTAINER']._serialized_start=3655 + _globals['_CONTAINER']._serialized_end=3929 + _globals['_SECURITYCONTEXT']._serialized_start=3931 + _globals['_SECURITYCONTEXT']._serialized_end=3992 + _globals['_CAPABILITIES']._serialized_start=3994 + _globals['_CAPABILITIES']._serialized_end=4035 + _globals['_ENVVAR']._serialized_start=4037 + _globals['_ENVVAR']._serialized_end=4074 + _globals['_CONTAINERREADYZ']._serialized_start=4076 + _globals['_CONTAINERREADYZ']._serialized_end=4159 + _globals['_HTTPGETACTION']._serialized_start=4161 + _globals['_HTTPGETACTION']._serialized_end=4204 + _globals['_VOLUME']._serialized_start=4207 + _globals['_VOLUME']._serialized_end=4443 + _globals['_IMAGEVOLUMESOURCE']._serialized_start=4445 + _globals['_IMAGEVOLUMESOURCE']._serialized_end=4483 + _globals['_DURABLEDIRVOLUMESOURCE']._serialized_start=4485 + _globals['_DURABLEDIRVOLUMESOURCE']._serialized_end=4509 + _globals['_EXTERNALVOLUMETEMPLATE']._serialized_start=4511 + _globals['_EXTERNALVOLUMETEMPLATE']._serialized_end=4581 + _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_start=4583 + _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_end=4659 + _globals['_SYSTEMINFODATASOURCE']._serialized_start=4662 + _globals['_SYSTEMINFODATASOURCE']._serialized_end=4794 + _globals['_ACTORMETADATADATASOURCE']._serialized_start=4796 + _globals['_ACTORMETADATADATASOURCE']._serialized_end=4863 + _globals['_ACTORMETADATAITEM']._serialized_start=4865 + _globals['_ACTORMETADATAITEM']._serialized_end=4941 + _globals['_TRUSTBUNDLEDATASOURCE']._serialized_start=4943 + _globals['_TRUSTBUNDLEDATASOURCE']._serialized_end=4994 + _globals['_VOLUMEMOUNT']._serialized_start=4996 + _globals['_VOLUMEMOUNT']._serialized_end=5043 + _globals['_CREATEATESPACEREQUEST']._serialized_start=5045 + _globals['_CREATEATESPACEREQUEST']._serialized_end=5104 + _globals['_GETATESPACEREQUEST']._serialized_start=5106 + _globals['_GETATESPACEREQUEST']._serialized_end=5163 + _globals['_LISTATESPACESREQUEST']._serialized_start=5165 + _globals['_LISTATESPACESREQUEST']._serialized_end=5226 + _globals['_LISTATESPACESRESPONSE']._serialized_start=5228 + _globals['_LISTATESPACESRESPONSE']._serialized_end=5313 + _globals['_DELETEATESPACEREQUEST']._serialized_start=5315 + _globals['_DELETEATESPACEREQUEST']._serialized_end=5375 + _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_start=5377 + _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_end=5452 + _globals['_GETACTORTEMPLATEREQUEST']._serialized_start=5454 + _globals['_GETACTORTEMPLATEREQUEST']._serialized_end=5522 + _globals['_LISTACTORTEMPLATESREQUEST']._serialized_start=5524 + _globals['_LISTACTORTEMPLATESREQUEST']._serialized_end=5608 + _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_start=5610 + _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_end=5711 + _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_start=5713 + _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_end=5784 + _globals['_GETACTORREQUEST']._serialized_start=5786 + _globals['_GETACTORREQUEST']._serialized_end=5837 + _globals['_CREATEACTORREQUEST']._serialized_start=5839 + _globals['_CREATEACTORREQUEST']._serialized_end=5889 + _globals['_UPDATEACTORREQUEST']._serialized_start=5891 + _globals['_UPDATEACTORREQUEST']._serialized_end=5941 + _globals['_SUSPENDACTORREQUEST']._serialized_start=5943 + _globals['_SUSPENDACTORREQUEST']._serialized_end=5998 + _globals['_SUSPENDACTORRESPONSE']._serialized_start=6000 + _globals['_SUSPENDACTORRESPONSE']._serialized_end=6052 + _globals['_PAUSEACTORREQUEST']._serialized_start=6054 + _globals['_PAUSEACTORREQUEST']._serialized_end=6107 + _globals['_PAUSEACTORRESPONSE']._serialized_start=6109 + _globals['_PAUSEACTORRESPONSE']._serialized_end=6159 + _globals['_RESUMEACTORREQUEST']._serialized_start=6161 + _globals['_RESUMEACTORREQUEST']._serialized_end=6229 + _globals['_RESUMEACTORRESPONSE']._serialized_start=6231 + _globals['_RESUMEACTORRESPONSE']._serialized_end=6299 + _globals['_DELETEACTORREQUEST']._serialized_start=6301 + _globals['_DELETEACTORREQUEST']._serialized_end=6374 + _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_start=6376 + _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_end=6439 + _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_start=6441 + _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_end=6552 + _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_start=6554 + _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_end=6665 + _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_start=6667 + _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_end=6733 + _globals['_GETTAGREQUEST']._serialized_start=6735 + _globals['_GETTAGREQUEST']._serialized_end=6782 + _globals['_LISTTAGSREQUEST']._serialized_start=6784 + _globals['_LISTTAGSREQUEST']._serialized_end=6858 + _globals['_LISTTAGSRESPONSE']._serialized_start=6860 + _globals['_LISTTAGSRESPONSE']._serialized_end=6930 + _globals['_CREATETAGREQUEST']._serialized_start=6932 + _globals['_CREATETAGREQUEST']._serialized_end=6976 + _globals['_UPDATETAGREQUEST']._serialized_start=6978 + _globals['_UPDATETAGREQUEST']._serialized_end=7022 + _globals['_DELETETAGREQUEST']._serialized_start=7024 + _globals['_DELETETAGREQUEST']._serialized_end=7074 + _globals['_DELETEOPTIONS']._serialized_start=7076 + _globals['_DELETEOPTIONS']._serialized_end=7121 + _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_start=7123 + _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_end=7232 + _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_start=7234 + _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_end=7347 + _globals['_LISTWORKERSREQUEST']._serialized_start=7349 + _globals['_LISTWORKERSREQUEST']._serialized_end=7408 + _globals['_LISTWORKERSRESPONSE']._serialized_start=7410 + _globals['_LISTWORKERSRESPONSE']._serialized_end=7489 + _globals['_GETWORKERREQUEST']._serialized_start=7491 + _globals['_GETWORKERREQUEST']._serialized_end=7544 + _globals['_CREATEWORKERREQUEST']._serialized_start=7546 + _globals['_CREATEWORKERREQUEST']._serialized_end=7599 + _globals['_UPDATEWORKERREQUEST']._serialized_start=7601 + _globals['_UPDATEWORKERREQUEST']._serialized_end=7654 + _globals['_DELETEWORKERREQUEST']._serialized_start=7656 + _globals['_DELETEWORKERREQUEST']._serialized_end=7752 + _globals['_DRAINWORKERREQUEST']._serialized_start=7754 + _globals['_DRAINWORKERREQUEST']._serialized_end=7809 + _globals['_LISTACTORSREQUEST']._serialized_start=7811 + _globals['_LISTACTORSREQUEST']._serialized_end=7887 + _globals['_LISTACTORSRESPONSE']._serialized_start=7889 + _globals['_LISTACTORSRESPONSE']._serialized_end=7965 + _globals['_WORKER']._serialized_start=7968 + _globals['_WORKER']._serialized_end=8294 + _globals['_WORKER_LABELSENTRY']._serialized_start=8249 + _globals['_WORKER_LABELSENTRY']._serialized_end=8294 + _globals['_WORKERSTATUS']._serialized_start=8297 + _globals['_WORKERSTATUS']._serialized_end=8434 + _globals['_WORKERRESOURCES']._serialized_start=8436 + _globals['_WORKERRESOURCES']._serialized_end=8507 + _globals['_ACTORASSIGNMENT']._serialized_start=8510 + _globals['_ACTORASSIGNMENT']._serialized_end=8709 + _globals['_SETWORKERCAPACITYREQUEST']._serialized_start=8711 + _globals['_SETWORKERCAPACITYREQUEST']._serialized_end=8815 + _globals['_SETWORKERCAPACITYRESPONSE']._serialized_start=8817 + _globals['_SETWORKERCAPACITYRESPONSE']._serialized_end=8876 + _globals['_MINTJWTREQUEST']._serialized_start=8878 + _globals['_MINTJWTREQUEST']._serialized_end=8969 + _globals['_MINTJWTRESPONSE']._serialized_start=8971 + _globals['_MINTJWTRESPONSE']._serialized_end=9007 + _globals['_MINTCERTREQUEST']._serialized_start=9010 + _globals['_MINTCERTREQUEST']._serialized_end=9177 + _globals['_MINTCERTRESPONSE']._serialized_start=9179 + _globals['_MINTCERTRESPONSE']._serialized_end=9225 + _globals['_CONTROL']._serialized_start=10262 + _globals['_CONTROL']._serialized_end=12553 + _globals['_ACTORIDENTITY']._serialized_start=12556 + _globals['_ACTORIDENTITY']._serialized_end=12694 + _globals['_WORKERSERVICE']._serialized_start=12696 + _globals['_WORKERSERVICE']._serialized_end=12801 # @@protoc_insertion_point(module_scope) diff --git a/cmd/ateapi/internal/controlapi/actor_test.go b/cmd/ateapi/internal/controlapi/actor_test.go index de6a77705f..038caac5ee 100644 --- a/cmd/ateapi/internal/controlapi/actor_test.go +++ b/cmd/ateapi/internal/controlapi/actor_test.go @@ -400,15 +400,19 @@ func TestValidateActorUpdate(t *testing.T) { field.Invalid(field.NewPath("status", "worker_assignment", "worker_pod_ip"), nil, "").WithOrigin("format=ip-strict"), }, }, { - "valid actor.status.in_progress_snapshot_name", + "valid actor.status.in_progress_snapshot_uri", validInput(), - validOutput(withStatus(func(s *ateapipb.ActorStatus) { s.InProgressSnapshotName = "snap-1" })), + validOutput(withStatus(func(s *ateapipb.ActorStatus) { + s.InProgressSnapshotUri = "gs://private/atespaces/as/actors/" + someActorUID + "/snapshots/snap-1" + })), nil, }, { - "invalid actor.status.in_progress_snapshot_name", + "invalid actor.status.in_progress_snapshot_uri: too long", validInput(), - validOutput(withStatus(func(s *ateapipb.ActorStatus) { s.InProgressSnapshotName = "SNAP 1" })), - field.ErrorList{field.Invalid(field.NewPath("status", "in_progress_snapshot_name"), nil, "").WithOrigin("format=k8s-short-name")}, + validOutput(withStatus(func(s *ateapipb.ActorStatus) { + s.InProgressSnapshotUri = "gs://" + strings.Repeat("x", 2044) + })), + field.ErrorList{field.TooLong(field.NewPath("status", "in_progress_snapshot_uri"), nil, 2048).WithOrigin("maxLength")}, }, { "valid actor.status.external_snapshot", validInput(), diff --git a/cmd/ateapi/internal/controlapi/crash.go b/cmd/ateapi/internal/controlapi/crash.go index 29f5a90c8b..9bb0f136d5 100644 --- a/cmd/ateapi/internal/controlapi/crash.go +++ b/cmd/ateapi/internal/controlapi/crash.go @@ -94,7 +94,7 @@ func crashActor(ctx context.Context, st crashActorStore, actorRef resources.Acto _, err = st.UpdateActor(ctx, actorRef, store.PreconditionFrom(actor), func(toUpdate *ateapipb.Actor) error { toUpdate.Status.State = ateapipb.ActorState_ACTOR_STATE_CRASHED - // InProgressSnapshotName and InProgressLocalSnapshotName are kept for + // InProgressSnapshotUri and InProgressLocalSnapshotName are kept for // debugging; failed workflow steps must never promote either of them to an // ActorSnapshot or to LocalSnapshotInfo. toUpdate.Status.WorkerAssignment = nil diff --git a/cmd/ateapi/internal/controlapi/crash_test.go b/cmd/ateapi/internal/controlapi/crash_test.go index 1284cb8f29..c5c37d3c11 100644 --- a/cmd/ateapi/internal/controlapi/crash_test.go +++ b/cmd/ateapi/internal/controlapi/crash_test.go @@ -51,7 +51,7 @@ func seedActor(t *testing.T, ctx context.Context, st store.Interface, actorRef r WorkerPodUid: "uid", WorkerPodIp: "1.2.3.4", }, - InProgressSnapshotName: "reserved-snapshot", + InProgressSnapshotUri: "gs://bucket/atespaces/as/actors/uid/snapshots/reserved-snapshot", }, }) } @@ -94,8 +94,8 @@ func seedUnboundActor(t *testing.T, ctx context.Context, st store.Interface, act storetest.MustCreateActor(t, ctx, st, &ateapipb.Actor{ Metadata: &ateapipb.ResourceMetadata{Name: actorRef.Name, Atespace: actorRef.Atespace}, Status: &ateapipb.ActorStatus{ - State: ateapipb.ActorState_ACTOR_STATE_RUNNING, - InProgressSnapshotName: "reserved-snapshot", + State: ateapipb.ActorState_ACTOR_STATE_RUNNING, + InProgressSnapshotUri: "gs://bucket/atespaces/as/actors/uid/snapshots/reserved-snapshot", }, }) } @@ -112,8 +112,8 @@ func assertCrashed(t *testing.T, ctx context.Context, st store.Interface, actorR t.Errorf("status = %v, want %v", got.GetStatus().GetState(), ateapipb.ActorState_ACTOR_STATE_CRASHED) } // Keep the snapshot uri for debugging. - if got.GetStatus().GetInProgressSnapshotName() == "" { - t.Error(`InProgressSnapshotName = "", want preserved`) + if got.GetStatus().GetInProgressSnapshotUri() == "" { + t.Error(`InProgressSnapshotUri = "", want preserved`) } if got.GetStatus().GetWorkerAssignment() != nil { t.Errorf("WorkerAssignment = %v, want cleared", got.GetStatus().GetWorkerAssignment()) diff --git a/cmd/ateapi/internal/controlapi/workflow_delete.go b/cmd/ateapi/internal/controlapi/workflow_delete.go index 6c744dbb24..9e990b97c5 100644 --- a/cmd/ateapi/internal/controlapi/workflow_delete.go +++ b/cmd/ateapi/internal/controlapi/workflow_delete.go @@ -87,7 +87,7 @@ func (w *ActorWorkflow) DeleteActor(ctx context.Context, actorRef resources.Acto errs = append(errs, fmt.Errorf("while deleting volumes: %w", err)) } - if err := w.ensureExternalSnapshotsReleased(ctx, actor, actorTemplate); err != nil { + if err := w.ensureExternalSnapshotsReleased(ctx, actor); err != nil { errs = append(errs, fmt.Errorf("while releasing external snapshots: %w", err)) } @@ -372,7 +372,7 @@ func (w *ActorWorkflow) ensureVolumesDeleted(ctx context.Context, actor *ateapip // // A snapshot borrowed from a tag lives under the tag's prefix, so it survives: // the tag owns it and outlives the actor. -func (w *ActorWorkflow) ensureExternalSnapshotsReleased(ctx context.Context, actor *ateapipb.Actor, actorTemplate *ateapipb.ActorTemplate) (err error) { +func (w *ActorWorkflow) ensureExternalSnapshotsReleased(ctx context.Context, actor *ateapipb.Actor) (err error) { ctx, done := stepSpan(ctx, "ReleaseExternalSnapshots") defer func() { err = done(err) }() @@ -381,7 +381,7 @@ func (w *ActorWorkflow) ensureExternalSnapshotsReleased(ctx context.Context, act return nil } - prefix, err := actorSnapshotStoragePrefix(ctx, actor, actorTemplate) + prefix, err := actorSnapshotStoragePrefix(actor) if err != nil { return err } @@ -396,38 +396,37 @@ func (w *ActorWorkflow) ensureExternalSnapshotsReleased(ctx context.Context, act // the snapshot it last took, the one a suspend was in the middle of taking, and // anything a crashed suspend stranded. A zero prefix means the actor never // wrote anything. -func actorSnapshotStoragePrefix(ctx context.Context, actor *ateapipb.Actor, actorTemplate *ateapipb.ActorTemplate) (resources.StoragePrefix, error) { - owner := actorSnapshotOwner(actor) +func actorSnapshotStoragePrefix(actor *ateapipb.Actor) (resources.StoragePrefix, error) { + actorOwner := actorSnapshotOwner(actor) if snapshotURI := actor.GetStatus().GetExternalSnapshot().GetSnapshotUri(); snapshotURI != "" { uri, err := resources.ParseSnapshotURI(snapshotURI) if err != nil { return resources.StoragePrefix{}, fmt.Errorf("while parsing the external snapshot %q: %w", snapshotURI, err) } - // The recorded URI names the actor's prefix, so no template lookup is - // needed. A URI the actor does not own is a tag's, borrowed until the - // actor's first suspend completes, which means it has written nothing of - // its own yet. - if uri.OwnedBy(owner) { + // A URI the actor does not own is a tag's snapshot, borrowed until the actor's + // first suspend completes, which means it has written nothing of its + // own yet. + if uri.OwnedBy(actorOwner) { return uri.OwnerPrefix(), nil } } // Nothing of the actor's own is recorded. Unless a suspend died partway, - // nothing was ever written under its prefix: the in-progress name is + // nothing was ever written under its prefix: the in-progress URI is // recorded before atelet uploads the first object. - name := actor.GetStatus().GetInProgressSnapshotName() - if name == "" { + inProgress := actor.GetStatus().GetInProgressSnapshotUri() + if inProgress == "" { return resources.StoragePrefix{}, nil } - // The template's storage location is the only place the actor's prefix can - // be derived from now. Without it the actor would be stuck DELETING forever. - // TODO: prevent this from leaking objects in the external storage. - if actorTemplate == nil { - slog.WarnContext(ctx, "Leaking an in-progress external snapshot, the actor's template no longer resolves", - slog.String("actor", actor.GetMetadata().GetName()), - slog.String("in_progress_snapshot_name", name)) - return resources.StoragePrefix{}, nil + uri, err := resources.ParseSnapshotURI(inProgress) + if err != nil { + return resources.StoragePrefix{}, fmt.Errorf("while parsing the in-progress snapshot %q: %w", inProgress, err) + } + if !uri.OwnedBy(actorOwner) { + // Corrupted record. This should never happen. An in-progress snapshot should + // always be owned by the actor that holds it. + return resources.StoragePrefix{}, fmt.Errorf("the in-progress snapshot %q is not owned by actor %s", inProgress, actorOwner) } - return owner.Prefix(actorTemplate.GetSnapshotsConfig().GetStorageLocation()) + return uri.OwnerPrefix(), nil } // finalizeDeleted removes the actor from the store and returns the deleted diff --git a/cmd/ateapi/internal/controlapi/workflow_delete_test.go b/cmd/ateapi/internal/controlapi/workflow_delete_test.go index c54c4c1098..fa95d62fea 100644 --- a/cmd/ateapi/internal/controlapi/workflow_delete_test.go +++ b/cmd/ateapi/internal/controlapi/workflow_delete_test.go @@ -269,10 +269,10 @@ func TestEnsureExternalSnapshotsReleased(t *testing.T) { } actor = mustUpdateActorStatus(t, ctx, persistence, actor, func(s *ateapipb.ActorStatus) { s.ExternalSnapshot = &ateapipb.ExternalSnapshot{SnapshotUri: current.String()} - s.InProgressSnapshotName = tt.inFlight + s.InProgressSnapshotUri = inFlight.String() }) - if err := w.ensureExternalSnapshotsReleased(ctx, actor, template); err != nil { + if err := w.ensureExternalSnapshotsReleased(ctx, actor); err != nil { t.Fatalf("ensureExternalSnapshotsReleased: %v", err) } if released := len(objects.Snapshot(t, current)) == 0; released != tt.wantCurrentReleased { @@ -317,7 +317,7 @@ func TestEnsureExternalSnapshotsReleased_CollectsStrandedSnapshots(t *testing.T) s.ExternalSnapshot = &ateapipb.ExternalSnapshot{SnapshotUri: currentSnapshot.String()} }) - if err := w.ensureExternalSnapshotsReleased(ctx, actor, template); err != nil { + if err := w.ensureExternalSnapshotsReleased(ctx, actor); err != nil { t.Fatalf("ensureExternalSnapshotsReleased: %v", err) } if remaining := objects.Snapshot(t, strandedSnapshot); len(remaining) != 0 { @@ -329,6 +329,39 @@ func TestEnsureExternalSnapshotsReleased_CollectsStrandedSnapshots(t *testing.T) } } +// TestDeleteActor_CollectsSnapshotWithoutActorTemplate checks that snapshots +// are collected even if the actor template is gone. +func TestDeleteActor_CollectsInFlightSnapshotWithoutTemplate(t *testing.T) { + ctx := context.Background() + persistence := newTestPersistence(t) + objects := objectstoretest.New() + w := NewActorWorkflow(persistence, nil, nil, nil, nil, nil, "", nil, objects) + + actorRef := resources.ActorRef{Atespace: "team-a", Name: "actor-1"} + actor := storetest.MustCreateActor(t, ctx, persistence, &ateapipb.Actor{ + Metadata: &ateapipb.ResourceMetadata{Atespace: actorRef.Atespace, Name: actorRef.Name}, + ActorTemplate: &ateapipb.ObjectRef{Atespace: "team-a", Name: "gone-tmpl"}, + Status: &ateapipb.ActorStatus{State: ateapipb.ActorState_ACTOR_STATE_CRASHED}, + }) + + // The template that holds the storage location is gone (was never written to storage). + // We should still be able to access/delete the current snapshot for this actor. + inFlight := mustActorSnapshotURI(t, &ateapipb.ActorTemplate{ + SnapshotsConfig: &ateapipb.SnapshotsConfig{StorageLocation: testStorageLocation}, + }, actor, "abandoned") + objects.PutSnapshot(t, inFlight, "manifest.json") + mustUpdateActorStatus(t, ctx, persistence, actor, func(s *ateapipb.ActorStatus) { + s.InProgressSnapshotUri = inFlight.String() + }) + + if _, err := w.DeleteActor(ctx, actorRef, true); err != nil { + t.Fatalf("DeleteActor: %v", err) + } + if left := objects.Prefix(t, inFlight.OwnerPrefix()); len(left) != 0 { + t.Errorf("Deleting the actor left %v under its own prefix, want the in-flight snapshot collected", left) + } +} + // TestDeleteActor_CollectsSnapshotsAfterWorkerDelete verifies that // deleting an actor whose suspend a worker delete crashed mid-finalize reclaims // every object that suspend wrote. CRASHED is terminal, so the actor delete is @@ -400,12 +433,12 @@ func TestDeleteActor_CollectsSnapshotsAfterWorkerDelete(t *testing.T) { actorWorkflow := NewActorWorkflow(persistence, nil, nil, nil, nil, nil, "", nil, objects) // Suspend the actor as far as it gets: MarkSuspending mints the - // in-progress name, and the checkpoint writes under it + // in-progress URI, and the checkpoint writes under it actor, err := actorWorkflow.ensureMarkedSuspending(ctx, actorRef, actor, template) if err != nil { t.Fatalf("ensureMarkedSuspending: %v", err) } - fresh := mustActorSnapshotURI(t, template, actor, actor.GetStatus().GetInProgressSnapshotName()) + fresh := mustParseSnapshotURI(t, actor.GetStatus().GetInProgressSnapshotUri()) objects.PutSnapshot(t, fresh, "manifest.json") // The worker's pod goes away with the commit still outstanding, so diff --git a/cmd/ateapi/internal/controlapi/workflow_suspend.go b/cmd/ateapi/internal/controlapi/workflow_suspend.go index d76c9591ae..9333aced1c 100644 --- a/cmd/ateapi/internal/controlapi/workflow_suspend.go +++ b/cmd/ateapi/internal/controlapi/workflow_suspend.go @@ -143,15 +143,15 @@ func (w *ActorWorkflow) ensureMarkedSuspending(ctx context.Context, actorRef res return nil, status.Errorf(codes.FailedPrecondition, "actor %s paused with a Data snapshot; the template commits Full, which a paused-origin suspend cannot produce", actorRef) } - name := resources.NewSnapshotName() // Fail here rather than at checkpoint time if the template's location // cannot produce a usable URI: nothing has been written yet. - if _, err := inProgressSnapshotURI(actorTemplate, actor, name); err != nil { + uri, err := newInProgressSnapshotURI(actorTemplate, actor) + if err != nil { return nil, err } storedActor, err := w.store.UpdateActor(ctx, actorRef, store.PreconditionFrom(actor), func(toUpdate *ateapipb.Actor) error { toUpdate.Status.State = ateapipb.ActorState_ACTOR_STATE_SUSPENDING - toUpdate.Status.InProgressSnapshotName = name + toUpdate.Status.InProgressSnapshotUri = uri.String() return nil }) if err != nil { @@ -221,7 +221,7 @@ func (w *ActorWorkflow) ensureAteletSuspended(ctx context.Context, actorRef reso ateletConn, err := w.dialer.DialForWorker(assignment.GetWorkerNamespace(), assignment.GetWorkerPod()) if err != nil { if errors.Is(err, ErrWorkerPodNotFound) { - slog.ErrorContext(ctx, "Worker pod gone before checkpoint, crashing actor", "namespace", assignment.GetWorkerNamespace(), "pod", assignment.GetWorkerPod(), "in_progress_snapshot_name", actor.GetStatus().GetInProgressSnapshotName()) + slog.ErrorContext(ctx, "Worker pod gone before checkpoint, crashing actor", "namespace", assignment.GetWorkerNamespace(), "pod", assignment.GetWorkerPod(), "in_progress_snapshot_uri", actor.GetStatus().GetInProgressSnapshotUri()) if err := crashActor(ctx, w.store, actorRef, ateattr.OperationSuspend, ateattr.ReasonWorkerPodGone); err != nil { slog.ErrorContext(ctx, "Failed to crash actor", slog.String("err", err.Error())) } @@ -236,11 +236,6 @@ func (w *ActorWorkflow) ensureAteletSuspended(ctx context.Context, actorRef reso return "", err } - snapshotURI, err := inProgressSnapshotURI(actorTemplate, actor, actor.GetStatus().GetInProgressSnapshotName()) - if err != nil { - return "", err - } - // Checkpoint does not carry the sandbox config: atelet uses the version the // actor is currently running (recorded on-node at Run/Restore) and pins it // into the snapshot manifest. @@ -254,7 +249,7 @@ func (w *ActorWorkflow) ensureAteletSuspended(ctx context.Context, actorRef reso Type: ateletpb.CheckpointType_CHECKPOINT_TYPE_EXTERNAL, Config: &ateletpb.CheckpointRequest_ExternalConfig{ ExternalConfig: &ateletpb.ExternalCheckpointConfiguration{ - SnapshotUri: snapshotURI.String(), + SnapshotUri: actor.GetStatus().GetInProgressSnapshotUri(), }, }, Scope: actorSnapshotContentScopeToAtelet(commitSnapshotScope(actor.GetMetadata().GetAtespace(), actorTemplate)), @@ -295,11 +290,6 @@ func (w *ActorWorkflow) ensurePausedSnapshotUploaded(ctx context.Context, actorR } client := ateletpb.NewAteomHerderClient(ateletConn) - snapshotURI, err := inProgressSnapshotURI(actorTemplate, actor, actor.GetStatus().GetInProgressSnapshotName()) - if err != nil { - return "", err - } - req := &ateletpb.UploadPausedCheckpointRequest{ Atespace: actor.GetMetadata().GetAtespace(), ActorName: actor.GetMetadata().GetName(), @@ -307,7 +297,7 @@ func (w *ActorWorkflow) ensurePausedSnapshotUploaded(ctx context.Context, actorR ActorTemplateAtespace: actor.GetActorTemplate().GetAtespace(), ActorTemplateName: actor.GetActorTemplate().GetName(), LocalSnapshotName: local.GetSnapshotName(), - DestinationSnapshotUri: snapshotURI.String(), + DestinationSnapshotUri: actor.GetStatus().GetInProgressSnapshotUri(), // The commit scope, like a running-origin suspend; atelet converts // from the captured scope in the snapshot's manifest where possible. DesiredScope: actorSnapshotContentScopeToAtelet(commitSnapshotScope(actor.GetMetadata().GetAtespace(), actorTemplate)), @@ -318,11 +308,11 @@ func (w *ActorWorkflow) ensurePausedSnapshotUploaded(ctx context.Context, actorR return wireSnapshotScope, maybeCrashActor(ctx, w.store, actorRef, err, "while uploading paused snapshot", ateattr.OperationSuspend) } -// inProgressSnapshotURI is where the snapshot an actor is currently taking is +// newInProgressSnapshotURI is where the snapshot an actor is currently taking is // written: under the actor's own prefix, so the objects name their owner. -func inProgressSnapshotURI(actorTemplate *ateapipb.ActorTemplate, actor *ateapipb.Actor, name string) (resources.SnapshotURI, error) { +func newInProgressSnapshotURI(actorTemplate *ateapipb.ActorTemplate, actor *ateapipb.Actor) (resources.SnapshotURI, error) { atespace := actor.GetMetadata().GetAtespace() - uri, err := resources.NewActorSnapshotURI(actorTemplate.GetSnapshotsConfig().GetStorageLocation(), atespace, actor.GetMetadata().GetUid(), name) + uri, err := resources.NewActorSnapshotURI(actorTemplate.GetSnapshotsConfig().GetStorageLocation(), atespace, actor.GetMetadata().GetUid(), resources.NewSnapshotName()) if err != nil { return resources.SnapshotURI{}, fmt.Errorf("while building the snapshot URI for actor %s/%s: %w", atespace, actor.GetMetadata().GetName(), err) } @@ -396,17 +386,11 @@ func (w *ActorWorkflow) ensureSuspendedFinalized(ctx context.Context, actorRef r // 2. Finalize the actor: record its new external snapshot and mark it SUSPENDED. This // must run even with no worker assignment (nothing to free), or the actor // would be left SUSPENDING forever with the workflow reporting success. - snapshotName := latestActor.GetStatus().GetInProgressSnapshotName() + inProgressSnapshotURI := latestActor.GetStatus().GetInProgressSnapshotUri() externalSnapshot := latestActor.GetStatus().GetExternalSnapshot() - if snapshotName != "" { - // The same inputs CallAteletSuspend used, so the recorded URI is - // where the external snapshot was actually written. - uri, err := inProgressSnapshotURI(actorTemplate, latestActor, snapshotName) - if err != nil { - return nil, err - } + if inProgressSnapshotURI != "" { externalSnapshot = &ateapipb.ExternalSnapshot{ - SnapshotUri: uri.String(), + SnapshotUri: inProgressSnapshotURI, ContentScope: commitSnapshotScope(actorRef.Atespace, actorTemplate), } } @@ -424,12 +408,12 @@ func (w *ActorWorkflow) ensureSuspendedFinalized(ctx context.Context, actorRef r t = time.Now() storedActor, err := w.store.UpdateActor(ctx, actorRef, store.PreconditionFrom(latestActor), func(toUpdate *ateapipb.Actor) error { toUpdate.Status.State = ateapipb.ActorState_ACTOR_STATE_SUSPENDED - if snapshotName != "" { + if inProgressSnapshotURI != "" { // The recorded URI is under the actor's own prefix, so the actor now // owns its external snapshot rather than borrowing the tag's it may // have been created from. toUpdate.Status.ExternalSnapshot = proto.CloneOf(externalSnapshot) - toUpdate.Status.InProgressSnapshotName = "" + toUpdate.Status.InProgressSnapshotUri = "" } toUpdate.Status.WorkerAssignment = nil toUpdate.Status.LocalSnapshotInfo = nil diff --git a/cmd/ateapi/internal/controlapi/workflow_suspend_test.go b/cmd/ateapi/internal/controlapi/workflow_suspend_test.go index 5d31349507..63aed9cb6e 100644 --- a/cmd/ateapi/internal/controlapi/workflow_suspend_test.go +++ b/cmd/ateapi/internal/controlapi/workflow_suspend_test.go @@ -28,7 +28,7 @@ import ( "k8s.io/client-go/tools/cache" ) -func TestEnsureMarkedSuspending_SnapshotName(t *testing.T) { +func TestEnsureMarkedSuspending_SnapshotURI(t *testing.T) { ctx := context.Background() persistence := newTestPersistence(t) actor := storetest.MustCreateActor(t, ctx, persistence, &ateapipb.Actor{ @@ -44,21 +44,11 @@ func TestEnsureMarkedSuspending_SnapshotName(t *testing.T) { t.Fatalf("ensureMarkedSuspending: %v", err) } - // The field holds the snapshot's name, not its URI: FinalizeSuspended - // names the ActorSnapshot after it, so it has to be usable as a resource - // name verbatim. - snapshotName := marked.GetStatus().GetInProgressSnapshotName() - if !resources.IsValidResourceName(snapshotName) { - t.Fatalf("in-progress snapshot = %q, want a valid resource name", snapshotName) + uri := mustParseSnapshotURI(t, marked.GetStatus().GetInProgressSnapshotUri()) + if !resources.IsValidResourceName(uri.Name()) { + t.Errorf("in-progress snapshot name = %q, want a valid resource name", uri.Name()) } - // The URI the later steps rebuild from that name nests under the actor's - // own prefix, so the objects name their owner and nothing else can collect - // them. - uri, err := inProgressSnapshotURI(tmpl, marked, snapshotName) - if err != nil { - t.Fatalf("inProgressSnapshotURI(%q): %v", snapshotName, err) - } - want := "gs://bucket/root/atespaces/team-a/actors/" + marked.GetMetadata().GetUid() + "/snapshots/" + snapshotName + want := "gs://bucket/root/atespaces/team-a/actors/" + marked.GetMetadata().GetUid() + "/snapshots/" + uri.Name() if uri.String() != want { t.Errorf("snapshot URI = %q, want %q", uri, want) } @@ -68,13 +58,15 @@ func TestEnsureMarkedSuspending_SnapshotName(t *testing.T) { // re-entered workflow does not mint a second snapshot location: the location // persisted by the first attempt stays authoritative. func TestEnsureMarkedSuspending_ReentryKeepsPersistedSnapshotLocation(t *testing.T) { + const firstAttempt = "gs://bucket/root/atespaces/team-a/actors/actor-uid/snapshots/first-attempt" + ctx := context.Background() persistence := newTestPersistence(t) actor := storetest.MustCreateActor(t, ctx, persistence, &ateapipb.Actor{ Metadata: &ateapipb.ResourceMetadata{Atespace: "team-a", Name: "actor-1"}, Status: &ateapipb.ActorStatus{ - State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, - InProgressSnapshotName: "first-attempt", + State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, + InProgressSnapshotUri: firstAttempt, }, }) w := &ActorWorkflow{store: persistence} @@ -82,8 +74,8 @@ func TestEnsureMarkedSuspending_ReentryKeepsPersistedSnapshotLocation(t *testing if err != nil { t.Fatalf("ensureMarkedSuspending: %v", err) } - if got := marked.GetStatus().GetInProgressSnapshotName(); got != "first-attempt" { - t.Errorf("InProgressSnapshotName = %q, want the first attempt's location", got) + if got := marked.GetStatus().GetInProgressSnapshotUri(); got != firstAttempt { + t.Errorf("InProgressSnapshotUri = %q, want the first attempt's location", got) } } @@ -220,6 +212,8 @@ func newDanglingDialer() *AteletDialer { } func TestEnsureAteletSuspended_DanglingWorkerDoesNotRecordPhantomSnapshot(t *testing.T) { + neverWritten := someActorSnapshotURI(t, testStorageLocation, "team-a", "never-written") + tests := []struct { name string prevSnapshot string @@ -247,8 +241,8 @@ func TestEnsureAteletSuspended_DanglingWorkerDoesNotRecordPhantomSnapshot(t *tes WorkerPool: "pool", WorkerPod: "pod-gone", }, - InProgressSnapshotName: "never-written", - ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: tt.prevSnapshot}, + InProgressSnapshotUri: neverWritten, + ExternalSnapshot: &ateapipb.ExternalSnapshot{SnapshotUri: tt.prevSnapshot}, }, } created := storetest.MustCreateActor(t, ctx, persistence, actor) @@ -265,8 +259,8 @@ func TestEnsureAteletSuspended_DanglingWorkerDoesNotRecordPhantomSnapshot(t *tes if stored.GetStatus().GetState() != ateapipb.ActorState_ACTOR_STATE_CRASHED { t.Errorf("state = %v, want CRASHED", stored.GetStatus().GetState()) } - if got := stored.GetStatus().GetInProgressSnapshotName(); got != "never-written" { - t.Errorf("InProgressSnapshotName = %q, want preserved for debugging", got) + if got := stored.GetStatus().GetInProgressSnapshotUri(); got != neverWritten { + t.Errorf("InProgressSnapshotUri = %q, want preserved for debugging", got) } if got := stored.GetStatus().GetExternalSnapshot().GetSnapshotUri(); got != tt.prevSnapshot { t.Errorf("SnapshotUri = %q, want %q", got, tt.prevSnapshot) @@ -285,22 +279,22 @@ func TestEnsureSuspendedFinalized_NoAssignment(t *testing.T) { ctx := context.Background() persistence := newTestPersistence(t) - const snapshotName = "2026-01-01t00-00-00z-abc" + snapshotURI := someActorSnapshotURI(t, testStorageLocation, "team-a", "2026-01-01t00-00-00z-abc") actor := &ateapipb.Actor{ Metadata: &ateapipb.ResourceMetadata{Atespace: "team-a", Name: "actor-1"}, Status: &ateapipb.ActorStatus{ - State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, - InProgressSnapshotName: snapshotName, + State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, + InProgressSnapshotUri: snapshotURI, LocalSnapshotInfo: &ateapipb.LocalSnapshotInfo{ SnapshotName: "actor-1-pause-snapshot", NodeVmsWithLocalSnapshots: []string{"node1"}, }, }, } - created := storetest.MustCreateActor(t, ctx, persistence, actor) + storetest.MustCreateActor(t, ctx, persistence, actor) w := &ActorWorkflow{store: persistence} - tmpl := &ateapipb.ActorTemplate{SnapshotsConfig: &ateapipb.SnapshotsConfig{StorageLocation: "gs://snapshots"}} + tmpl := &ateapipb.ActorTemplate{SnapshotsConfig: &ateapipb.SnapshotsConfig{StorageLocation: testStorageLocation}} stored, err := w.ensureSuspendedFinalized(ctx, resources.ActorRef{Atespace: "team-a", Name: "actor-1"}, tmpl) if err != nil { t.Fatalf("ensureSuspendedFinalized: %v", err) @@ -309,15 +303,11 @@ func TestEnsureSuspendedFinalized_NoAssignment(t *testing.T) { if stored.GetStatus().GetState() != ateapipb.ActorState_ACTOR_STATE_SUSPENDED { t.Errorf("state = %v, want SUSPENDED", stored.GetStatus().GetState()) } - wantURI, err := inProgressSnapshotURI(tmpl, created, snapshotName) - if err != nil { - t.Fatalf("inProgressSnapshotURI: %v", err) - } - if got := stored.GetStatus().GetExternalSnapshot().GetSnapshotUri(); got != wantURI.String() { - t.Errorf("SnapshotUri = %q, want %q", got, wantURI.String()) + if got := stored.GetStatus().GetExternalSnapshot().GetSnapshotUri(); got != snapshotURI { + t.Errorf("SnapshotUri = %q, want %q", got, snapshotURI) } - if got := stored.GetStatus().GetInProgressSnapshotName(); got != "" { - t.Errorf("InProgressSnapshotName = %q, want cleared", got) + if got := stored.GetStatus().GetInProgressSnapshotUri(); got != "" { + t.Errorf("InProgressSnapshotUri = %q, want cleared", got) } if stored.GetStatus().GetLocalSnapshotInfo() != nil { t.Errorf("LocalSnapshotInfo = %v, want cleared", stored.GetStatus().GetLocalSnapshotInfo()) @@ -375,7 +365,7 @@ func TestEnsureSuspendedFinalized_ReleasesReplacedSnapshot(t *testing.T) { objects.PutSnapshot(t, fresh, "manifest.json") mustUpdateActorStatus(t, ctx, persistence, actor, func(s *ateapipb.ActorStatus) { - s.InProgressSnapshotName = snapshotName + s.InProgressSnapshotUri = fresh.String() s.ExternalSnapshot = &ateapipb.ExternalSnapshot{SnapshotUri: previous.String()} }) @@ -425,7 +415,7 @@ func TestEnsureSuspendedFinalized_RetriesAfterObjectStoreFailure(t *testing.T) { objects.PutSnapshot(t, fresh, "manifest.json") mustUpdateActorStatus(t, ctx, persistence, actor, func(s *ateapipb.ActorStatus) { - s.InProgressSnapshotName = snapshotName + s.InProgressSnapshotUri = fresh.String() s.ExternalSnapshot = &ateapipb.ExternalSnapshot{SnapshotUri: previous.String()} }) @@ -497,7 +487,7 @@ func TestEnsureSuspendedFinalized_ReleasesOnlyOwnWorker(t *testing.T) { WorkerPod: "pod-1", WorkerPodUid: testWorkerUID("pod-1"), }, - InProgressSnapshotName: "snapshot-1", + InProgressSnapshotUri: someActorSnapshotURI(t, testStorageLocation, "team-a", "snapshot-1"), }, } created := storetest.MustCreateActor(t, ctx, persistence, actor) @@ -685,9 +675,9 @@ func TestEnsurePausedSnapshotUploaded_Preconditions(t *testing.T) { created := storetest.MustCreateActor(t, ctx, persistence, &ateapipb.Actor{ Metadata: &ateapipb.ResourceMetadata{Atespace: "team-a", Name: "actor-1"}, Status: &ateapipb.ActorStatus{ - State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, - InProgressSnapshotName: "snap-dest", - LocalSnapshotInfo: &ateapipb.LocalSnapshotInfo{SnapshotName: "snap", NodeVmsWithLocalSnapshots: []string{"node1"}}, + State: ateapipb.ActorState_ACTOR_STATE_SUSPENDING, + InProgressSnapshotUri: someActorSnapshotURI(t, testStorageLocation, "team-a", "snap-dest"), + LocalSnapshotInfo: &ateapipb.LocalSnapshotInfo{SnapshotName: "snap", NodeVmsWithLocalSnapshots: []string{"node1"}}, }, }) diff --git a/cmd/ateapi/internal/controlapi/workflow_worker_delete_test.go b/cmd/ateapi/internal/controlapi/workflow_worker_delete_test.go index 4ad02e6d20..1cfecf6ae0 100644 --- a/cmd/ateapi/internal/controlapi/workflow_worker_delete_test.go +++ b/cmd/ateapi/internal/controlapi/workflow_worker_delete_test.go @@ -109,7 +109,7 @@ func TestDeleteWorkerWorkflow_ReleasesBoundActor(t *testing.T) { actor := seedAPIActor(t, ctx, persistence, ateapipb.ActorState_ACTOR_STATE_RUNNING, func(a *ateapipb.Actor) { // Both in-progress checkpoints are set so the assertion covers the // shared crash path, which cannot know which workflow was in flight. - a.Status.InProgressSnapshotName = "partial-snapshot" + a.Status.InProgressSnapshotUri = someActorSnapshotURI(t, testStorageLocation, apiActorRef.Atespace, "partial-snapshot") a.Status.InProgressLocalSnapshotName = "partial-local-snapshot" a.Status.ExternalSnapshot = &ateapipb.ExternalSnapshot{SnapshotUri: someActorSnapshotURI(t, testStorageLocation, apiActorRef.Atespace, "last")} }) @@ -136,7 +136,7 @@ func TestDeleteWorkerWorkflow_ReleasesBoundActor(t *testing.T) { } // The durable one is kept: it names the prefix whatever atelet already // uploaded lives under, which the actor's delete needs to collect it. - if got.GetStatus().GetInProgressSnapshotName() != "partial-snapshot" { + if want := someActorSnapshotURI(t, testStorageLocation, apiActorRef.Atespace, "partial-snapshot"); got.GetStatus().GetInProgressSnapshotUri() != want { t.Errorf("in-progress external checkpoint not preserved: %v", got.GetStatus()) } // The last completed snapshot is what makes the actor resumable, so it stays. diff --git a/cmd/ateapi/internal/controlapi/zz_generated.validation.go b/cmd/ateapi/internal/controlapi/zz_generated.validation.go index 3bbc3dbc9e..72b2d0ea8f 100644 --- a/cmd/ateapi/internal/controlapi/zz_generated.validation.go +++ b/cmd/ateapi/internal/controlapi/zz_generated.validation.go @@ -462,7 +462,7 @@ func Validate_ActorStatus( errs = append(errs, fn(fldPath.Child("worker_assignment"), obj.WorkerAssignment, oldVal, oldObj != nil)...) } - { // field ateapipb.ActorStatus.InProgressSnapshotName + { // field ateapipb.ActorStatus.InProgressSnapshotUri fn := func( fldPath *field.Path, obj, oldObj *string, @@ -481,16 +481,16 @@ func Validate_ActorStatus( if earlyReturn { return // do not proceed } - if e := validate.ShortName(ctx, op, fldPath, obj, oldObj); len(e) != 0 { + if e := validate.MaxLength(ctx, op, fldPath, obj, oldObj, 2048); len(e) != 0 { errs = append(errs, e...) } return } oldVal := safe.Field(oldObj, func(oldObj *ateapipb.ActorStatus) *string { - return &oldObj.InProgressSnapshotName + return &oldObj.InProgressSnapshotUri }) - errs = append(errs, fn(fldPath.Child("in_progress_snapshot_name"), &obj.InProgressSnapshotName, oldVal, oldObj != nil)...) + errs = append(errs, fn(fldPath.Child("in_progress_snapshot_uri"), &obj.InProgressSnapshotUri, oldVal, oldObj != nil)...) } { // field ateapipb.ActorStatus.ExternalSnapshot diff --git a/pkg/proto/ateapipb/ateapi.pb.go b/pkg/proto/ateapipb/ateapi.pb.go index 8f04416d2e..63a223ab9d 100644 --- a/pkg/proto/ateapipb/ateapi.pb.go +++ b/pkg/proto/ateapipb/ateapi.pb.go @@ -1486,12 +1486,12 @@ type ActorStatus struct { // +k8s:optional // +k8s:update=NoModify # can be set and cleared, but not changed in place WorkerAssignment *WorkerAssignment `protobuf:"bytes,2,opt,name=worker_assignment,json=workerAssignment,proto3" json:"worker_assignment,omitempty"` - // The name the in-progress durable snapshot will be stored under. Snapshot - // names are server-generated UUIDs, but any resource name is valid here. + // in_progress_snapshot_uri is the URI in object storage of the durable + // snapshot the Actor is currently taking. // // +k8s:optional - // +k8s:format=k8s-short-name - InProgressSnapshotName string `protobuf:"bytes,3,opt,name=in_progress_snapshot_name,json=inProgressSnapshotName,proto3" json:"in_progress_snapshot_name,omitempty"` + // +k8s:maxLength=2048 + InProgressSnapshotUri string `protobuf:"bytes,3,opt,name=in_progress_snapshot_uri,json=inProgressSnapshotUri,proto3" json:"in_progress_snapshot_uri,omitempty"` // external_snapshot is the Actor's current external snapshot. // If the Actor was created from a Tag this is the tag's snapshot, borrowed // until the Actor's first suspend writes one of its own. Otherwise it is @@ -1578,9 +1578,9 @@ func (x *ActorStatus) GetWorkerAssignment() *WorkerAssignment { return nil } -func (x *ActorStatus) GetInProgressSnapshotName() string { +func (x *ActorStatus) GetInProgressSnapshotUri() string { if x != nil { - return x.InProgressSnapshotName + return x.InProgressSnapshotUri } return "" } @@ -6823,11 +6823,11 @@ const file_ateapi_proto_rawDesc = "" + "\x19CredentialHeaderInjection\x12\x16\n" + "\x06header\x18\x01 \x01(\tR\x06header\x12\x16\n" + "\x06prefix\x18\x02 \x01(\tR\x06prefix\x12%\n" + - "\x0ecredential_uri\x18\x03 \x01(\tR\rcredentialUri\"\x8b\x04\n" + + "\x0ecredential_uri\x18\x03 \x01(\tR\rcredentialUri\"\x89\x04\n" + "\vActorStatus\x12(\n" + "\x05state\x18\x01 \x01(\x0e2\x12.ateapi.ActorStateR\x05state\x12E\n" + - "\x11worker_assignment\x18\x02 \x01(\v2\x18.ateapi.WorkerAssignmentR\x10workerAssignment\x129\n" + - "\x19in_progress_snapshot_name\x18\x03 \x01(\tR\x16inProgressSnapshotName\x12E\n" + + "\x11worker_assignment\x18\x02 \x01(\v2\x18.ateapi.WorkerAssignmentR\x10workerAssignment\x127\n" + + "\x18in_progress_snapshot_uri\x18\x03 \x01(\tR\x15inProgressSnapshotUri\x12E\n" + "\x11external_snapshot\x18\x04 \x01(\v2\x18.ateapi.ExternalSnapshotR\x10externalSnapshot\x12I\n" + "\x13local_snapshot_info\x18\x05 \x01(\v2\x19.ateapi.LocalSnapshotInfoR\x11localSnapshotInfo\x12;\n" + "\ractor_volumes\x18\a \x03(\v2\x16.ateapi.ExternalVolumeR\factorVolumes\x12D\n" + diff --git a/pkg/proto/ateapipb/ateapi.proto b/pkg/proto/ateapipb/ateapi.proto index 00a3d35b3b..f3c865cefc 100644 --- a/pkg/proto/ateapipb/ateapi.proto +++ b/pkg/proto/ateapipb/ateapi.proto @@ -528,12 +528,12 @@ message ActorStatus { // +k8s:update=NoModify # can be set and cleared, but not changed in place WorkerAssignment worker_assignment = 2; - // The name the in-progress durable snapshot will be stored under. Snapshot - // names are server-generated UUIDs, but any resource name is valid here. + // in_progress_snapshot_uri is the URI in object storage of the durable + // snapshot the Actor is currently taking. // // +k8s:optional - // +k8s:format=k8s-short-name - string in_progress_snapshot_name = 3; + // +k8s:maxLength=2048 + string in_progress_snapshot_uri = 3; // external_snapshot is the Actor's current external snapshot. // If the Actor was created from a Tag this is the tag's snapshot, borrowed