From 7aefe96eb9ec2d74ccbd052e702ff1afee62db49 Mon Sep 17 00:00:00 2001 From: Eitan Yarmush Date: Sat, 5 Sep 2026 23:41:56 +0000 Subject: [PATCH 1/3] Use tag UIDs in snapshot storage paths Derive tag snapshot destinations and cleanup prefixes from the persisted tag UID. Retain an immutable storage location instead of an in-progress URI so failed copies can be collected independently of their source actor and template. Signed-off-by: Eitan Yarmush --- benchmarking/locust/common/ateapi_pb2.py | 368 +++++++++--------- .../controlapi/functionaltest/actor_test.go | 13 +- .../controlapi/functionaltest/tag_test.go | 30 +- cmd/ateapi/internal/controlapi/tag.go | 20 +- cmd/ateapi/internal/controlapi/tag_test.go | 40 +- .../internal/controlapi/workflow_tag.go | 52 ++- .../internal/controlapi/workflow_tag_test.go | 30 +- .../controlapi/zz_generated.validation.go | 2 +- cmd/ateapi/internal/store/atepg/atepg.go | 4 +- cmd/ateapi/internal/store/atepg/atepg_test.go | 4 +- .../internal/store/storecontract/contract.go | 35 +- .../internal/printer/printer_test.go | 2 +- docs/api-guide.md | 6 +- internal/e2e/suites/demo/demo_test.go | 8 +- internal/resources/snapshot.go | 24 +- internal/resources/snapshot_test.go | 36 +- pkg/proto/ateapipb/ateapi.pb.go | 30 +- pkg/proto/ateapipb/ateapi.proto | 15 +- 18 files changed, 372 insertions(+), 347 deletions(-) diff --git a/benchmarking/locust/common/ateapi_pb2.py b/benchmarking/locust/common/ateapi_pb2.py index 576745cc7..bd8cd9fdd 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\"\x8f\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 \n\x18in_progress_snapshot_uri\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\"\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\"\xa7\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\x10source_actor_uid\x18\x04 \x01(\t\x12\x18\n\x10storage_location\x18\x05 \x01(\tJ\x04\x08\x03\x10\x04R\x18in_progress_snapshot_uri\"\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=9237 - _globals['_SNAPSHOTCONTENTSCOPE']._serialized_end=9365 - _globals['_TAGSCOPE']._serialized_start=9367 - _globals['_TAGSCOPE']._serialized_end=9453 - _globals['_ACTORSTATE']._serialized_start=9456 - _globals['_ACTORSTATE']._serialized_end=9703 - _globals['_SANDBOXCLASS']._serialized_start=9705 - _globals['_SANDBOXCLASS']._serialized_end=9803 - _globals['_RESUMESOURCE']._serialized_start=9805 - _globals['_RESUMESOURCE']._serialized_end=9905 - _globals['_ACTORMETADATAFIELD']._serialized_start=9908 - _globals['_ACTORMETADATAFIELD']._serialized_end=10062 - _globals['_WORKERSTATE']._serialized_start=10064 - _globals['_WORKERSTATE']._serialized_end=10159 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_start=10161 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_end=10268 + _globals['_SNAPSHOTCONTENTSCOPE']._serialized_start=9261 + _globals['_SNAPSHOTCONTENTSCOPE']._serialized_end=9389 + _globals['_TAGSCOPE']._serialized_start=9391 + _globals['_TAGSCOPE']._serialized_end=9477 + _globals['_ACTORSTATE']._serialized_start=9480 + _globals['_ACTORSTATE']._serialized_end=9727 + _globals['_SANDBOXCLASS']._serialized_start=9729 + _globals['_SANDBOXCLASS']._serialized_end=9827 + _globals['_RESUMESOURCE']._serialized_start=9829 + _globals['_RESUMESOURCE']._serialized_end=9929 + _globals['_ACTORMETADATAFIELD']._serialized_start=9932 + _globals['_ACTORMETADATAFIELD']._serialized_end=10086 + _globals['_WORKERSTATE']._serialized_start=10088 + _globals['_WORKERSTATE']._serialized_end=10183 + _globals['_ACTORCERTIFICATEPURPOSE']._serialized_start=10185 + _globals['_ACTORCERTIFICATEPURPOSE']._serialized_end=10292 _globals['_EXTERNALSNAPSHOT']._serialized_start=86 _globals['_EXTERNALSNAPSHOT']._serialized_end=179 _globals['_LOCALSNAPSHOTINFO']._serialized_start=182 @@ -105,171 +105,171 @@ _globals['_WORKERASSIGNMENT']._serialized_start=2068 _globals['_WORKERASSIGNMENT']._serialized_end=2235 _globals['_TAGSTATUS']._serialized_start=2238 - _globals['_TAGSTATUS']._serialized_end=2381 - _globals['_TAG']._serialized_start=2384 - _globals['_TAG']._serialized_end=2542 - _globals['_ATESPACE']._serialized_start=2544 - _globals['_ATESPACE']._serialized_end=2598 - _globals['_OBJECTREF']._serialized_start=2600 - _globals['_OBJECTREF']._serialized_end=2643 - _globals['_ACTORTEMPLATE']._serialized_start=2646 - _globals['_ACTORTEMPLATE']._serialized_end=3001 - _globals['_RESOURCES']._serialized_start=3003 - _globals['_RESOURCES']._serialized_end=3046 - _globals['_LIMITS']._serialized_start=3048 - _globals['_LIMITS']._serialized_end=3088 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_start=3091 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_end=3248 - _globals['_ACTORTEMPLATESTATUS']._serialized_start=3250 - _globals['_ACTORTEMPLATESTATUS']._serialized_end=3333 - _globals['_SANDBOXCONFIG']._serialized_start=3335 - _globals['_SANDBOXCONFIG']._serialized_end=3416 - _globals['_SNAPSHOTSCONFIG']._serialized_start=3419 - _globals['_SNAPSHOTSCONFIG']._serialized_end=3602 - _globals['_ONRESUMECONFIG']._serialized_start=3604 - _globals['_ONRESUMECONFIG']._serialized_end=3661 - _globals['_CONTAINER']._serialized_start=3664 - _globals['_CONTAINER']._serialized_end=3938 - _globals['_SECURITYCONTEXT']._serialized_start=3940 - _globals['_SECURITYCONTEXT']._serialized_end=4001 - _globals['_CAPABILITIES']._serialized_start=4003 - _globals['_CAPABILITIES']._serialized_end=4044 - _globals['_ENVVAR']._serialized_start=4046 - _globals['_ENVVAR']._serialized_end=4083 - _globals['_CONTAINERREADYZ']._serialized_start=4085 - _globals['_CONTAINERREADYZ']._serialized_end=4168 - _globals['_HTTPGETACTION']._serialized_start=4170 - _globals['_HTTPGETACTION']._serialized_end=4213 - _globals['_VOLUME']._serialized_start=4216 - _globals['_VOLUME']._serialized_end=4452 - _globals['_IMAGEVOLUMESOURCE']._serialized_start=4454 - _globals['_IMAGEVOLUMESOURCE']._serialized_end=4492 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_start=4494 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_end=4518 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_start=4520 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_end=4590 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_start=4592 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_end=4668 - _globals['_SYSTEMINFODATASOURCE']._serialized_start=4671 - _globals['_SYSTEMINFODATASOURCE']._serialized_end=4803 - _globals['_ACTORMETADATADATASOURCE']._serialized_start=4805 - _globals['_ACTORMETADATADATASOURCE']._serialized_end=4872 - _globals['_ACTORMETADATAITEM']._serialized_start=4874 - _globals['_ACTORMETADATAITEM']._serialized_end=4950 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_start=4952 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_end=5003 - _globals['_VOLUMEMOUNT']._serialized_start=5005 - _globals['_VOLUMEMOUNT']._serialized_end=5052 - _globals['_CREATEATESPACEREQUEST']._serialized_start=5054 - _globals['_CREATEATESPACEREQUEST']._serialized_end=5113 - _globals['_GETATESPACEREQUEST']._serialized_start=5115 - _globals['_GETATESPACEREQUEST']._serialized_end=5172 - _globals['_LISTATESPACESREQUEST']._serialized_start=5174 - _globals['_LISTATESPACESREQUEST']._serialized_end=5235 - _globals['_LISTATESPACESRESPONSE']._serialized_start=5237 - _globals['_LISTATESPACESRESPONSE']._serialized_end=5322 - _globals['_DELETEATESPACEREQUEST']._serialized_start=5324 - _globals['_DELETEATESPACEREQUEST']._serialized_end=5384 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_start=5386 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_end=5461 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_start=5463 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_end=5531 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_start=5533 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_end=5617 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_start=5619 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_end=5720 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_start=5722 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_end=5793 - _globals['_GETACTORREQUEST']._serialized_start=5795 - _globals['_GETACTORREQUEST']._serialized_end=5846 - _globals['_CREATEACTORREQUEST']._serialized_start=5848 - _globals['_CREATEACTORREQUEST']._serialized_end=5898 - _globals['_UPDATEACTORREQUEST']._serialized_start=5900 - _globals['_UPDATEACTORREQUEST']._serialized_end=5950 - _globals['_SUSPENDACTORREQUEST']._serialized_start=5952 - _globals['_SUSPENDACTORREQUEST']._serialized_end=6007 - _globals['_SUSPENDACTORRESPONSE']._serialized_start=6009 - _globals['_SUSPENDACTORRESPONSE']._serialized_end=6061 - _globals['_PAUSEACTORREQUEST']._serialized_start=6063 - _globals['_PAUSEACTORREQUEST']._serialized_end=6116 - _globals['_PAUSEACTORRESPONSE']._serialized_start=6118 - _globals['_PAUSEACTORRESPONSE']._serialized_end=6168 - _globals['_RESUMEACTORREQUEST']._serialized_start=6170 - _globals['_RESUMEACTORREQUEST']._serialized_end=6238 - _globals['_RESUMEACTORRESPONSE']._serialized_start=6240 - _globals['_RESUMEACTORRESPONSE']._serialized_end=6308 - _globals['_DELETEACTORREQUEST']._serialized_start=6310 - _globals['_DELETEACTORREQUEST']._serialized_end=6383 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_start=6385 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_end=6448 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_start=6450 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_end=6561 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_start=6563 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_end=6674 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_start=6676 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_end=6742 - _globals['_GETTAGREQUEST']._serialized_start=6744 - _globals['_GETTAGREQUEST']._serialized_end=6791 - _globals['_LISTTAGSREQUEST']._serialized_start=6793 - _globals['_LISTTAGSREQUEST']._serialized_end=6867 - _globals['_LISTTAGSRESPONSE']._serialized_start=6869 - _globals['_LISTTAGSRESPONSE']._serialized_end=6939 - _globals['_CREATETAGREQUEST']._serialized_start=6941 - _globals['_CREATETAGREQUEST']._serialized_end=6985 - _globals['_UPDATETAGREQUEST']._serialized_start=6987 - _globals['_UPDATETAGREQUEST']._serialized_end=7031 - _globals['_DELETETAGREQUEST']._serialized_start=7033 - _globals['_DELETETAGREQUEST']._serialized_end=7083 - _globals['_DELETEOPTIONS']._serialized_start=7085 - _globals['_DELETEOPTIONS']._serialized_end=7130 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_start=7132 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_end=7241 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_start=7243 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_end=7356 - _globals['_LISTWORKERSREQUEST']._serialized_start=7358 - _globals['_LISTWORKERSREQUEST']._serialized_end=7417 - _globals['_LISTWORKERSRESPONSE']._serialized_start=7419 - _globals['_LISTWORKERSRESPONSE']._serialized_end=7498 - _globals['_GETWORKERREQUEST']._serialized_start=7500 - _globals['_GETWORKERREQUEST']._serialized_end=7553 - _globals['_CREATEWORKERREQUEST']._serialized_start=7555 - _globals['_CREATEWORKERREQUEST']._serialized_end=7608 - _globals['_UPDATEWORKERREQUEST']._serialized_start=7610 - _globals['_UPDATEWORKERREQUEST']._serialized_end=7663 - _globals['_DELETEWORKERREQUEST']._serialized_start=7665 - _globals['_DELETEWORKERREQUEST']._serialized_end=7761 - _globals['_DRAINWORKERREQUEST']._serialized_start=7763 - _globals['_DRAINWORKERREQUEST']._serialized_end=7818 - _globals['_LISTACTORSREQUEST']._serialized_start=7820 - _globals['_LISTACTORSREQUEST']._serialized_end=7896 - _globals['_LISTACTORSRESPONSE']._serialized_start=7898 - _globals['_LISTACTORSRESPONSE']._serialized_end=7974 - _globals['_WORKER']._serialized_start=7977 - _globals['_WORKER']._serialized_end=8303 - _globals['_WORKER_LABELSENTRY']._serialized_start=8258 - _globals['_WORKER_LABELSENTRY']._serialized_end=8303 - _globals['_WORKERSTATUS']._serialized_start=8306 - _globals['_WORKERSTATUS']._serialized_end=8443 - _globals['_WORKERRESOURCES']._serialized_start=8445 - _globals['_WORKERRESOURCES']._serialized_end=8516 - _globals['_ACTORASSIGNMENT']._serialized_start=8519 - _globals['_ACTORASSIGNMENT']._serialized_end=8718 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_start=8720 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_end=8824 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_start=8826 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_end=8885 - _globals['_MINTJWTREQUEST']._serialized_start=8887 - _globals['_MINTJWTREQUEST']._serialized_end=8978 - _globals['_MINTJWTRESPONSE']._serialized_start=8980 - _globals['_MINTJWTRESPONSE']._serialized_end=9016 - _globals['_MINTCERTREQUEST']._serialized_start=9019 - _globals['_MINTCERTREQUEST']._serialized_end=9186 - _globals['_MINTCERTRESPONSE']._serialized_start=9188 - _globals['_MINTCERTRESPONSE']._serialized_end=9234 - _globals['_CONTROL']._serialized_start=10271 - _globals['_CONTROL']._serialized_end=12562 - _globals['_ACTORIDENTITY']._serialized_start=12565 - _globals['_ACTORIDENTITY']._serialized_end=12703 - _globals['_WORKERSERVICE']._serialized_start=12705 - _globals['_WORKERSERVICE']._serialized_end=12810 + _globals['_TAGSTATUS']._serialized_end=2405 + _globals['_TAG']._serialized_start=2408 + _globals['_TAG']._serialized_end=2566 + _globals['_ATESPACE']._serialized_start=2568 + _globals['_ATESPACE']._serialized_end=2622 + _globals['_OBJECTREF']._serialized_start=2624 + _globals['_OBJECTREF']._serialized_end=2667 + _globals['_ACTORTEMPLATE']._serialized_start=2670 + _globals['_ACTORTEMPLATE']._serialized_end=3025 + _globals['_RESOURCES']._serialized_start=3027 + _globals['_RESOURCES']._serialized_end=3070 + _globals['_LIMITS']._serialized_start=3072 + _globals['_LIMITS']._serialized_end=3112 + _globals['_GOLDENSNAPSHOTSTATUS']._serialized_start=3115 + _globals['_GOLDENSNAPSHOTSTATUS']._serialized_end=3272 + _globals['_ACTORTEMPLATESTATUS']._serialized_start=3274 + _globals['_ACTORTEMPLATESTATUS']._serialized_end=3357 + _globals['_SANDBOXCONFIG']._serialized_start=3359 + _globals['_SANDBOXCONFIG']._serialized_end=3440 + _globals['_SNAPSHOTSCONFIG']._serialized_start=3443 + _globals['_SNAPSHOTSCONFIG']._serialized_end=3626 + _globals['_ONRESUMECONFIG']._serialized_start=3628 + _globals['_ONRESUMECONFIG']._serialized_end=3685 + _globals['_CONTAINER']._serialized_start=3688 + _globals['_CONTAINER']._serialized_end=3962 + _globals['_SECURITYCONTEXT']._serialized_start=3964 + _globals['_SECURITYCONTEXT']._serialized_end=4025 + _globals['_CAPABILITIES']._serialized_start=4027 + _globals['_CAPABILITIES']._serialized_end=4068 + _globals['_ENVVAR']._serialized_start=4070 + _globals['_ENVVAR']._serialized_end=4107 + _globals['_CONTAINERREADYZ']._serialized_start=4109 + _globals['_CONTAINERREADYZ']._serialized_end=4192 + _globals['_HTTPGETACTION']._serialized_start=4194 + _globals['_HTTPGETACTION']._serialized_end=4237 + _globals['_VOLUME']._serialized_start=4240 + _globals['_VOLUME']._serialized_end=4476 + _globals['_IMAGEVOLUMESOURCE']._serialized_start=4478 + _globals['_IMAGEVOLUMESOURCE']._serialized_end=4516 + _globals['_DURABLEDIRVOLUMESOURCE']._serialized_start=4518 + _globals['_DURABLEDIRVOLUMESOURCE']._serialized_end=4542 + _globals['_EXTERNALVOLUMETEMPLATE']._serialized_start=4544 + _globals['_EXTERNALVOLUMETEMPLATE']._serialized_end=4614 + _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_start=4616 + _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_end=4692 + _globals['_SYSTEMINFODATASOURCE']._serialized_start=4695 + _globals['_SYSTEMINFODATASOURCE']._serialized_end=4827 + _globals['_ACTORMETADATADATASOURCE']._serialized_start=4829 + _globals['_ACTORMETADATADATASOURCE']._serialized_end=4896 + _globals['_ACTORMETADATAITEM']._serialized_start=4898 + _globals['_ACTORMETADATAITEM']._serialized_end=4974 + _globals['_TRUSTBUNDLEDATASOURCE']._serialized_start=4976 + _globals['_TRUSTBUNDLEDATASOURCE']._serialized_end=5027 + _globals['_VOLUMEMOUNT']._serialized_start=5029 + _globals['_VOLUMEMOUNT']._serialized_end=5076 + _globals['_CREATEATESPACEREQUEST']._serialized_start=5078 + _globals['_CREATEATESPACEREQUEST']._serialized_end=5137 + _globals['_GETATESPACEREQUEST']._serialized_start=5139 + _globals['_GETATESPACEREQUEST']._serialized_end=5196 + _globals['_LISTATESPACESREQUEST']._serialized_start=5198 + _globals['_LISTATESPACESREQUEST']._serialized_end=5259 + _globals['_LISTATESPACESRESPONSE']._serialized_start=5261 + _globals['_LISTATESPACESRESPONSE']._serialized_end=5346 + _globals['_DELETEATESPACEREQUEST']._serialized_start=5348 + _globals['_DELETEATESPACEREQUEST']._serialized_end=5408 + _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_start=5410 + _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_end=5485 + _globals['_GETACTORTEMPLATEREQUEST']._serialized_start=5487 + _globals['_GETACTORTEMPLATEREQUEST']._serialized_end=5555 + _globals['_LISTACTORTEMPLATESREQUEST']._serialized_start=5557 + _globals['_LISTACTORTEMPLATESREQUEST']._serialized_end=5641 + _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_start=5643 + _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_end=5744 + _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_start=5746 + _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_end=5817 + _globals['_GETACTORREQUEST']._serialized_start=5819 + _globals['_GETACTORREQUEST']._serialized_end=5870 + _globals['_CREATEACTORREQUEST']._serialized_start=5872 + _globals['_CREATEACTORREQUEST']._serialized_end=5922 + _globals['_UPDATEACTORREQUEST']._serialized_start=5924 + _globals['_UPDATEACTORREQUEST']._serialized_end=5974 + _globals['_SUSPENDACTORREQUEST']._serialized_start=5976 + _globals['_SUSPENDACTORREQUEST']._serialized_end=6031 + _globals['_SUSPENDACTORRESPONSE']._serialized_start=6033 + _globals['_SUSPENDACTORRESPONSE']._serialized_end=6085 + _globals['_PAUSEACTORREQUEST']._serialized_start=6087 + _globals['_PAUSEACTORREQUEST']._serialized_end=6140 + _globals['_PAUSEACTORRESPONSE']._serialized_start=6142 + _globals['_PAUSEACTORRESPONSE']._serialized_end=6192 + _globals['_RESUMEACTORREQUEST']._serialized_start=6194 + _globals['_RESUMEACTORREQUEST']._serialized_end=6262 + _globals['_RESUMEACTORRESPONSE']._serialized_start=6264 + _globals['_RESUMEACTORRESPONSE']._serialized_end=6332 + _globals['_DELETEACTORREQUEST']._serialized_start=6334 + _globals['_DELETEACTORREQUEST']._serialized_end=6407 + _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_start=6409 + _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_end=6472 + _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_start=6474 + _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_end=6585 + _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_start=6587 + _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_end=6698 + _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_start=6700 + _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_end=6766 + _globals['_GETTAGREQUEST']._serialized_start=6768 + _globals['_GETTAGREQUEST']._serialized_end=6815 + _globals['_LISTTAGSREQUEST']._serialized_start=6817 + _globals['_LISTTAGSREQUEST']._serialized_end=6891 + _globals['_LISTTAGSRESPONSE']._serialized_start=6893 + _globals['_LISTTAGSRESPONSE']._serialized_end=6963 + _globals['_CREATETAGREQUEST']._serialized_start=6965 + _globals['_CREATETAGREQUEST']._serialized_end=7009 + _globals['_UPDATETAGREQUEST']._serialized_start=7011 + _globals['_UPDATETAGREQUEST']._serialized_end=7055 + _globals['_DELETETAGREQUEST']._serialized_start=7057 + _globals['_DELETETAGREQUEST']._serialized_end=7107 + _globals['_DELETEOPTIONS']._serialized_start=7109 + _globals['_DELETEOPTIONS']._serialized_end=7154 + _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_start=7156 + _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_end=7265 + _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_start=7267 + _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_end=7380 + _globals['_LISTWORKERSREQUEST']._serialized_start=7382 + _globals['_LISTWORKERSREQUEST']._serialized_end=7441 + _globals['_LISTWORKERSRESPONSE']._serialized_start=7443 + _globals['_LISTWORKERSRESPONSE']._serialized_end=7522 + _globals['_GETWORKERREQUEST']._serialized_start=7524 + _globals['_GETWORKERREQUEST']._serialized_end=7577 + _globals['_CREATEWORKERREQUEST']._serialized_start=7579 + _globals['_CREATEWORKERREQUEST']._serialized_end=7632 + _globals['_UPDATEWORKERREQUEST']._serialized_start=7634 + _globals['_UPDATEWORKERREQUEST']._serialized_end=7687 + _globals['_DELETEWORKERREQUEST']._serialized_start=7689 + _globals['_DELETEWORKERREQUEST']._serialized_end=7785 + _globals['_DRAINWORKERREQUEST']._serialized_start=7787 + _globals['_DRAINWORKERREQUEST']._serialized_end=7842 + _globals['_LISTACTORSREQUEST']._serialized_start=7844 + _globals['_LISTACTORSREQUEST']._serialized_end=7920 + _globals['_LISTACTORSRESPONSE']._serialized_start=7922 + _globals['_LISTACTORSRESPONSE']._serialized_end=7998 + _globals['_WORKER']._serialized_start=8001 + _globals['_WORKER']._serialized_end=8327 + _globals['_WORKER_LABELSENTRY']._serialized_start=8282 + _globals['_WORKER_LABELSENTRY']._serialized_end=8327 + _globals['_WORKERSTATUS']._serialized_start=8330 + _globals['_WORKERSTATUS']._serialized_end=8467 + _globals['_WORKERRESOURCES']._serialized_start=8469 + _globals['_WORKERRESOURCES']._serialized_end=8540 + _globals['_ACTORASSIGNMENT']._serialized_start=8543 + _globals['_ACTORASSIGNMENT']._serialized_end=8742 + _globals['_SETWORKERCAPACITYREQUEST']._serialized_start=8744 + _globals['_SETWORKERCAPACITYREQUEST']._serialized_end=8848 + _globals['_SETWORKERCAPACITYRESPONSE']._serialized_start=8850 + _globals['_SETWORKERCAPACITYRESPONSE']._serialized_end=8909 + _globals['_MINTJWTREQUEST']._serialized_start=8911 + _globals['_MINTJWTREQUEST']._serialized_end=9002 + _globals['_MINTJWTRESPONSE']._serialized_start=9004 + _globals['_MINTJWTRESPONSE']._serialized_end=9040 + _globals['_MINTCERTREQUEST']._serialized_start=9043 + _globals['_MINTCERTREQUEST']._serialized_end=9210 + _globals['_MINTCERTRESPONSE']._serialized_start=9212 + _globals['_MINTCERTRESPONSE']._serialized_end=9258 + _globals['_CONTROL']._serialized_start=10295 + _globals['_CONTROL']._serialized_end=12586 + _globals['_ACTORIDENTITY']._serialized_start=12589 + _globals['_ACTORIDENTITY']._serialized_end=12727 + _globals['_WORKERSERVICE']._serialized_start=12729 + _globals['_WORKERSERVICE']._serialized_end=12834 # @@protoc_insertion_point(module_scope) diff --git a/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go b/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go index 3a323a8c4..87ebda70d 100644 --- a/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go +++ b/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go @@ -356,7 +356,7 @@ func TestCreateActor_PendingTag(t *testing.T) { // Simulates a tag creation that failed in while writing the snapshot to // external storage. pending := seedTag(t, tc, "pending-source", "pending", func(tag *ateapipb.Tag) { - tag.Status.InProgressSnapshotUri = tag.GetStatus().GetSnapshot().GetSnapshotUri() + tag.Status.StorageLocation = testStorageLocation tag.Status.Snapshot = nil tag.Status.ActorTemplateUid = tmpl.GetMetadata().GetUid() }) @@ -371,15 +371,17 @@ func TestCreateActor_PendingTag(t *testing.T) { assertGrpcError(t, err, codes.FailedPrecondition, "source Tag is still being created or failed creation") // Finishing the tag creation, so now the tag is qualified to be a tag source. - snapshotURI := pending.GetStatus().GetInProgressSnapshotUri() + snapshotURI, err := resources.NewTagSnapshotURI(pending.GetStatus().GetStorageLocation(), pending.GetMetadata().GetAtespace(), pending.GetMetadata().GetUid()) + if err != nil { + t.Fatalf("NewTagSnapshotURI: %v", err) + } if _, err := tc.persistence.UpdateTag(ctx, resources.TagRefFromTag(pending), store.PreconditionFrom(pending), func(toUpdate *ateapipb.Tag) error { toUpdate.Status.Snapshot = &ateapipb.ExternalSnapshot{ - SnapshotUri: snapshotURI, + SnapshotUri: snapshotURI.String(), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, } - toUpdate.Status.InProgressSnapshotUri = "" return nil }); err != nil { t.Fatalf("finalizing the tag: %v", err) @@ -396,7 +398,7 @@ func TestCreateActor_PendingTag(t *testing.T) { } // The clone points at the tag's snapshot, under the tag's own prefix: the // tag still owns those objects. - if got := clone.GetStatus().GetExternalSnapshot().GetSnapshotUri(); got != snapshotURI { + if got := clone.GetStatus().GetExternalSnapshot().GetSnapshotUri(); got != snapshotURI.String() { t.Errorf("clone external snapshot = %q, want the tag's %q", got, snapshotURI) } } @@ -2213,6 +2215,7 @@ func TestSuspendActor(t *testing.T) { Snapshot: &ateapipb.ExternalSnapshot{SnapshotUri: tagSnapshotURI, ContentScope: sourceActor.GetStatus().GetExternalSnapshot().GetContentScope()}, ActorTemplateUid: tmpl.GetMetadata().GetUid(), SourceActorUid: sourceActor.GetMetadata().GetUid(), + StorageLocation: tmpl.GetSnapshotsConfig().GetStorageLocation(), }, } stored, err := tc.client.GetTag(context.Background(), &ateapipb.GetTagRequest{Tag: tagRef}) diff --git a/cmd/ateapi/internal/controlapi/functionaltest/tag_test.go b/cmd/ateapi/internal/controlapi/functionaltest/tag_test.go index 6ed0e65d7..8f9be6ed3 100644 --- a/cmd/ateapi/internal/controlapi/functionaltest/tag_test.go +++ b/cmd/ateapi/internal/controlapi/functionaltest/tag_test.go @@ -53,24 +53,38 @@ func seedTag(t *testing.T, tc *testContext, actorName, tagName string, opts ...f if err != nil { t.Fatalf("recording the actor's external snapshot: %v", err) } - // The tag owns its own copy, under the tag prefix rather than the actor's. - tagSnapshotURI, err := resources.NewTagSnapshotURI(testStorageLocation, testAtespace, tagName) - if err != nil { - t.Fatalf("NewTagSnapshotURI: %v", err) - } tag := &ateapipb.Tag{ Metadata: &ateapipb.ResourceMetadata{Atespace: testAtespace, Name: tagName}, Scope: ateapipb.TagScope_TAG_SCOPE_ATESPACE, SourceActor: resources.ActorRefFromActor(actor).ToObjectRef(), Status: &ateapipb.TagStatus{ - Snapshot: &ateapipb.ExternalSnapshot{SnapshotUri: tagSnapshotURI.String(), ContentScope: actor.GetStatus().GetExternalSnapshot().GetContentScope()}, - SourceActorUid: actor.GetMetadata().GetUid(), + Snapshot: &ateapipb.ExternalSnapshot{ContentScope: actor.GetStatus().GetExternalSnapshot().GetContentScope()}, + StorageLocation: testStorageLocation, + SourceActorUid: actor.GetMetadata().GetUid(), }, } for _, opt := range opts { opt(tag) } - return storetest.MustCreateTag(t, ctx, tc.persistence, tag) + snapshot := tag.Status.Snapshot + tag.Status.Snapshot = nil + tag = storetest.MustCreateTag(t, ctx, tc.persistence, tag) + if snapshot == nil { + return tag + } + uri, err := resources.NewTagSnapshotURI(testStorageLocation, testAtespace, tag.GetMetadata().GetUid()) + if err != nil { + t.Fatalf("NewTagSnapshotURI: %v", err) + } + snapshot.SnapshotUri = uri.String() + tag, err = tc.persistence.UpdateTag(ctx, resources.TagRefFromTag(tag), store.PreconditionFrom(tag), func(toUpdate *ateapipb.Tag) error { + toUpdate.Status.Snapshot = snapshot + return nil + }) + if err != nil { + t.Fatalf("finalizing tag: %v", err) + } + return tag } // TestCreateTag_ReusedTagName tests that a tag does not move diff --git a/cmd/ateapi/internal/controlapi/tag.go b/cmd/ateapi/internal/controlapi/tag.go index aa77059d6..23f647efe 100644 --- a/cmd/ateapi/internal/controlapi/tag.go +++ b/cmd/ateapi/internal/controlapi/tag.go @@ -299,20 +299,12 @@ func (s *RPCService) releaseTagSnapshot(ctx context.Context, tag *ateapipb.Tag) return nil } atespace, name := tag.GetMetadata().GetAtespace(), tag.GetMetadata().GetName() - for _, snapshotURI := range []string{ - tag.GetStatus().GetSnapshot().GetSnapshotUri(), - tag.GetStatus().GetInProgressSnapshotUri(), - } { - if snapshotURI == "" { - continue - } - uri, err := resources.ParseSnapshotURI(snapshotURI) - if err != nil { - return fmt.Errorf("while parsing the external snapshot %q of tag %s/%s: %w", snapshotURI, atespace, name, err) - } - if err := objectstore.DeletePrefix(ctx, s.objectStore, uri.Prefix()); err != nil { - return fmt.Errorf("while releasing the external snapshot %q of tag %s/%s: %w", snapshotURI, atespace, name, err) - } + uri, err := resources.NewTagSnapshotURI(tag.GetStatus().GetStorageLocation(), atespace, tag.GetMetadata().GetUid()) + if err != nil { + return fmt.Errorf("while resolving the external snapshot of tag %s/%s: %w", atespace, name, err) + } + if err := objectstore.DeletePrefix(ctx, s.objectStore, uri.Prefix()); err != nil { + return fmt.Errorf("while releasing the external snapshot %q of tag %s/%s: %w", uri, atespace, name, err) } return nil } diff --git a/cmd/ateapi/internal/controlapi/tag_test.go b/cmd/ateapi/internal/controlapi/tag_test.go index d3361ca70..69c6ad52d 100644 --- a/cmd/ateapi/internal/controlapi/tag_test.go +++ b/cmd/ateapi/internal/controlapi/tag_test.go @@ -814,7 +814,7 @@ func newTestTag(t *testing.T, name string, actor *ateapipb.Actor) *ateapipb.Tag func newPendingTestTag(t *testing.T, name string, actor *ateapipb.Actor) *ateapipb.Tag { t.Helper() tag := newTestTag(t, name, actor) - tag.Status.InProgressSnapshotUri = tag.GetStatus().GetSnapshot().GetSnapshotUri() + tag.Status.StorageLocation = testStorageLocation tag.Status.Snapshot = nil return tag } @@ -944,19 +944,16 @@ func TestUpdateTag_ConcurrentUpdate(t *testing.T) { // finish the job. func TestDeleteTag_ReleasesExternalSnapshot(t *testing.T) { ctx := context.Background() - persistence, cleanup := storetest.SetupTestStore(t) - t.Cleanup(cleanup) - - actor := newTestSuspendedActor(t, ctx, persistence, testAtespace, "actor-1") - tag := storetest.MustCreateTag(t, ctx, persistence, newTestTag(t, "v1", actor)) - tagRef := resources.TagRefFromTag(tag) - - objects := objectstoretest.New() - uri, err := resources.ParseSnapshotURI(tag.GetStatus().GetSnapshot().GetSnapshotUri()) + persistence := newTestPersistence(t) + template := seedSubstrateTemplate(t, ctx, persistence, "sub-tmpl") + w, objects := newFinalizeWorkflow(persistence) + actor, _ := seedTagSource(t, ctx, persistence, objects, template, "actor-1", "manifest.json", "memory.zst") + tag, err := w.TagActorSnapshot(ctx, tagToCreate(resources.ActorRefFromActor(actor), "v1")) if err != nil { - t.Fatalf("ParseSnapshotURI: %v", err) + t.Fatalf("TagActorSnapshot: %v", err) } - objects.PutSnapshot(t, uri, "manifest.json", "memory.zst") + tagRef := resources.TagRefFromTag(tag) + uri := mustReservedTagSnapshotURI(t, tag) svc := &RPCService{impl: newServiceImpl(persistence, nil), objectStore: objects} // A delete that cannot reach object storage must not drop the row: it is @@ -998,14 +995,29 @@ func TestDeleteTag_ReleasesPendingSnapshot(t *testing.T) { tagRef := resources.TagRefFromTag(tag) objects := objectstoretest.New() - uri, err := resources.ParseSnapshotURI(tag.GetStatus().GetInProgressSnapshotUri()) + uri, err := resources.NewTagSnapshotURI(tag.GetStatus().GetStorageLocation(), tag.GetMetadata().GetAtespace(), tag.GetMetadata().GetUid()) if err != nil { - t.Fatalf("ParseSnapshotURI: %v", err) + t.Fatalf("NewTagSnapshotURI: %v", err) } // What a copy that died halfway through left behind. objects.PutSnapshot(t, uri, "manifest.json") svc := &RPCService{impl: newServiceImpl(persistence, nil), objectStore: objects} + // Cleanup must work without the source actor or its template. + mustUpdateActorStatus(t, ctx, persistence, actor, func(s *ateapipb.ActorStatus) { + s.State = ateapipb.ActorState_ACTOR_STATE_DELETING + }) + if _, err := persistence.DeleteActor(ctx, resources.ActorRefFromActor(actor)); err != nil { + t.Fatalf("DeleteActor: %v", err) + } + objects.OnDelete = func(string, string) error { return errObjectStore } + if _, err := svc.DeleteTag(ctx, &ateapipb.DeleteTagRequest{Tag: tagRef.ToObjectRef()}); !errors.Is(err, errObjectStore) { + t.Fatalf("DeleteTag = %v, want an error wrapping %v", err, errObjectStore) + } + if _, err := persistence.GetTag(ctx, tagRef); err != nil { + t.Fatalf("GetTag after failed cleanup: %v", err) + } + objects.OnDelete = nil if _, err := svc.DeleteTag(ctx, &ateapipb.DeleteTagRequest{Tag: tagRef.ToObjectRef()}); err != nil { t.Fatalf("DeleteTag: %v", err) } diff --git a/cmd/ateapi/internal/controlapi/workflow_tag.go b/cmd/ateapi/internal/controlapi/workflow_tag.go index d27b9071e..880ea9c46 100644 --- a/cmd/ateapi/internal/controlapi/workflow_tag.go +++ b/cmd/ateapi/internal/controlapi/workflow_tag.go @@ -33,10 +33,9 @@ import ( // or deleting the actor does not garbage collect the tag's snapshot. // // The tag is built in 3 phases: -// 1. Record intent: in status.in_progress_snapshot_uri -// 2. Write snapshot to the remote storage indicated in status.in_progress_snapshot_uri -// 3. Finalize: clear status.in_progress_snapshot_uri and write the final -// snapshot object to the tag. +// 1. Reserve the tag and record its storage location. +// 2. Copy the snapshot under the reserved tag's UID. +// 3. Finalize: write the completed snapshot object to the tag. // // The tag captures whichever snapshot the actor holds when the workflow runs. // An actor keeps no snapshot history, so a suspend that lands first moves what @@ -76,10 +75,14 @@ func (w *ActorWorkflow) TagActorSnapshot(ctx context.Context, tag *ateapipb.Tag) if err != nil { return nil, err } - if err := w.ensureTagSnapshotCopied(leaseCtx, reserved, snapshot); err != nil { + dst, err := resources.NewTagSnapshotURI(reserved.GetStatus().GetStorageLocation(), tagRef.Atespace, reserved.GetMetadata().GetUid()) + if err != nil { + return nil, fmt.Errorf("while building the snapshot URI for tag %s: %w", tagRef, err) + } + if err := w.ensureTagSnapshotCopied(leaseCtx, reserved, snapshot, dst); err != nil { return nil, err } - return w.ensureTagFinalized(leaseCtx, reserved, snapshot) + return w.ensureTagFinalized(leaseCtx, reserved, snapshot, dst) } // loadActorForTag fetches the actor to tag and its template, and checks that @@ -115,8 +118,7 @@ func (w *ActorWorkflow) loadActorForTag(ctx context.Context, actorRef resources. return actor, actorTemplate, nil } -// ensureTagReserved takes the tag's name and sets status.in_progress_snapshot_uri -// to express the intent to create a new tag. +// ensureTagReserved takes the tag's name and records the storage location. // // A name already taken is AlreadyExists, whether the tag holding it is finished // or was left pending by a create that died. Resuming a pending row would mean @@ -127,9 +129,9 @@ func (w *ActorWorkflow) ensureTagReserved(ctx context.Context, tagRef resources. ctx, done := stepSpan(ctx, "ReserveTag") defer func() { err = done(err) }() - dst, err := resources.NewTagSnapshotURI(actorTemplate.GetSnapshotsConfig().GetStorageLocation(), tagRef.Atespace, resources.NewSnapshotName()) - if err != nil { - return nil, fmt.Errorf("while building the snapshot URI for tag %s: %w", tagRef, err) + location := actorTemplate.GetSnapshotsConfig().GetStorageLocation() + if err := resources.ValidateSnapshotLocation(location); err != nil { + return nil, fmt.Errorf("invalid storage location for tag %s: %w", tagRef, err) } tagToCreate := &ateapipb.Tag{ Metadata: &ateapipb.ResourceMetadata{Atespace: tagRef.Atespace, Name: tagRef.Name}, @@ -141,9 +143,9 @@ func (w *ActorWorkflow) ensureTagReserved(ctx context.Context, tagRef resources. // and a tag that claimed the new template would hand clones the old template's // memory under the new one's identity, past the data-only downgrade a resume of // the actor itself would take. - ActorTemplateUid: actor.GetStatus().GetCurrentActorTemplateUid(), - InProgressSnapshotUri: dst.String(), - SourceActorUid: actor.GetMetadata().GetUid(), + ActorTemplateUid: actor.GetStatus().GetCurrentActorTemplateUid(), + StorageLocation: location, + SourceActorUid: actor.GetMetadata().GetUid(), }, } @@ -160,10 +162,9 @@ func (w *ActorWorkflow) ensureTagReserved(ctx context.Context, tagRef resources. } // ensureTagSnapshotCopied copies the actor's external snapshot to the tag's own -// prefix, the one the reserved row names. That prefix is freshly minted, so it -// is empty by construction and the copy never blends with objects some other -// attempt left. -func (w *ActorWorkflow) ensureTagSnapshotCopied(ctx context.Context, tag *ateapipb.Tag, snapshot *ateapipb.ExternalSnapshot) (err error) { +// prefix, derived from the reserved row's freshly minted UID. The prefix is +// empty by construction, so the copy never blends with another attempt's objects. +func (w *ActorWorkflow) ensureTagSnapshotCopied(ctx context.Context, tag *ateapipb.Tag, snapshot *ateapipb.ExternalSnapshot, dst resources.SnapshotURI) (err error) { ctx, done := stepSpan(ctx, "CopyTagSnapshot") defer func() { err = done(err) }() @@ -176,33 +177,26 @@ func (w *ActorWorkflow) ensureTagSnapshotCopied(ctx context.Context, tag *ateapi if err != nil { return fmt.Errorf("while parsing the external snapshot %q of the source actor: %w", snapshot.GetSnapshotUri(), err) } - dst, err := resources.ParseSnapshotURI(tag.GetStatus().GetInProgressSnapshotUri()) - if err != nil { - return fmt.Errorf("while parsing the in-progress snapshot %q of tag %s: %w", tag.GetStatus().GetInProgressSnapshotUri(), tagRef, err) - } if err := objectstore.CopyPrefix(ctx, w.objectStore, src.Prefix(), dst.Prefix()); err != nil { return fmt.Errorf("while copying the external snapshot for tag %s: %w", tagRef, err) } return nil } -// ensureTagFinalized publishes the copy: it sets status.snapshot to the URI the -// row already names and clears status.in_progress_snapshot_uri. Until this -// lands the tag is pending — visible, unusable, and naming exactly the objects -// an unfinished create stranded, so deleting it collects them. -func (w *ActorWorkflow) ensureTagFinalized(ctx context.Context, tag *ateapipb.Tag, snapshot *ateapipb.ExternalSnapshot) (_ *ateapipb.Tag, err error) { +// ensureTagFinalized publishes the copy by setting status.snapshot. Until this +// lands the tag is pending and unusable; deleting it collects any partial copy. +func (w *ActorWorkflow) ensureTagFinalized(ctx context.Context, tag *ateapipb.Tag, snapshot *ateapipb.ExternalSnapshot, dst resources.SnapshotURI) (_ *ateapipb.Tag, err error) { ctx, done := stepSpan(ctx, "FinalizeTag") defer func() { err = done(err) }() tagRef := resources.TagRefFromTag(tag) // The copy is byte-identical to the source, so it carries the same content. finalSnapshot := &ateapipb.ExternalSnapshot{ - SnapshotUri: tag.GetStatus().GetInProgressSnapshotUri(), + SnapshotUri: dst.String(), ContentScope: snapshot.GetContentScope(), } stored, err := w.store.UpdateTag(ctx, tagRef, store.PreconditionFrom(tag), func(toUpdate *ateapipb.Tag) error { toUpdate.Status.Snapshot = finalSnapshot - toUpdate.Status.InProgressSnapshotUri = "" return nil }) if err != nil { diff --git a/cmd/ateapi/internal/controlapi/workflow_tag_test.go b/cmd/ateapi/internal/controlapi/workflow_tag_test.go index 0677f94b9..3e239860b 100644 --- a/cmd/ateapi/internal/controlapi/workflow_tag_test.go +++ b/cmd/ateapi/internal/controlapi/workflow_tag_test.go @@ -91,8 +91,8 @@ func TestTagActorSnapshot(t *testing.T) { if tagSnapshot == "" || tagSnapshot == actorSnapshot.String() { t.Fatalf("tag snapshot uri = %q, want a copy of its own rather than the actor's %q", tagSnapshot, actorSnapshot) } - if got := tag.GetStatus().GetInProgressSnapshotUri(); got != "" { - t.Errorf("in-progress snapshot uri = %q, want cleared once the tag is finished", got) + if want := mustReservedTagSnapshotURI(t, tag).String(); tagSnapshot != want { + t.Errorf("tag snapshot uri = %q, want UID-based URI %q", tagSnapshot, want) } if got, want := tag.GetStatus().GetSourceActorUid(), actor.GetMetadata().GetUid(); got != want { t.Errorf("source actor uid = %q, want %q", got, want) @@ -251,11 +251,8 @@ func TestTagActorSnapshot_RecreateAfterCopyFailure(t *testing.T) { if got := pending.GetStatus().GetSnapshot().GetSnapshotUri(); got != "" { t.Errorf("snapshot uri after the failure = %q, want unset: the copy never finished", got) } - stranded := pending.GetStatus().GetInProgressSnapshotUri() - if stranded == "" { - t.Fatal("in-progress snapshot uri after the failure is empty, want the prefix the copy stranded") - } - strandedURI := mustParseSnapshotURI(t, stranded) + strandedURI := mustReservedTagSnapshotURI(t, pending) + stranded := strandedURI.String() if diff := cmp.Diff([]string{"manifest.json"}, objects.Snapshot(t, strandedURI)); diff != "" { t.Errorf("the stranded partial copy mismatch (-want +got):\n%s", diff) } @@ -270,7 +267,7 @@ func TestTagActorSnapshot_RecreateAfterCopyFailure(t *testing.T) { if err != nil { t.Fatalf("GetTag after the refused create: %v", err) } - if got := stillPending.GetStatus().GetInProgressSnapshotUri(); got != stranded { + if got := mustReservedTagSnapshotURI(t, stillPending).String(); got != stranded { t.Errorf("in-progress snapshot uri after the refused create = %q, want the prefix the row already named, %q", got, stranded) } if diff := cmp.Diff([]string{"manifest.json"}, objects.Snapshot(t, strandedURI)); diff != "" { @@ -294,8 +291,8 @@ func TestTagActorSnapshot_RecreateAfterCopyFailure(t *testing.T) { if recreated == "" || recreated == stranded { t.Fatalf("snapshot uri after the delete = %q, want a fresh prefix rather than the stranded %q", recreated, stranded) } - if got := tag.GetStatus().GetInProgressSnapshotUri(); got != "" { - t.Errorf("in-progress snapshot uri after the delete = %q, want cleared", got) + if want := mustReservedTagSnapshotURI(t, tag).String(); recreated != want { + t.Errorf("recreated tag snapshot uri = %q, want UID-based URI %q", recreated, want) } if diff := cmp.Diff([]string{"manifest.json", "memory.zst"}, objects.Snapshot(t, mustParseSnapshotURI(t, recreated))); diff != "" { t.Errorf("the tag's external snapshot after the delete mismatch (-want +got):\n%s", diff) @@ -333,7 +330,7 @@ func TestTagActorSnapshot_RacesDelete(t *testing.T) { t.Errorf("GetTag during the copy: %v", err) return } - pendingURI = reserved.GetStatus().GetInProgressSnapshotUri() + pendingURI = mustReservedTagSnapshotURI(t, reserved).String() _, deleteErr = svc.DeleteTag(ctx, &ateapipb.DeleteTagRequest{Tag: tagRef.ToObjectRef()}) }) return nil @@ -393,7 +390,7 @@ func TestTagActorSnapshot_NameTakenByAnotherActor(t *testing.T) { if err != nil { t.Fatalf("GetTag: %v", err) } - strandedURI := mustParseSnapshotURI(t, pending.GetStatus().GetInProgressSnapshotUri()) + strandedURI := mustReservedTagSnapshotURI(t, pending) // The second actor asks for the same name, with object storage healthy: it // must not inherit the first actor's prefix. @@ -417,3 +414,12 @@ func TestTagActorSnapshot_NameTakenByAnotherActor(t *testing.T) { t.Errorf("the second actor's external snapshot mismatch (-want +got):\n%s", diff) } } + +func mustReservedTagSnapshotURI(t *testing.T, tag *ateapipb.Tag) resources.SnapshotURI { + t.Helper() + uri, err := resources.NewTagSnapshotURI(tag.GetStatus().GetStorageLocation(), tag.GetMetadata().GetAtespace(), tag.GetMetadata().GetUid()) + if err != nil { + t.Fatalf("NewTagSnapshotURI: %v", err) + } + return uri +} diff --git a/cmd/ateapi/internal/controlapi/zz_generated.validation.go b/cmd/ateapi/internal/controlapi/zz_generated.validation.go index 79ec6b449..b33f974bf 100644 --- a/cmd/ateapi/internal/controlapi/zz_generated.validation.go +++ b/cmd/ateapi/internal/controlapi/zz_generated.validation.go @@ -6251,8 +6251,8 @@ func Validate_TagStatus( } // field ateapipb.TagStatus.ActorTemplateUid has no validation - // field ateapipb.TagStatus.InProgressSnapshotUri has no validation // field ateapipb.TagStatus.SourceActorUid has no validation + // field ateapipb.TagStatus.StorageLocation has no validation return errs } diff --git a/cmd/ateapi/internal/store/atepg/atepg.go b/cmd/ateapi/internal/store/atepg/atepg.go index fabede86d..a30ccef29 100644 --- a/cmd/ateapi/internal/store/atepg/atepg.go +++ b/cmd/ateapi/internal/store/atepg/atepg.go @@ -1157,8 +1157,8 @@ func validateUpdateTagMutation(storedTag, mutatedTag *ateapipb.Tag) error { if stored, mutated := storedTag.GetStatus().GetSnapshot(), mutatedTag.GetStatus().GetSnapshot(); stored != nil && !proto.Equal(stored, mutated) { return fmt.Errorf("status.snapshot is immutable once set: mutation changed it from %s to %s", stored, mutated) } - if stored, mutated := storedTag.GetStatus().GetInProgressSnapshotUri(), mutatedTag.GetStatus().GetInProgressSnapshotUri(); stored != mutated && mutated != "" { - return fmt.Errorf("status.in_progress_snapshot_uri may only be cleared: mutation changed it from %q to %q", stored, mutated) + if stored, mutated := storedTag.GetStatus().GetStorageLocation(), mutatedTag.GetStatus().GetStorageLocation(); stored != mutated { + return fmt.Errorf("status.storage_location is immutable: mutation changed it from %q to %q", stored, mutated) } if stored, mutated := storedTag.GetStatus().GetActorTemplateUid(), mutatedTag.GetStatus().GetActorTemplateUid(); stored != mutated { return fmt.Errorf("status.actor_template_uid is immutable: mutation changed it from %q to %q", stored, mutated) diff --git a/cmd/ateapi/internal/store/atepg/atepg_test.go b/cmd/ateapi/internal/store/atepg/atepg_test.go index a783be83b..d2ed62399 100644 --- a/cmd/ateapi/internal/store/atepg/atepg_test.go +++ b/cmd/ateapi/internal/store/atepg/atepg_test.go @@ -676,8 +676,8 @@ func TestCreateTag_TagForeignKeyErrors(t *testing.T) { _, err := s.CreateTag(ctx, &ateapipb.Tag{ Metadata: &ateapipb.ResourceMetadata{Atespace: "gone", Name: "latest"}, Status: &ateapipb.TagStatus{ - InProgressSnapshotUri: "gs://bucket/atespaces/gone/tags/latest", - SourceActorUid: actor.GetMetadata().GetUid(), + StorageLocation: "gs://bucket", + SourceActorUid: actor.GetMetadata().GetUid(), }, }) if !errors.Is(err, store.ErrFailedPrecondition) { diff --git a/cmd/ateapi/internal/store/storecontract/contract.go b/cmd/ateapi/internal/store/storecontract/contract.go index 99f47125e..65066a2aa 100644 --- a/cmd/ateapi/internal/store/storecontract/contract.go +++ b/cmd/ateapi/internal/store/storecontract/contract.go @@ -998,16 +998,16 @@ func newTestSuspendedActor(atespace, name string) *ateapipb.Actor { // newTestInProgressTag builds the row CreateTag reserves for a // tag of actor: ATESPACE-scoped, with no snapshot yet and the destination of -// the copy still to come recorded in status.in_progress_snapshot_uri. +// the copy still to come derived from status.storage_location and its UID. func newTestInProgressTag(name string, actor *ateapipb.Actor) *ateapipb.Tag { atespace := actor.GetMetadata().GetAtespace() return &ateapipb.Tag{ Metadata: &ateapipb.ResourceMetadata{Atespace: atespace, Name: name}, Scope: ateapipb.TagScope_TAG_SCOPE_ATESPACE, Status: &ateapipb.TagStatus{ - ActorTemplateUid: "template-uid", - InProgressSnapshotUri: testTagSnapshotURI("gs://private", atespace, name), - SourceActorUid: actor.GetMetadata().GetUid(), + ActorTemplateUid: "template-uid", + StorageLocation: "gs://private", + SourceActorUid: actor.GetMetadata().GetUid(), }, } } @@ -1062,18 +1062,17 @@ func runTagContractTests(t *testing.T, setup func(t *testing.T) store.Interface) t.Errorf("missing GetTag = %v, want ErrNotFound", err) } - // Finalize: naming the snapshot and clearing the in-progress URI - // together is the one transition status.snapshot is allowed. + // Finalize: publishing the copy is the one transition status.snapshot allows. ready, err := s.UpdateTag(ctx, resources.TagRef{Atespace: "team-a", Name: "production"}, store.PreconditionFrom(tag), finalizeTag) if err != nil { t.Fatalf("finalizing tag failed: %v", err) } - // Check if the pending URI was promoted to the Snapshot field. - if ready.GetStatus().GetSnapshot().GetSnapshotUri() != tag.GetStatus().GetInProgressSnapshotUri() { - t.Errorf("finalized tag snapshot uri = %q, want the reserved %q", ready.GetStatus().GetSnapshot().GetSnapshotUri(), tag.GetStatus().GetInProgressSnapshotUri()) + wantURI := testTagSnapshotURI(tag.GetStatus().GetStorageLocation(), "team-a", tag.GetMetadata().GetUid()) + if got := ready.GetStatus().GetSnapshot().GetSnapshotUri(); got != wantURI { + t.Errorf("finalized tag snapshot uri = %q, want %q", got, wantURI) } - if ready.GetStatus().GetInProgressSnapshotUri() != "" { - t.Errorf("finalized tag in-progress uri = %q, want it cleared", ready.GetStatus().GetInProgressSnapshotUri()) + if got := ready.GetStatus().GetStorageLocation(); got != tag.GetStatus().GetStorageLocation() { + t.Errorf("finalized tag storage location = %q, want unchanged", got) } updated, err := s.UpdateTag(ctx, resources.TagRef{Atespace: "team-a", Name: "production"}, store.PreconditionFrom(ready), func(toUpdate *ateapipb.Tag) error { @@ -1134,11 +1133,15 @@ func runTagContractTests(t *testing.T, setup func(t *testing.T) store.Interface) }, }, { - name: "reopening the in-progress snapshot uri", + name: "storage location", mutate: func(toUpdate *ateapipb.Tag) { - toUpdate.Status.InProgressSnapshotUri = testTagSnapshotURI("gs://private", "team-a", "again") + toUpdate.Status.StorageLocation = "gs://elsewhere" }, }, + { + name: "clearing the storage location", + mutate: func(toUpdate *ateapipb.Tag) { toUpdate.Status.StorageLocation = "" }, + }, { name: "actor template uid", mutate: func(toUpdate *ateapipb.Tag) { toUpdate.Status.ActorTemplateUid = "other-template-uid" }, @@ -1280,14 +1283,12 @@ func runTagContractTests(t *testing.T, setup func(t *testing.T) store.Interface) } // finalizeTag mutates a reserved tag the way the tag workflow's second -// transaction does: it names the copy that landed and clears the in-progress -// URI, in one update. +// transaction does: it names the copy that landed under the tag UID. func finalizeTag(toUpdate *ateapipb.Tag) error { toUpdate.Status.Snapshot = &ateapipb.ExternalSnapshot{ - SnapshotUri: toUpdate.GetStatus().GetInProgressSnapshotUri(), + SnapshotUri: testTagSnapshotURI(toUpdate.GetStatus().GetStorageLocation(), toUpdate.GetMetadata().GetAtespace(), toUpdate.GetMetadata().GetUid()), ContentScope: ateapipb.SnapshotContentScope_SNAPSHOT_CONTENT_SCOPE_FULL, } - toUpdate.Status.InProgressSnapshotUri = "" return nil } diff --git a/cmd/kubectl-ate/internal/printer/printer_test.go b/cmd/kubectl-ate/internal/printer/printer_test.go index 0d99e0395..7031af43d 100644 --- a/cmd/kubectl-ate/internal/printer/printer_test.go +++ b/cmd/kubectl-ate/internal/printer/printer_test.go @@ -489,7 +489,7 @@ func TestPrintTagsTo_Table(t *testing.T) { }, Scope: ateapipb.TagScope_TAG_SCOPE_ATESPACE, Status: &ateapipb.TagStatus{ - InProgressSnapshotUri: "gs://private/atespaces/team-a/tags/9f1c", + StorageLocation: "gs://private", }, }, } diff --git a/docs/api-guide.md b/docs/api-guide.md index 5a5b6fa98..051ecf76f 100644 --- a/docs/api-guide.md +++ b/docs/api-guide.md @@ -327,16 +327,16 @@ snapshotsConfig: ``` /atespaces//actors//snapshots/ -/atespaces//tags/ +/atespaces//tags/ ``` The objects of a snapshot (its manifest, memory image, durable-data tar) are named below it. So for the template above, a snapshot of an actor in atespace `team-a` is stored at `gs://my-bucket/secret-agent/atespaces/team-a/actors/3f8b…/snapshots/f47ac10b-…`, and the template's golden snapshot — the golden actor lives in the reserved `ate-golden` atespace — under `gs://my-bucket/secret-agent/atespaces/ate-golden/actors//snapshots/`. -An actor takes a series of snapshots over its life, so it gets a prefix of its own and each snapshot sits below it. A tag holds exactly one, so the tag's prefix *is* its snapshot's. The actor level is keyed on the UID rather than the name, so an actor recreated under a name that was used before never inherits its predecessor's objects. +An actor takes a series of snapshots over its life, so it gets a prefix of its own and each snapshot sits below it. A tag holds exactly one, so the tag's prefix *is* its snapshot's. Both owners are keyed on their UID, so recreating an actor or tag under the same name never inherits its predecessor's objects. A pending tag records its base location in `status.storageLocation`; together with its atespace and UID, this identifies any partial copy to collect if creation fails. An owner is collected by deleting everything under its prefix, and it can delete nothing else. That is what makes a borrowed snapshot safe: an actor created from a tag points at a URI under `tags/`, which its own prefix does not cover. See [Snapshot lifetime](#snapshot-lifetime). -An `Actor` reports its current snapshot in the server-managed `status.externalSnapshot`, a `Tag` in `status.snapshot`, and an `ActorTemplate` its golden one in `status.goldenSnapshotStatus.goldenSnapshot` — each an `ExternalSnapshot` carrying `snapshotUri` and the `contentScope` it captured. The URI is recorded when the snapshot is written, not recomputed on read, so the layout can change in future versions without stranding existing snapshots. All three are server-owned: do not send them on input, and parse a URI only against the scheme above. +An `Actor` reports its current snapshot in the server-managed `status.externalSnapshot`, a `Tag` in `status.snapshot`, and an `ActorTemplate` its golden one in `status.goldenSnapshotStatus.goldenSnapshot` — each an `ExternalSnapshot` carrying `snapshotUri` and the `contentScope` it captured. The URI is recorded when the snapshot is written. All three are server-owned: do not send them on input, and parse a URI only against the scheme above. An `ActorTemplate` belongs to one atespace, but one `storageLocation` still holds snapshots for many atespaces: the golden actor lives in the reserved `ate-golden` atespace, and a `PUBLISHED` snapshot may be cloned from other atespaces. The `` level exists so that access can be granted per tenant: an object-storage policy can only condition on an **object-name prefix**, and cannot read the identity recorded inside a snapshot's manifest. Binding a per-atespace grant on GCS looks like: diff --git a/internal/e2e/suites/demo/demo_test.go b/internal/e2e/suites/demo/demo_test.go index c5e6e5dc2..784aa23c8 100644 --- a/internal/e2e/suites/demo/demo_test.go +++ b/internal/e2e/suites/demo/demo_test.go @@ -152,8 +152,12 @@ func TestActorSnapshotLifecycle(t *testing.T) { if got := tagToUpdate.GetStatus().GetSnapshot().GetSnapshotUri(); got == "" || got == snapshotURI { t.Fatalf("Tag %s snapshot uri = %q, want a copy of its own", tagRef.GetName(), got) } - if got := tagToUpdate.GetStatus().GetInProgressSnapshotUri(); got != "" { - t.Fatalf("Tag %s in-progress snapshot uri = %q, want it cleared", tagRef.GetName(), got) + wantTagURI, err := resources.NewTagSnapshotURI(tagToUpdate.GetStatus().GetStorageLocation(), tagToUpdate.GetMetadata().GetAtespace(), tagToUpdate.GetMetadata().GetUid()) + if err != nil { + t.Fatalf("NewTagSnapshotURI: %v", err) + } + if got := tagToUpdate.GetStatus().GetSnapshot().GetSnapshotUri(); got != wantTagURI.String() { + t.Errorf("tag snapshot URI = %q, want UID-based URI %q", got, wantTagURI) } listed, err := clients.SubstrateAPI.ListTags(ctx, &ateapipb.ListTagsRequest{Atespace: demoAtespace}) if err != nil { diff --git a/internal/resources/snapshot.go b/internal/resources/snapshot.go index 6c53a16da..c9b553e0e 100644 --- a/internal/resources/snapshot.go +++ b/internal/resources/snapshot.go @@ -60,9 +60,7 @@ func (p StoragePrefix) String() string { return p.uri } type SnapshotOwner struct { kind string atespace string - // id distinguishes one owner from every other of its kind: an Actor's UID, - // which no later Actor reuses, or, for a tag, the name of the single - // snapshot it owns. + // id is the owning Actor's or Tag's UID, which no later resource reuses. id string } @@ -73,12 +71,10 @@ func ActorSnapshotOwner(atespace, actorUID string) SnapshotOwner { return SnapshotOwner{kind: actorsOwnerKind, atespace: atespace, id: actorUID} } -// TagSnapshotOwner returns the owner of the one snapshot a Tag holds. A tag -// never takes a second snapshot, so its prefix is that snapshot's prefix, and -// the name is minted fresh rather than derived from the tag: a recreated tag -// cannot compute its way onto the objects its predecessor left. -func TagSnapshotOwner(atespace, snapshotName string) SnapshotOwner { - return SnapshotOwner{kind: tagsOwnerKind, atespace: atespace, id: snapshotName} +// TagSnapshotOwner returns the owner of the one snapshot a Tag holds. It is +// keyed on the UID so a recreated tag never inherits its predecessor's objects. +func TagSnapshotOwner(atespace, tagUID string) SnapshotOwner { + return SnapshotOwner{kind: tagsOwnerKind, atespace: atespace, id: tagUID} } // IsZero reports whether o is the zero SnapshotOwner. @@ -129,7 +125,7 @@ func (o SnapshotOwner) Prefix(location string) (StoragePrefix, error) { // gs://bucket/root location // gs://bucket/root/atespaces/team-a/actors/ an Actor's prefix // gs://bucket/root/atespaces/team-a/actors//snapshots/ one of its snapshots -// gs://bucket/root/atespaces/team-a/tags/ a tag's prefix, and +// gs://bucket/root/atespaces/team-a/tags/ a tag's prefix, and // its only snapshot type SnapshotURI struct { uri string @@ -160,13 +156,13 @@ func NewActorSnapshotURI(location, atespace, actorUID, name string) (SnapshotURI // NewTagSnapshotURI returns the URI of the snapshot a Tag owns, stored under // an ActorTemplate's snapshotsConfig.location. The tag's prefix and its // snapshot's are the same: a tag holds exactly one snapshot. -func NewTagSnapshotURI(location, atespace, name string) (SnapshotURI, error) { - owner := TagSnapshotOwner(atespace, name) +func NewTagSnapshotURI(location, atespace, tagUID string) (SnapshotURI, error) { + owner := TagSnapshotOwner(atespace, tagUID) prefix, err := owner.Prefix(location) if err != nil { return SnapshotURI{}, err } - return SnapshotURI{uri: prefix.String(), location: location, owner: owner, ownerPrefix: prefix.String(), name: name}, nil + return SnapshotURI{uri: prefix.String(), location: location, owner: owner, ownerPrefix: prefix.String(), name: tagUID}, nil } // ParseSnapshotURI parses a given snapshot URI. @@ -184,7 +180,7 @@ func ParseSnapshotURI(uri string) (SnapshotURI, error) { case n >= 6 && segments[n-6] == atespacesPathSegment && segments[n-4] == actorsOwnerKind && segments[n-2] == snapshotsPathSegment: u.Path = strings.Join(segments[:n-6], "/") return NewActorSnapshotURI(u.String(), segments[n-5], segments[n-3], segments[n-1]) - // /root/atespaces/team-a/tags/ + // /root/atespaces/team-a/tags/ // n-4 n-3 n-2 n-1 case n >= 4 && segments[n-4] == atespacesPathSegment && segments[n-2] == tagsOwnerKind: u.Path = strings.Join(segments[:n-4], "/") diff --git a/internal/resources/snapshot_test.go b/internal/resources/snapshot_test.go index e8e777a7b..195ef8da9 100644 --- a/internal/resources/snapshot_test.go +++ b/internal/resources/snapshot_test.go @@ -164,7 +164,7 @@ func TestNewTagSnapshotURI(t *testing.T) { name string location string atespace string - snapshot string + tagUID string want string wantErr bool }{ @@ -172,66 +172,66 @@ func TestNewTagSnapshotURI(t *testing.T) { name: "no trailing slash", location: "gs://bucket/root", atespace: "team-a", - snapshot: "snap-1", - want: "gs://bucket/root/atespaces/team-a/tags/snap-1", + tagUID: "tag-uid-1", + want: "gs://bucket/root/atespaces/team-a/tags/tag-uid-1", }, { name: "trailing slash", location: "gs://bucket/root/", atespace: "team-a", - snapshot: "snap-1", - want: "gs://bucket/root/atespaces/team-a/tags/snap-1", + tagUID: "tag-uid-1", + want: "gs://bucket/root/atespaces/team-a/tags/tag-uid-1", }, { name: "bucket only", location: "gs://bucket", atespace: "team-a", - snapshot: "snap-1", - want: "gs://bucket/atespaces/team-a/tags/snap-1", + tagUID: "tag-uid-1", + want: "gs://bucket/atespaces/team-a/tags/tag-uid-1", }, { name: "empty location", location: "", atespace: "team-a", - snapshot: "snap-1", + tagUID: "tag-uid-1", wantErr: true, }, { name: "invalid atespace", location: "gs://bucket/root", atespace: "Team_A", - snapshot: "snap-1", + tagUID: "tag-uid-1", wantErr: true, }, { - name: "invalid snapshot name", + name: "invalid tag UID", location: "gs://bucket/root", atespace: "team-a", - snapshot: "2026-08-05T10:04:05Z", + tagUID: "2026-08-05T10:04:05Z", wantErr: true, }, { - name: "empty snapshot name", + name: "empty tag UID", location: "gs://bucket/root", atespace: "team-a", - snapshot: "", + tagUID: "", wantErr: true, }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - got, err := NewTagSnapshotURI(tc.location, tc.atespace, tc.snapshot) + got, err := NewTagSnapshotURI(tc.location, tc.atespace, tc.tagUID) if (err != nil) != tc.wantErr { - t.Fatalf("NewTagSnapshotURI(%q, %q, %q) error = %v, wantErr %t", tc.location, tc.atespace, tc.snapshot, err, tc.wantErr) + t.Fatalf("NewTagSnapshotURI(%q, %q, %q) error = %v, wantErr %t", tc.location, tc.atespace, tc.tagUID, err, tc.wantErr) } if got.String() != tc.want { - t.Errorf("NewTagSnapshotURI(%q, %q, %q) = %q, want %q", tc.location, tc.atespace, tc.snapshot, got, tc.want) + t.Errorf("NewTagSnapshotURI(%q, %q, %q) = %q, want %q", tc.location, tc.atespace, tc.tagUID, got, tc.want) } if got.OwnerPrefix().String() != got.String() { - t.Errorf("NewTagSnapshotURI(%q, %q, %q).OwnerPrefix() = %q, want the snapshot's own prefix %q", tc.location, tc.atespace, tc.snapshot, got.OwnerPrefix(), got) + t.Errorf("NewTagSnapshotURI(%q, %q, %q).OwnerPrefix() = %q, want the snapshot's own prefix %q", tc.location, tc.atespace, tc.tagUID, got.OwnerPrefix(), got) } if tc.wantErr && !got.IsZero() { - t.Errorf("NewTagSnapshotURI(%q, %q, %q) returned %q alongside an error, want the zero value", tc.location, tc.atespace, tc.snapshot, got) + t.Errorf("NewTagSnapshotURI(%q, %q, %q) returned %q alongside an error, want the zero value", tc.location, tc.atespace, tc.tagUID, got) } }) } diff --git a/pkg/proto/ateapipb/ateapi.pb.go b/pkg/proto/ateapipb/ateapi.pb.go index 54359ee6d..fb13f40ff 100644 --- a/pkg/proto/ateapipb/ateapi.pb.go +++ b/pkg/proto/ateapipb/ateapi.pb.go @@ -1755,16 +1755,16 @@ type TagStatus struct { // UID of the ActorTemplate the snapshot was taken under. Actors can only be // seeded from a tag under the same template. ActorTemplateUid string `protobuf:"bytes,2,opt,name=actor_template_uid,json=actorTemplateUid,proto3" json:"actor_template_uid,omitempty"` - // in_progress_snapshot_uri is where CreateTag is copying the tag's own - // snapshot to. It is minted before a single object is written and cleared - // once snapshot is set, so a tag left with it set names exactly the objects - // its unfinished create stranded, and deleting the tag collects them. - InProgressSnapshotUri string `protobuf:"bytes,3,opt,name=in_progress_snapshot_uri,json=inProgressSnapshotUri,proto3" json:"in_progress_snapshot_uri,omitempty"` // source_actor_uid is the UID of the Actor this tag's snapshot was copied // from. SourceActorUid string `protobuf:"bytes,4,opt,name=source_actor_uid,json=sourceActorUid,proto3" json:"source_actor_uid,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Immutable base storage location captured when the tag is reserved. Its + // snapshot lives at /atespaces//tags/. + // Retained independently of the source actor and template so deleting an + // unfinished tag can collect any partial copy after those resources are gone. + StorageLocation string `protobuf:"bytes,5,opt,name=storage_location,json=storageLocation,proto3" json:"storage_location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TagStatus) Reset() { @@ -1811,16 +1811,16 @@ func (x *TagStatus) GetActorTemplateUid() string { return "" } -func (x *TagStatus) GetInProgressSnapshotUri() string { +func (x *TagStatus) GetSourceActorUid() string { if x != nil { - return x.InProgressSnapshotUri + return x.SourceActorUid } return "" } -func (x *TagStatus) GetSourceActorUid() string { +func (x *TagStatus) GetStorageLocation() string { if x != nil { - return x.SourceActorUid + return x.StorageLocation } return "" } @@ -6841,12 +6841,12 @@ const file_ateapi_proto_rawDesc = "" + "\n" + "worker_pod\x18\x03 \x01(\tR\tworkerPod\x12$\n" + "\x0eworker_pod_uid\x18\x04 \x01(\tR\fworkerPodUid\x12\"\n" + - "\rworker_pod_ip\x18\x05 \x01(\tR\vworkerPodIp\"\xd2\x01\n" + + "\rworker_pod_ip\x18\x05 \x01(\tR\vworkerPodIp\"\xe4\x01\n" + "\tTagStatus\x124\n" + "\bsnapshot\x18\x01 \x01(\v2\x18.ateapi.ExternalSnapshotR\bsnapshot\x12,\n" + - "\x12actor_template_uid\x18\x02 \x01(\tR\x10actorTemplateUid\x127\n" + - "\x18in_progress_snapshot_uri\x18\x03 \x01(\tR\x15inProgressSnapshotUri\x12(\n" + - "\x10source_actor_uid\x18\x04 \x01(\tR\x0esourceActorUid\"\xc4\x01\n" + + "\x12actor_template_uid\x18\x02 \x01(\tR\x10actorTemplateUid\x12(\n" + + "\x10source_actor_uid\x18\x04 \x01(\tR\x0esourceActorUid\x12)\n" + + "\x10storage_location\x18\x05 \x01(\tR\x0fstorageLocationJ\x04\b\x03\x10\x04R\x18in_progress_snapshot_uri\"\xc4\x01\n" + "\x03Tag\x124\n" + "\bmetadata\x18\x01 \x01(\v2\x18.ateapi.ResourceMetadataR\bmetadata\x12)\n" + "\x06status\x18\x02 \x01(\v2\x11.ateapi.TagStatusR\x06status\x12&\n" + diff --git a/pkg/proto/ateapipb/ateapi.proto b/pkg/proto/ateapipb/ateapi.proto index f6bd35105..1c97a47fa 100644 --- a/pkg/proto/ateapipb/ateapi.proto +++ b/pkg/proto/ateapipb/ateapi.proto @@ -634,6 +634,9 @@ message WorkerAssignment { // The tag is fixed to one external snapshot once its creation completes, so // the rest is immutable provenance. message TagStatus { + reserved 3; + reserved "in_progress_snapshot_uri"; + // snapshot is the external snapshot this tag points at. Unset while the tag // is still being created, and immutable once set: a tag never moves between // snapshots. A tag is usable only once this is set. @@ -645,15 +648,15 @@ message TagStatus { // seeded from a tag under the same template. string actor_template_uid = 2; - // in_progress_snapshot_uri is where CreateTag is copying the tag's own - // snapshot to. It is minted before a single object is written and cleared - // once snapshot is set, so a tag left with it set names exactly the objects - // its unfinished create stranded, and deleting the tag collects them. - string in_progress_snapshot_uri = 3; - // source_actor_uid is the UID of the Actor this tag's snapshot was copied // from. string source_actor_uid = 4; + + // Immutable base storage location captured when the tag is reserved. Its + // snapshot lives at /atespaces//tags/. + // Retained independently of the source actor and template so deleting an + // unfinished tag can collect any partial copy after those resources are gone. + string storage_location = 5; } // Tag is an Atespace-owned, stable name for one external snapshot. The From 930c556e0f4002a0f8c32c6d91d9f2d8875db99c Mon Sep 17 00:00:00 2001 From: Eitan Yarmush Date: Sat, 5 Sep 2026 23:44:38 +0000 Subject: [PATCH 2/3] Reuse the tag status field number for storage location Replace the removed in-progress snapshot URI at field 3 and regenerate the protobuf bindings and validation code. Backward compatibility with the previous field is not required. Signed-off-by: Eitan Yarmush --- benchmarking/locust/common/ateapi_pb2.py | 368 +++++++++--------- .../controlapi/zz_generated.validation.go | 2 +- pkg/proto/ateapipb/ateapi.pb.go | 28 +- pkg/proto/ateapipb/ateapi.proto | 13 +- 4 files changed, 204 insertions(+), 207 deletions(-) diff --git a/benchmarking/locust/common/ateapi_pb2.py b/benchmarking/locust/common/ateapi_pb2.py index bd8cd9fdd..ccc332b67 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\"\xa7\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\x10source_actor_uid\x18\x04 \x01(\t\x12\x18\n\x10storage_location\x18\x05 \x01(\tJ\x04\x08\x03\x10\x04R\x18in_progress_snapshot_uri\"\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\"\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') _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=9261 - _globals['_SNAPSHOTCONTENTSCOPE']._serialized_end=9389 - _globals['_TAGSCOPE']._serialized_start=9391 - _globals['_TAGSCOPE']._serialized_end=9477 - _globals['_ACTORSTATE']._serialized_start=9480 - _globals['_ACTORSTATE']._serialized_end=9727 - _globals['_SANDBOXCLASS']._serialized_start=9729 - _globals['_SANDBOXCLASS']._serialized_end=9827 - _globals['_RESUMESOURCE']._serialized_start=9829 - _globals['_RESUMESOURCE']._serialized_end=9929 - _globals['_ACTORMETADATAFIELD']._serialized_start=9932 - _globals['_ACTORMETADATAFIELD']._serialized_end=10086 - _globals['_WORKERSTATE']._serialized_start=10088 - _globals['_WORKERSTATE']._serialized_end=10183 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_start=10185 - _globals['_ACTORCERTIFICATEPURPOSE']._serialized_end=10292 + _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['_EXTERNALSNAPSHOT']._serialized_start=86 _globals['_EXTERNALSNAPSHOT']._serialized_end=179 _globals['_LOCALSNAPSHOTINFO']._serialized_start=182 @@ -105,171 +105,171 @@ _globals['_WORKERASSIGNMENT']._serialized_start=2068 _globals['_WORKERASSIGNMENT']._serialized_end=2235 _globals['_TAGSTATUS']._serialized_start=2238 - _globals['_TAGSTATUS']._serialized_end=2405 - _globals['_TAG']._serialized_start=2408 - _globals['_TAG']._serialized_end=2566 - _globals['_ATESPACE']._serialized_start=2568 - _globals['_ATESPACE']._serialized_end=2622 - _globals['_OBJECTREF']._serialized_start=2624 - _globals['_OBJECTREF']._serialized_end=2667 - _globals['_ACTORTEMPLATE']._serialized_start=2670 - _globals['_ACTORTEMPLATE']._serialized_end=3025 - _globals['_RESOURCES']._serialized_start=3027 - _globals['_RESOURCES']._serialized_end=3070 - _globals['_LIMITS']._serialized_start=3072 - _globals['_LIMITS']._serialized_end=3112 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_start=3115 - _globals['_GOLDENSNAPSHOTSTATUS']._serialized_end=3272 - _globals['_ACTORTEMPLATESTATUS']._serialized_start=3274 - _globals['_ACTORTEMPLATESTATUS']._serialized_end=3357 - _globals['_SANDBOXCONFIG']._serialized_start=3359 - _globals['_SANDBOXCONFIG']._serialized_end=3440 - _globals['_SNAPSHOTSCONFIG']._serialized_start=3443 - _globals['_SNAPSHOTSCONFIG']._serialized_end=3626 - _globals['_ONRESUMECONFIG']._serialized_start=3628 - _globals['_ONRESUMECONFIG']._serialized_end=3685 - _globals['_CONTAINER']._serialized_start=3688 - _globals['_CONTAINER']._serialized_end=3962 - _globals['_SECURITYCONTEXT']._serialized_start=3964 - _globals['_SECURITYCONTEXT']._serialized_end=4025 - _globals['_CAPABILITIES']._serialized_start=4027 - _globals['_CAPABILITIES']._serialized_end=4068 - _globals['_ENVVAR']._serialized_start=4070 - _globals['_ENVVAR']._serialized_end=4107 - _globals['_CONTAINERREADYZ']._serialized_start=4109 - _globals['_CONTAINERREADYZ']._serialized_end=4192 - _globals['_HTTPGETACTION']._serialized_start=4194 - _globals['_HTTPGETACTION']._serialized_end=4237 - _globals['_VOLUME']._serialized_start=4240 - _globals['_VOLUME']._serialized_end=4476 - _globals['_IMAGEVOLUMESOURCE']._serialized_start=4478 - _globals['_IMAGEVOLUMESOURCE']._serialized_end=4516 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_start=4518 - _globals['_DURABLEDIRVOLUMESOURCE']._serialized_end=4542 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_start=4544 - _globals['_EXTERNALVOLUMETEMPLATE']._serialized_end=4614 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_start=4616 - _globals['_SYSTEMINFOVOLUMESOURCE']._serialized_end=4692 - _globals['_SYSTEMINFODATASOURCE']._serialized_start=4695 - _globals['_SYSTEMINFODATASOURCE']._serialized_end=4827 - _globals['_ACTORMETADATADATASOURCE']._serialized_start=4829 - _globals['_ACTORMETADATADATASOURCE']._serialized_end=4896 - _globals['_ACTORMETADATAITEM']._serialized_start=4898 - _globals['_ACTORMETADATAITEM']._serialized_end=4974 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_start=4976 - _globals['_TRUSTBUNDLEDATASOURCE']._serialized_end=5027 - _globals['_VOLUMEMOUNT']._serialized_start=5029 - _globals['_VOLUMEMOUNT']._serialized_end=5076 - _globals['_CREATEATESPACEREQUEST']._serialized_start=5078 - _globals['_CREATEATESPACEREQUEST']._serialized_end=5137 - _globals['_GETATESPACEREQUEST']._serialized_start=5139 - _globals['_GETATESPACEREQUEST']._serialized_end=5196 - _globals['_LISTATESPACESREQUEST']._serialized_start=5198 - _globals['_LISTATESPACESREQUEST']._serialized_end=5259 - _globals['_LISTATESPACESRESPONSE']._serialized_start=5261 - _globals['_LISTATESPACESRESPONSE']._serialized_end=5346 - _globals['_DELETEATESPACEREQUEST']._serialized_start=5348 - _globals['_DELETEATESPACEREQUEST']._serialized_end=5408 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_start=5410 - _globals['_CREATEACTORTEMPLATEREQUEST']._serialized_end=5485 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_start=5487 - _globals['_GETACTORTEMPLATEREQUEST']._serialized_end=5555 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_start=5557 - _globals['_LISTACTORTEMPLATESREQUEST']._serialized_end=5641 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_start=5643 - _globals['_LISTACTORTEMPLATESRESPONSE']._serialized_end=5744 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_start=5746 - _globals['_DELETEACTORTEMPLATEREQUEST']._serialized_end=5817 - _globals['_GETACTORREQUEST']._serialized_start=5819 - _globals['_GETACTORREQUEST']._serialized_end=5870 - _globals['_CREATEACTORREQUEST']._serialized_start=5872 - _globals['_CREATEACTORREQUEST']._serialized_end=5922 - _globals['_UPDATEACTORREQUEST']._serialized_start=5924 - _globals['_UPDATEACTORREQUEST']._serialized_end=5974 - _globals['_SUSPENDACTORREQUEST']._serialized_start=5976 - _globals['_SUSPENDACTORREQUEST']._serialized_end=6031 - _globals['_SUSPENDACTORRESPONSE']._serialized_start=6033 - _globals['_SUSPENDACTORRESPONSE']._serialized_end=6085 - _globals['_PAUSEACTORREQUEST']._serialized_start=6087 - _globals['_PAUSEACTORREQUEST']._serialized_end=6140 - _globals['_PAUSEACTORRESPONSE']._serialized_start=6142 - _globals['_PAUSEACTORRESPONSE']._serialized_end=6192 - _globals['_RESUMEACTORREQUEST']._serialized_start=6194 - _globals['_RESUMEACTORREQUEST']._serialized_end=6262 - _globals['_RESUMEACTORRESPONSE']._serialized_start=6264 - _globals['_RESUMEACTORRESPONSE']._serialized_end=6332 - _globals['_DELETEACTORREQUEST']._serialized_start=6334 - _globals['_DELETEACTORREQUEST']._serialized_end=6407 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_start=6409 - _globals['_GETACTOREGRESSPOLICYREQUEST']._serialized_end=6472 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_start=6474 - _globals['_CREATEACTOREGRESSPOLICYREQUEST']._serialized_end=6585 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_start=6587 - _globals['_UPDATEACTOREGRESSPOLICYREQUEST']._serialized_end=6698 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_start=6700 - _globals['_DELETEACTOREGRESSPOLICYREQUEST']._serialized_end=6766 - _globals['_GETTAGREQUEST']._serialized_start=6768 - _globals['_GETTAGREQUEST']._serialized_end=6815 - _globals['_LISTTAGSREQUEST']._serialized_start=6817 - _globals['_LISTTAGSREQUEST']._serialized_end=6891 - _globals['_LISTTAGSRESPONSE']._serialized_start=6893 - _globals['_LISTTAGSRESPONSE']._serialized_end=6963 - _globals['_CREATETAGREQUEST']._serialized_start=6965 - _globals['_CREATETAGREQUEST']._serialized_end=7009 - _globals['_UPDATETAGREQUEST']._serialized_start=7011 - _globals['_UPDATETAGREQUEST']._serialized_end=7055 - _globals['_DELETETAGREQUEST']._serialized_start=7057 - _globals['_DELETETAGREQUEST']._serialized_end=7107 - _globals['_DELETEOPTIONS']._serialized_start=7109 - _globals['_DELETEOPTIONS']._serialized_end=7154 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_start=7156 - _globals['_LISTWORKERACTORASSIGNMENTSREQUEST']._serialized_end=7265 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_start=7267 - _globals['_LISTWORKERACTORASSIGNMENTSRESPONSE']._serialized_end=7380 - _globals['_LISTWORKERSREQUEST']._serialized_start=7382 - _globals['_LISTWORKERSREQUEST']._serialized_end=7441 - _globals['_LISTWORKERSRESPONSE']._serialized_start=7443 - _globals['_LISTWORKERSRESPONSE']._serialized_end=7522 - _globals['_GETWORKERREQUEST']._serialized_start=7524 - _globals['_GETWORKERREQUEST']._serialized_end=7577 - _globals['_CREATEWORKERREQUEST']._serialized_start=7579 - _globals['_CREATEWORKERREQUEST']._serialized_end=7632 - _globals['_UPDATEWORKERREQUEST']._serialized_start=7634 - _globals['_UPDATEWORKERREQUEST']._serialized_end=7687 - _globals['_DELETEWORKERREQUEST']._serialized_start=7689 - _globals['_DELETEWORKERREQUEST']._serialized_end=7785 - _globals['_DRAINWORKERREQUEST']._serialized_start=7787 - _globals['_DRAINWORKERREQUEST']._serialized_end=7842 - _globals['_LISTACTORSREQUEST']._serialized_start=7844 - _globals['_LISTACTORSREQUEST']._serialized_end=7920 - _globals['_LISTACTORSRESPONSE']._serialized_start=7922 - _globals['_LISTACTORSRESPONSE']._serialized_end=7998 - _globals['_WORKER']._serialized_start=8001 - _globals['_WORKER']._serialized_end=8327 - _globals['_WORKER_LABELSENTRY']._serialized_start=8282 - _globals['_WORKER_LABELSENTRY']._serialized_end=8327 - _globals['_WORKERSTATUS']._serialized_start=8330 - _globals['_WORKERSTATUS']._serialized_end=8467 - _globals['_WORKERRESOURCES']._serialized_start=8469 - _globals['_WORKERRESOURCES']._serialized_end=8540 - _globals['_ACTORASSIGNMENT']._serialized_start=8543 - _globals['_ACTORASSIGNMENT']._serialized_end=8742 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_start=8744 - _globals['_SETWORKERCAPACITYREQUEST']._serialized_end=8848 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_start=8850 - _globals['_SETWORKERCAPACITYRESPONSE']._serialized_end=8909 - _globals['_MINTJWTREQUEST']._serialized_start=8911 - _globals['_MINTJWTREQUEST']._serialized_end=9002 - _globals['_MINTJWTRESPONSE']._serialized_start=9004 - _globals['_MINTJWTRESPONSE']._serialized_end=9040 - _globals['_MINTCERTREQUEST']._serialized_start=9043 - _globals['_MINTCERTREQUEST']._serialized_end=9210 - _globals['_MINTCERTRESPONSE']._serialized_start=9212 - _globals['_MINTCERTRESPONSE']._serialized_end=9258 - _globals['_CONTROL']._serialized_start=10295 - _globals['_CONTROL']._serialized_end=12586 - _globals['_ACTORIDENTITY']._serialized_start=12589 - _globals['_ACTORIDENTITY']._serialized_end=12727 - _globals['_WORKERSERVICE']._serialized_start=12729 - _globals['_WORKERSERVICE']._serialized_end=12834 + _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 # @@protoc_insertion_point(module_scope) diff --git a/cmd/ateapi/internal/controlapi/zz_generated.validation.go b/cmd/ateapi/internal/controlapi/zz_generated.validation.go index b33f974bf..9858e1ffa 100644 --- a/cmd/ateapi/internal/controlapi/zz_generated.validation.go +++ b/cmd/ateapi/internal/controlapi/zz_generated.validation.go @@ -6251,8 +6251,8 @@ func Validate_TagStatus( } // field ateapipb.TagStatus.ActorTemplateUid has no validation - // field ateapipb.TagStatus.SourceActorUid has no validation // field ateapipb.TagStatus.StorageLocation has no validation + // field ateapipb.TagStatus.SourceActorUid has no validation return errs } diff --git a/pkg/proto/ateapipb/ateapi.pb.go b/pkg/proto/ateapipb/ateapi.pb.go index fb13f40ff..7184c3d57 100644 --- a/pkg/proto/ateapipb/ateapi.pb.go +++ b/pkg/proto/ateapipb/ateapi.pb.go @@ -1755,16 +1755,16 @@ type TagStatus struct { // UID of the ActorTemplate the snapshot was taken under. Actors can only be // seeded from a tag under the same template. ActorTemplateUid string `protobuf:"bytes,2,opt,name=actor_template_uid,json=actorTemplateUid,proto3" json:"actor_template_uid,omitempty"` - // source_actor_uid is the UID of the Actor this tag's snapshot was copied - // from. - SourceActorUid string `protobuf:"bytes,4,opt,name=source_actor_uid,json=sourceActorUid,proto3" json:"source_actor_uid,omitempty"` // Immutable base storage location captured when the tag is reserved. Its // snapshot lives at /atespaces//tags/. // Retained independently of the source actor and template so deleting an // unfinished tag can collect any partial copy after those resources are gone. - StorageLocation string `protobuf:"bytes,5,opt,name=storage_location,json=storageLocation,proto3" json:"storage_location,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + StorageLocation string `protobuf:"bytes,3,opt,name=storage_location,json=storageLocation,proto3" json:"storage_location,omitempty"` + // source_actor_uid is the UID of the Actor this tag's snapshot was copied + // from. + SourceActorUid string `protobuf:"bytes,4,opt,name=source_actor_uid,json=sourceActorUid,proto3" json:"source_actor_uid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TagStatus) Reset() { @@ -1811,16 +1811,16 @@ func (x *TagStatus) GetActorTemplateUid() string { return "" } -func (x *TagStatus) GetSourceActorUid() string { +func (x *TagStatus) GetStorageLocation() string { if x != nil { - return x.SourceActorUid + return x.StorageLocation } return "" } -func (x *TagStatus) GetStorageLocation() string { +func (x *TagStatus) GetSourceActorUid() string { if x != nil { - return x.StorageLocation + return x.SourceActorUid } return "" } @@ -6841,12 +6841,12 @@ const file_ateapi_proto_rawDesc = "" + "\n" + "worker_pod\x18\x03 \x01(\tR\tworkerPod\x12$\n" + "\x0eworker_pod_uid\x18\x04 \x01(\tR\fworkerPodUid\x12\"\n" + - "\rworker_pod_ip\x18\x05 \x01(\tR\vworkerPodIp\"\xe4\x01\n" + + "\rworker_pod_ip\x18\x05 \x01(\tR\vworkerPodIp\"\xc4\x01\n" + "\tTagStatus\x124\n" + "\bsnapshot\x18\x01 \x01(\v2\x18.ateapi.ExternalSnapshotR\bsnapshot\x12,\n" + - "\x12actor_template_uid\x18\x02 \x01(\tR\x10actorTemplateUid\x12(\n" + - "\x10source_actor_uid\x18\x04 \x01(\tR\x0esourceActorUid\x12)\n" + - "\x10storage_location\x18\x05 \x01(\tR\x0fstorageLocationJ\x04\b\x03\x10\x04R\x18in_progress_snapshot_uri\"\xc4\x01\n" + + "\x12actor_template_uid\x18\x02 \x01(\tR\x10actorTemplateUid\x12)\n" + + "\x10storage_location\x18\x03 \x01(\tR\x0fstorageLocation\x12(\n" + + "\x10source_actor_uid\x18\x04 \x01(\tR\x0esourceActorUid\"\xc4\x01\n" + "\x03Tag\x124\n" + "\bmetadata\x18\x01 \x01(\v2\x18.ateapi.ResourceMetadataR\bmetadata\x12)\n" + "\x06status\x18\x02 \x01(\v2\x11.ateapi.TagStatusR\x06status\x12&\n" + diff --git a/pkg/proto/ateapipb/ateapi.proto b/pkg/proto/ateapipb/ateapi.proto index 1c97a47fa..f68c02267 100644 --- a/pkg/proto/ateapipb/ateapi.proto +++ b/pkg/proto/ateapipb/ateapi.proto @@ -634,9 +634,6 @@ message WorkerAssignment { // The tag is fixed to one external snapshot once its creation completes, so // the rest is immutable provenance. message TagStatus { - reserved 3; - reserved "in_progress_snapshot_uri"; - // snapshot is the external snapshot this tag points at. Unset while the tag // is still being created, and immutable once set: a tag never moves between // snapshots. A tag is usable only once this is set. @@ -648,15 +645,15 @@ message TagStatus { // seeded from a tag under the same template. string actor_template_uid = 2; - // source_actor_uid is the UID of the Actor this tag's snapshot was copied - // from. - string source_actor_uid = 4; - // Immutable base storage location captured when the tag is reserved. Its // snapshot lives at /atespaces//tags/. // Retained independently of the source actor and template so deleting an // unfinished tag can collect any partial copy after those resources are gone. - string storage_location = 5; + string storage_location = 3; + + // source_actor_uid is the UID of the Actor this tag's snapshot was copied + // from. + string source_actor_uid = 4; } // Tag is an Atespace-owned, stable name for one external snapshot. The From 156ce35c7896d8d4c98ba045c2ef87ac938d5c32 Mon Sep 17 00:00:00 2001 From: Eitan Yarmush Date: Sun, 6 Sep 2026 12:02:25 +0000 Subject: [PATCH 3/3] Wait for worker availability in external volume lifecycle test Pause commits the worker release before the watch-fed scheduler cache observes it. Use the existing availability wait before resuming so cache lag cannot produce a spurious no-capacity failure. Signed-off-by: Eitan Yarmush --- cmd/ateapi/internal/controlapi/functionaltest/actor_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go b/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go index 87ebda70d..4e8a4d4d0 100644 --- a/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go +++ b/cmd/ateapi/internal/controlapi/functionaltest/actor_test.go @@ -1377,7 +1377,7 @@ func TestActorLifecycle_WithExternalVolumes(t *testing.T) { }, } createTemplateWithVolumes(t, tc, ns, volumes, mounts) - createWorkerPod(t, tc, ns, "worker-1", "node1", "pool1") + workerName := createWorkerPod(t, tc, ns, "worker-1", "node1", "pool1") // 1. CreateActor createResp, err := tc.client.CreateActor(context.Background(), &ateapipb.CreateActorRequest{ @@ -1425,6 +1425,7 @@ func TestActorLifecycle_WithExternalVolumes(t *testing.T) { } // 4. ResumeActor from paused + waitForWorkerAvailable(t, tc, workerName) resumeResp2, err := tc.client.ResumeActor(context.Background(), &ateapipb.ResumeActorRequest{ Actor: &ateapipb.ObjectRef{Atespace: testAtespace, Name: "actor-vol-lc"}, })