diff --git a/projects/isolate_proto/src/isolate_proto/controller.proto b/projects/isolate_proto/src/isolate_proto/controller.proto index 0da7bd76d..c096c4785 100644 --- a/projects/isolate_proto/src/isolate_proto/controller.proto +++ b/projects/isolate_proto/src/isolate_proto/controller.proto @@ -62,6 +62,14 @@ service IsolateController { // Build (or warm the cache for) an environment without running anything in it. // Streams build logs and terminal status; reuses the same caches as Run/RegisterApplication. rpc BuildEnvironment (BuildEnvironmentRequest) returns (stream BuildEnvironmentResult) {} + // Update application canary config + rpc UpdateCanary(UpdateCanaryRequest) returns (UpdateCanaryResponse) {} + // Rollback (cancel) application canary + rpc RollbackCanary(RollbackCanaryRequest) returns (RollbackCanaryResponse) {} + // Commit (roll forward) application canary + rpc CommitCanary(CommitCanaryRequest) returns (CommitCanaryResponse) {} + // Get application canary info + rpc CanaryInfo(CanaryInfoRequest) returns (CanaryInfoResponse) {} } message HostedMap { @@ -290,6 +298,7 @@ enum ApplicationAuthMode { enum DeploymentStrategy { RECREATE = 0; ROLLING = 1; + CANARY = 2; } message ApplicationHealthCheckConfig { @@ -511,6 +520,7 @@ message AliasInfo { optional int32 scaling_delay_seconds = 15; optional string environment_name = 16; bool is_rolling = 17; + optional CanaryInfo canary = 18; } message SetSecretRequest { @@ -595,7 +605,6 @@ message StopRunnerResponse { // Empty. For future use. } - message KillRunnerRequest { string runner_id = 1; } @@ -663,3 +672,44 @@ message DeleteEnvironmentRequest { message DeleteEnvironmentResponse { // Empty. For future use. } + +message CanaryInfo { + optional bool active = 1; + optional string revision = 2; + optional uint32 ratio = 3; // 0-100 + optional uint32 runners = 4; +} + +message UpdateCanaryRequest { + string alias = 1; + uint32 ratio = 2; // 0-100 +} + +message UpdateCanaryResponse { + CanaryInfo info = 1; +} + +message RollbackCanaryRequest { + string alias = 1; +} + +message RollbackCanaryResponse { + AliasInfo alias = 1; +} + +message CommitCanaryRequest { + string alias = 1; + DeploymentStrategy strategy = 2; +} + +message CommitCanaryResponse { + AliasInfo alias = 1; +} + +message CanaryInfoRequest { + string alias = 1; +} + +message CanaryInfoResponse { + CanaryInfo info = 1; +} diff --git a/projects/isolate_proto/src/isolate_proto/controller_pb2.py b/projects/isolate_proto/src/isolate_proto/controller_pb2.py index 843e806ca..4f9b52b10 100644 --- a/projects/isolate_proto/src/isolate_proto/controller_pb2.py +++ b/projects/isolate_proto/src/isolate_proto/controller_pb2.py @@ -18,7 +18,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x63ontroller.proto\x12\ncontroller\x1a\x0c\x63ommon.proto\x1a\x0cserver.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xba\x02\n\tHostedMap\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x01\x88\x01\x01\x12%\n\x08\x66unction\x18\x03 \x01(\x0b\x32\x11.SerializedObjectH\x00\x12\x14\n\nentrypoint\x18\x05 \x01(\tH\x00\x12!\n\x06inputs\x18\x04 \x03(\x0b\x32\x11.SerializedObject\x12\x1f\n\x12run_on_main_thread\x18\x06 \x01(\x08H\x02\x88\x01\x01\x42\n\n\x08\x63\x61llableB\x17\n\x15_machine_requirementsB\x15\n\x13_run_on_main_thread\"+\n\x04\x46ile\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12\x15\n\rrelative_path\x18\x02 \x01(\t\"\x1e\n\rSecretsConfig\x12\r\n\x05names\x18\x01 \x03(\t\"\xf8\x05\n\tHostedRun\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x01\x88\x01\x01\x12%\n\x08\x66unction\x18\x03 \x01(\x0b\x32\x11.SerializedObjectH\x00\x12\x14\n\nentrypoint\x18\x0c \x01(\tH\x00\x12*\n\nsetup_func\x18\x04 \x01(\x0b\x32\x11.SerializedObjectH\x02\x88\x01\x01\x12\x1f\n\x05\x66iles\x18\x05 \x03(\x0b\x32\x10.controller.File\x12\x1d\n\x10\x65nvironment_name\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x1d\n\x10\x61pplication_name\x18\x07 \x01(\tH\x04\x88\x01\x01\x12\x37\n\tauth_mode\x18\x08 \x01(\x0e\x32\x1f.controller.ApplicationAuthModeH\x05\x88\x01\x01\x12\x1a\n\rfetch_openapi\x18\t \x01(\x08H\x06\x88\x01\x01\x12\x13\n\x0b\x64\x61ta_mounts\x18\n \x03(\t\x12/\n\x07secrets\x18\x0b \x01(\x0b\x32\x19.controller.SecretsConfigH\x07\x88\x01\x01\x12\x1f\n\x12run_on_main_thread\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x1e\n\x11\x62uild_environment\x18\x0e \x01(\x08H\t\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x0f \x01(\tH\n\x88\x01\x01\x42\n\n\x08\x63\x61llableB\x17\n\x15_machine_requirementsB\r\n\x0b_setup_funcB\x13\n\x11_environment_nameB\x13\n\x11_application_nameB\x0c\n\n_auth_modeB\x10\n\x0e_fetch_openapiB\n\n\x08_secretsB\x15\n\x13_run_on_main_threadB\x14\n\x12_build_environmentB\t\n\x07_env_id\"\xea\x02\n\x17\x42uildEnvironmentRequest\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x00\x88\x01\x01\x12\x1f\n\x05\x66iles\x18\x03 \x03(\x0b\x32\x10.controller.File\x12\x1d\n\x10\x65nvironment_name\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10\x61pplication_name\x18\x05 \x01(\tH\x02\x88\x01\x01\x12/\n\x07secrets\x18\x06 \x01(\x0b\x32\x19.controller.SecretsConfigH\x03\x88\x01\x01\x42\x17\n\x15_machine_requirementsB\x13\n\x11_environment_nameB\x13\n\x11_application_nameB\n\n\x08_secrets\"y\n\x16\x42uildEnvironmentResult\x12\x0e\n\x06\x65nv_id\x18\x01 \x01(\t\x12\x30\n\x06status\x18\x02 \x01(\x0b\x32\x1b.controller.HostedRunStatusH\x00\x88\x01\x01\x12\x12\n\x04logs\x18\x03 \x03(\x0b\x32\x04.LogB\t\n\x07_status\"\x88\x01\n\x14\x43reateUserKeyRequest\x12\x35\n\x05scope\x18\x01 \x01(\x0e\x32&.controller.CreateUserKeyRequest.Scope\x12\x12\n\x05\x61lias\x18\x02 \x01(\tH\x00\x88\x01\x01\"\x1b\n\x05Scope\x12\t\n\x05\x41\x44MIN\x10\x00\x12\x07\n\x03\x41PI\x10\x01\x42\x08\n\x06_alias\";\n\x15\x43reateUserKeyResponse\x12\x12\n\nkey_secret\x18\x01 \x01(\t\x12\x0e\n\x06key_id\x18\x02 \x01(\t\"\x15\n\x13ListUserKeysRequest\"B\n\x14ListUserKeysResponse\x12*\n\tuser_keys\x18\x01 \x03(\x0b\x32\x17.controller.UserKeyInfo\"&\n\x14RevokeUserKeyRequest\x12\x0e\n\x06key_id\x18\x01 \x01(\t\"\x17\n\x15RevokeUserKeyResponse\"\x93\x01\n\x0bUserKeyInfo\x12\x0e\n\x06key_id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x05scope\x18\x03 \x01(\x0e\x32&.controller.CreateUserKeyRequest.Scope\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"V\n\x0bServiceURLs\x12\x12\n\nplayground\x18\x01 \x01(\t\x12\x0b\n\x03run\x18\x02 \x01(\t\x12\r\n\x05queue\x18\x03 \x01(\t\x12\n\n\x02ws\x18\x04 \x01(\t\x12\x0b\n\x03log\x18\x05 \x01(\t\"\x96\x02\n\x0fHostedRunResult\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x30\n\x06status\x18\x02 \x01(\x0b\x32\x1b.controller.HostedRunStatusH\x00\x88\x01\x01\x12\x12\n\x04logs\x18\x03 \x03(\x0b\x32\x04.Log\x12,\n\x0creturn_value\x18\x04 \x01(\x0b\x32\x11.SerializedObjectH\x01\x88\x01\x01\x12\x32\n\x0cservice_urls\x18\x05 \x01(\x0b\x32\x17.controller.ServiceURLsH\x02\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x06 \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_statusB\x0f\n\r_return_valueB\x0f\n\r_service_urlsB\t\n\x07_env_id\"B\n\x15InteractiveRunRequest\x12)\n\nhosted_run\x18\x01 \x01(\x0b\x32\x15.controller.HostedRun\"P\n\x16InteractiveRunResponse\x12\x36\n\x11hosted_run_result\x18\x01 \x01(\x0b\x32\x1b.controller.HostedRunResult\"\x80\x01\n\x0fHostedRunStatus\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.controller.HostedRunStatus.State\";\n\x05State\x12\x0f\n\x0bIN_PROGRESS\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x14\n\x10INTERNAL_FAILURE\x10\x02\"\xbc\x06\n\x13MachineRequirements\x12\x1d\n\x0cmachine_type\x18\x01 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x17\n\nkeep_alive\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12\x17\n\nbase_image\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0c\x65xposed_port\x18\x04 \x01(\x05H\x03\x88\x01\x01\x12\x16\n\tscheduler\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x37\n\x11scheduler_options\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x05\x88\x01\x01\x12\x1d\n\x10max_multiplexing\x18\x06 \x01(\x05H\x06\x88\x01\x01\x12\x1c\n\x0fmax_concurrency\x18\t \x01(\x05H\x07\x88\x01\x01\x12\x1c\n\x0fmin_concurrency\x18\n \x01(\x05H\x08\x88\x01\x01\x12\x15\n\rmachine_types\x18\x0b \x03(\t\x12\x15\n\x08num_gpus\x18\x0c \x01(\x05H\t\x88\x01\x01\x12\x1c\n\x0frequest_timeout\x18\r \x01(\x05H\n\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\x0e \x01(\x05H\x0b\x88\x01\x01\x12\x1f\n\x12\x63oncurrency_buffer\x18\x0f \x01(\x05H\x0c\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x10 \x01(\x05H\r\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x11 \x01(\x05H\x0e\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x12 \x03(\tB\x0f\n\r_machine_typeB\r\n\x0b_keep_aliveB\r\n\x0b_base_imageB\x0f\n\r_exposed_portB\x0c\n\n_schedulerB\x14\n\x12_scheduler_optionsB\x13\n\x11_max_multiplexingB\x12\n\x10_max_concurrencyB\x12\n\x10_min_concurrencyB\x0b\n\t_num_gpusB\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_seconds\"\xae\x02\n\x1c\x41pplicationHealthCheckConfig\x12\x0c\n\x04path\x18\x01 \x01(\t\x12!\n\x14start_period_seconds\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x0ftimeout_seconds\x18\x03 \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11\x66\x61ilure_threshold\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x1b\n\x0e\x63\x61ll_regularly\x18\x05 \x01(\x08H\x03\x88\x01\x01\x12\x1a\n\rallow_on_busy\x18\x06 \x01(\x08H\x04\x88\x01\x01\x42\x17\n\x15_start_period_secondsB\x12\n\x10_timeout_secondsB\x14\n\x12_failure_thresholdB\x11\n\x0f_call_regularlyB\x10\n\x0e_allow_on_busy\"\xf3\n\n\x1aRegisterApplicationRequest\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x01\x88\x01\x01\x12%\n\x08\x66unction\x18\x03 \x01(\x0b\x32\x11.SerializedObjectH\x00\x12\x14\n\nentrypoint\x18\x15 \x01(\tH\x00\x12*\n\nsetup_func\x18\x04 \x01(\x0b\x32\x11.SerializedObjectH\x02\x88\x01\x01\x12\x1d\n\x10\x61pplication_name\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x37\n\tauth_mode\x18\x06 \x01(\x0e\x32\x1f.controller.ApplicationAuthModeH\x04\x88\x01\x01\x12 \n\x0fmax_concurrency\x18\x07 \x01(\x05\x42\x02\x18\x01H\x05\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x06\x88\x01\x01\x12@\n\x13\x64\x65ployment_strategy\x18\t \x01(\x0e\x32\x1e.controller.DeploymentStrategyH\x07\x88\x01\x01\x12\x12\n\x05scale\x18\n \x01(\x08H\x08\x88\x01\x01\x12\x19\n\x0cprivate_logs\x18\x0b \x01(\x08H\t\x88\x01\x01\x12\x1f\n\x05\x66iles\x18\x0c \x03(\x0b\x32\x10.controller.File\x12\x18\n\x0bsource_code\x18\r \x01(\tH\n\x88\x01\x01\x12\x1e\n\x11health_check_path\x18\x0e \x01(\tH\x0b\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x0f \x01(\tH\x0c\x88\x01\x01\x12J\n\x13health_check_config\x18\x10 \x01(\x0b\x32(.controller.ApplicationHealthCheckConfigH\r\x88\x01\x01\x12\x39\n\x15skip_retry_conditions\x18\x11 \x03(\x0e\x32\x1a.controller.RetryCondition\x12-\n termination_grace_period_seconds\x18\x12 \x01(\x05H\x0e\x88\x01\x01\x12\x1a\n\rfetch_openapi\x18\x13 \x01(\x08H\x0f\x88\x01\x01\x12\x13\n\x0b\x64\x61ta_mounts\x18\x14 \x03(\t\x12/\n\x07secrets\x18\x16 \x01(\x0b\x32\x19.controller.SecretsConfigH\x10\x88\x01\x01\x12\x1f\n\x12run_on_main_thread\x18\x17 \x01(\x08H\x11\x88\x01\x01\x12\x1e\n\x11\x62uild_environment\x18\x18 \x01(\x08H\x12\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x19 \x01(\tH\x13\x88\x01\x01\x42\n\n\x08\x63\x61llableB\x17\n\x15_machine_requirementsB\r\n\x0b_setup_funcB\x13\n\x11_application_nameB\x0c\n\n_auth_modeB\x12\n\x10_max_concurrencyB\x0b\n\t_metadataB\x16\n\x14_deployment_strategyB\x08\n\x06_scaleB\x0f\n\r_private_logsB\x0e\n\x0c_source_codeB\x14\n\x12_health_check_pathB\x13\n\x11_environment_nameB\x16\n\x14_health_check_configB#\n!_termination_grace_period_secondsB\x10\n\x0e_fetch_openapiB\n\n\x08_secretsB\x15\n\x13_run_on_main_threadB\x14\n\x12_build_environmentB\t\n\x07_env_id\"7\n\x1dRegisterApplicationResultType\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\xdf\x01\n\x19RegisterApplicationResult\x12\x12\n\x04logs\x18\x01 \x03(\x0b\x32\x04.Log\x12>\n\x06result\x18\x02 \x01(\x0b\x32).controller.RegisterApplicationResultTypeH\x00\x88\x01\x01\x12\x32\n\x0cservice_urls\x18\x03 \x01(\x0b\x32\x17.controller.ServiceURLsH\x01\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\t\n\x07_resultB\x0f\n\r_service_urlsB\t\n\x07_env_id\"\xf2\x04\n\x18UpdateApplicationRequest\x12\x18\n\x10\x61pplication_name\x18\x01 \x01(\t\x12\x17\n\nkeep_alive\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1d\n\x10max_multiplexing\x18\x03 \x01(\x05H\x01\x88\x01\x01\x12\x1c\n\x0fmax_concurrency\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x1c\n\x0fmin_concurrency\x18\x05 \x01(\x05H\x03\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x06 \x03(\t\x12\x15\n\rmachine_types\x18\x07 \x03(\t\x12\x1c\n\x0frequest_timeout\x18\x08 \x01(\x05H\x04\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\t \x01(\x05H\x05\x88\x01\x01\x12\x1f\n\x12\x63oncurrency_buffer\x18\n \x01(\x05H\x06\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x0b \x01(\x05H\x07\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x0c \x01(\x05H\x08\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\r \x01(\tH\t\x88\x01\x01\x42\r\n\x0b_keep_aliveB\x13\n\x11_max_multiplexingB\x12\n\x10_max_concurrencyB\x12\n\x10_min_concurrencyB\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_secondsB\x13\n\x11_environment_name\"D\n\x17UpdateApplicationResult\x12)\n\nalias_info\x18\x01 \x01(\x0b\x32\x15.controller.AliasInfo\"\x81\x01\n\x17ListApplicationsRequest\x12\x1d\n\x10\x61pplication_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x13\n\x11_application_nameB\x13\n\x11_environment_name\"\xcf\x04\n\x0f\x41pplicationInfo\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x17\n\x0fmax_concurrency\x18\x02 \x01(\x05\x12\x18\n\x10max_multiplexing\x18\x03 \x01(\x05\x12\x12\n\nkeep_alive\x18\x04 \x01(\x05\x12\x16\n\x0e\x61\x63tive_runners\x18\x06 \x01(\x05\x12\x17\n\x0fmin_concurrency\x18\x07 \x01(\x05\x12\x15\n\rmachine_types\x18\x08 \x03(\t\x12\x1c\n\x0frequest_timeout\x18\t \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\n \x01(\x05H\x01\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x0b \x03(\t\x12\x1f\n\x12\x63oncurrency_buffer\x18\x0c \x01(\x05H\x02\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x0e \x01(\x05H\x03\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x0f \x01(\x05H\x04\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x10 \x01(\tH\x05\x88\x01\x01\x42\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_secondsB\x13\n\x11_environment_name\"K\n\x16ListApplicationsResult\x12\x31\n\x0c\x61pplications\x18\x01 \x03(\x0b\x32\x1b.controller.ApplicationInfo\"2\n\x18\x44\x65leteApplicationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x19\n\x17\x44\x65leteApplicationResult\"\x87\x01\n\x19RolloutApplicationRequest\x12\x18\n\x10\x61pplication_name\x18\x01 \x01(\t\x12\x12\n\x05\x66orce\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_forceB\x13\n\x11_environment_name\"\x1a\n\x18RolloutApplicationResult\"\x87\x02\n\x0fSetAliasRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x37\n\tauth_mode\x18\x03 \x01(\x0e\x32\x1f.controller.ApplicationAuthModeH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x04 \x01(\tH\x01\x88\x01\x01\x12@\n\x13\x64\x65ployment_strategy\x18\x05 \x01(\x0e\x32\x1e.controller.DeploymentStrategyH\x02\x88\x01\x01\x42\x0c\n\n_auth_modeB\x13\n\x11_environment_nameB\x16\n\x14_deployment_strategy\";\n\x0eSetAliasResult\x12)\n\nalias_info\x18\x01 \x01(\x0b\x32\x15.controller.AliasInfo\"W\n\x12\x44\x65leteAliasRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x1d\n\x10\x65nvironment_name\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_environment_name\"%\n\x11\x44\x65leteAliasResult\x12\x10\n\x08revision\x18\x01 \x01(\t\"H\n\x12ListAliasesRequest\x12\x1d\n\x10\x65nvironment_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_environment_name\";\n\x11ListAliasesResult\x12&\n\x07\x61liases\x18\x01 \x03(\x0b\x32\x15.controller.AliasInfo\"\xea\x04\n\tAliasInfo\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x32\n\tauth_mode\x18\x03 \x01(\x0e\x32\x1f.controller.ApplicationAuthMode\x12\x17\n\x0fmax_concurrency\x18\x04 \x01(\x05\x12\x18\n\x10max_multiplexing\x18\x05 \x01(\x05\x12\x12\n\nkeep_alive\x18\x06 \x01(\x05\x12\x16\n\x0e\x61\x63tive_runners\x18\x07 \x01(\x05\x12\x17\n\x0fmin_concurrency\x18\x08 \x01(\x05\x12\x15\n\rmachine_types\x18\t \x03(\t\x12\x1c\n\x0frequest_timeout\x18\n \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\x0b \x01(\x05H\x01\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x0c \x03(\t\x12\x1f\n\x12\x63oncurrency_buffer\x18\r \x01(\x05H\x02\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x0e \x01(\x05H\x03\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x0f \x01(\x05H\x04\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x10 \x01(\tH\x05\x88\x01\x01\x12\x12\n\nis_rolling\x18\x11 \x01(\x08\x42\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_secondsB\x13\n\x11_environment_name\"r\n\x10SetSecretRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\x05value\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_valueB\x13\n\x11_environment_name\"\x13\n\x11SetSecretResponse\"H\n\x12ListSecretsRequest\x12\x1d\n\x10\x65nvironment_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_environment_name\"\x92\x01\n\x06Secret\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x35\n\x0c\x63reated_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x0f\n\r_created_timeB\x13\n\x11_environment_name\":\n\x13ListSecretsResponse\x12#\n\x07secrets\x18\x01 \x03(\x0b\x32\x12.controller.Secret\"\xcc\x01\n\x17ListAliasRunnersRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x19\n\x0clist_pending\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x33\n\nstart_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x0f\n\r_list_pendingB\r\n\x0b_start_timeB\x13\n\x11_environment_name\"C\n\x18ListAliasRunnersResponse\x12\'\n\x07runners\x18\x01 \x03(\x0b\x32\x16.controller.RunnerInfo\"\xdc\x04\n\nRunnerInfo\x12\x11\n\trunner_id\x18\x01 \x01(\t\x12\x1a\n\x12in_flight_requests\x18\x02 \x01(\x05\x12!\n\x14\x65xpiration_countdown\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x0e\n\x06uptime\x18\x04 \x01(\x02\x12\x10\n\x08revision\x18\x06 \x01(\t\x12\r\n\x05\x61lias\x18\x07 \x01(\t\x12\x37\n\x11\x65xternal_metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x30\n\x05state\x18\x08 \x01(\x0e\x32\x1c.controller.RunnerInfo.StateH\x02\x88\x01\x01\x12\x38\n\x0breplacement\x18\t \x01(\x0e\x32#.controller.RunnerInfo.ReplaceState\x12\x14\n\x0cmachine_type\x18\n \x01(\t\"\x93\x01\n\x05State\x12\x0b\n\x07RUNNING\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\t\n\x05SETUP\x10\x02\x12\x08\n\x04\x44\x45\x41\x44\x10\x03\x12\x0f\n\x0b\x44OCKER_PULL\x10\x04\x12\x0c\n\x08\x44RAINING\x10\x05\x12\x0f\n\x0bTERMINATING\x10\x06\x12\x0e\n\nTERMINATED\x10\x07\x12\x08\n\x04IDLE\x10\x08\x12\x11\n\rFAILURE_DELAY\x10\t\"A\n\x0cReplaceState\x12\x0e\n\nNO_REPLACE\x10\x00\x12\x10\n\x0cWILL_REPLACE\x10\x01\x12\x0f\n\x0b\x44ID_REPLACE\x10\x02\x42\x17\n\x15_expiration_countdownB\x14\n\x12_external_metadataB\x08\n\x06_state\"=\n\x11StopRunnerRequest\x12\x11\n\trunner_id\x18\x01 \x01(\t\x12\x15\n\rreplace_first\x18\x02 \x01(\x08\"\x14\n\x12StopRunnerResponse\"&\n\x11KillRunnerRequest\x12\x11\n\trunner_id\x18\x01 \x01(\t\"\x84\x01\n\x12ListRunnersRequest\x12\x19\n\x0clist_pending\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x33\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x42\x0f\n\r_list_pendingB\r\n\x0b_start_time\">\n\x13ListRunnersResponse\x12\'\n\x07runners\x18\x01 \x03(\x0b\x32\x16.controller.RunnerInfo\"\x14\n\x12KillRunnerResponse\"-\n\x0cTerminalSize\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05width\x18\x02 \x01(\x05\"\x91\x01\n\x10ShellRunnerInput\x12\x11\n\trunner_id\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\r\n\x05\x63lose\x18\x03 \x01(\x08\x12/\n\x08tty_size\x18\x04 \x01(\x0b\x32\x18.controller.TerminalSizeH\x00\x88\x01\x01\x12\x0f\n\x07\x63ommand\x18\x05 \x03(\tB\x0b\n\t_tty_size\"V\n\x11ShellRunnerOutput\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\r\n\x05\x63lose\x18\x02 \x01(\x08\x12\x16\n\texit_code\x18\x03 \x01(\x05H\x00\x88\x01\x01\x42\x0c\n\n_exit_code\"\x19\n\x17ListEnvironmentsRequest\"M\n\x18ListEnvironmentsResponse\x12\x31\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x1b.controller.EnvironmentInfo\"\x8d\x01\n\x0f\x45nvironmentInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x12\n\nis_default\x18\x03 \x01(\x08\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0e\n\x0c_description\"R\n\x18\x43reateEnvironmentRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"M\n\x19\x43reateEnvironmentResponse\x12\x30\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x1b.controller.EnvironmentInfo\"(\n\x18\x44\x65leteEnvironmentRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x1b\n\x19\x44\x65leteEnvironmentResponse*:\n\x13\x41pplicationAuthMode\x12\x0b\n\x07PRIVATE\x10\x00\x12\n\n\x06PUBLIC\x10\x01\x12\n\n\x06SHARED\x10\x02*/\n\x12\x44\x65ploymentStrategy\x12\x0c\n\x08RECREATE\x10\x00\x12\x0b\n\x07ROLLING\x10\x01*W\n\x0eRetryCondition\x12\x0b\n\x07TIMEOUT\x10\x00\x12\x10\n\x0c\x43LIENT_ERROR\x10\x01\x12\x10\n\x0cSERVER_ERROR\x10\x02\x12\x14\n\x10\x43ONNECTION_ERROR\x10\x03\x32\x99\x11\n\x11IsolateController\x12=\n\x03Run\x12\x15.controller.HostedRun\x1a\x1b.controller.HostedRunResult\"\x00\x30\x01\x12]\n\x0eInteractiveRun\x12!.controller.InteractiveRunRequest\x1a\".controller.InteractiveRunResponse\"\x00(\x01\x30\x01\x12=\n\x03Map\x12\x15.controller.HostedMap\x1a\x1b.controller.HostedRunResult\"\x00\x30\x01\x12V\n\rCreateUserKey\x12 .controller.CreateUserKeyRequest\x1a!.controller.CreateUserKeyResponse\"\x00\x12S\n\x0cListUserKeys\x12\x1f.controller.ListUserKeysRequest\x1a .controller.ListUserKeysResponse\"\x00\x12V\n\rRevokeUserKey\x12 .controller.RevokeUserKeyRequest\x1a!.controller.RevokeUserKeyResponse\"\x00\x12h\n\x13RegisterApplication\x12&.controller.RegisterApplicationRequest\x1a%.controller.RegisterApplicationResult\"\x00\x30\x01\x12`\n\x11UpdateApplication\x12$.controller.UpdateApplicationRequest\x1a#.controller.UpdateApplicationResult\"\x00\x12]\n\x10ListApplications\x12#.controller.ListApplicationsRequest\x1a\".controller.ListApplicationsResult\"\x00\x12`\n\x11\x44\x65leteApplication\x12$.controller.DeleteApplicationRequest\x1a#.controller.DeleteApplicationResult\"\x00\x12\x63\n\x12RolloutApplication\x12%.controller.RolloutApplicationRequest\x1a$.controller.RolloutApplicationResult\"\x00\x12\x45\n\x08SetAlias\x12\x1b.controller.SetAliasRequest\x1a\x1a.controller.SetAliasResult\"\x00\x12N\n\x0b\x44\x65leteAlias\x12\x1e.controller.DeleteAliasRequest\x1a\x1d.controller.DeleteAliasResult\"\x00\x12N\n\x0bListAliases\x12\x1e.controller.ListAliasesRequest\x1a\x1d.controller.ListAliasesResult\"\x00\x12J\n\tSetSecret\x12\x1c.controller.SetSecretRequest\x1a\x1d.controller.SetSecretResponse\"\x00\x12P\n\x0bListSecrets\x12\x1e.controller.ListSecretsRequest\x1a\x1f.controller.ListSecretsResponse\"\x00\x12_\n\x10ListAliasRunners\x12#.controller.ListAliasRunnersRequest\x1a$.controller.ListAliasRunnersResponse\"\x00\x12M\n\nStopRunner\x12\x1d.controller.StopRunnerRequest\x1a\x1e.controller.StopRunnerResponse\"\x00\x12M\n\nKillRunner\x12\x1d.controller.KillRunnerRequest\x1a\x1e.controller.KillRunnerResponse\"\x00\x12P\n\x0bListRunners\x12\x1e.controller.ListRunnersRequest\x1a\x1f.controller.ListRunnersResponse\"\x00\x12P\n\x0bShellRunner\x12\x1c.controller.ShellRunnerInput\x1a\x1d.controller.ShellRunnerOutput\"\x00(\x01\x30\x01\x12_\n\x10ListEnvironments\x12#.controller.ListEnvironmentsRequest\x1a$.controller.ListEnvironmentsResponse\"\x00\x12\x62\n\x11\x43reateEnvironment\x12$.controller.CreateEnvironmentRequest\x1a%.controller.CreateEnvironmentResponse\"\x00\x12\x62\n\x11\x44\x65leteEnvironment\x12$.controller.DeleteEnvironmentRequest\x1a%.controller.DeleteEnvironmentResponse\"\x00\x12_\n\x10\x42uildEnvironment\x12#.controller.BuildEnvironmentRequest\x1a\".controller.BuildEnvironmentResult\"\x00\x30\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x63ontroller.proto\x12\ncontroller\x1a\x0c\x63ommon.proto\x1a\x0cserver.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xba\x02\n\tHostedMap\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x01\x88\x01\x01\x12%\n\x08\x66unction\x18\x03 \x01(\x0b\x32\x11.SerializedObjectH\x00\x12\x14\n\nentrypoint\x18\x05 \x01(\tH\x00\x12!\n\x06inputs\x18\x04 \x03(\x0b\x32\x11.SerializedObject\x12\x1f\n\x12run_on_main_thread\x18\x06 \x01(\x08H\x02\x88\x01\x01\x42\n\n\x08\x63\x61llableB\x17\n\x15_machine_requirementsB\x15\n\x13_run_on_main_thread\"+\n\x04\x46ile\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12\x15\n\rrelative_path\x18\x02 \x01(\t\"\x1e\n\rSecretsConfig\x12\r\n\x05names\x18\x01 \x03(\t\"\xf8\x05\n\tHostedRun\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x01\x88\x01\x01\x12%\n\x08\x66unction\x18\x03 \x01(\x0b\x32\x11.SerializedObjectH\x00\x12\x14\n\nentrypoint\x18\x0c \x01(\tH\x00\x12*\n\nsetup_func\x18\x04 \x01(\x0b\x32\x11.SerializedObjectH\x02\x88\x01\x01\x12\x1f\n\x05\x66iles\x18\x05 \x03(\x0b\x32\x10.controller.File\x12\x1d\n\x10\x65nvironment_name\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x1d\n\x10\x61pplication_name\x18\x07 \x01(\tH\x04\x88\x01\x01\x12\x37\n\tauth_mode\x18\x08 \x01(\x0e\x32\x1f.controller.ApplicationAuthModeH\x05\x88\x01\x01\x12\x1a\n\rfetch_openapi\x18\t \x01(\x08H\x06\x88\x01\x01\x12\x13\n\x0b\x64\x61ta_mounts\x18\n \x03(\t\x12/\n\x07secrets\x18\x0b \x01(\x0b\x32\x19.controller.SecretsConfigH\x07\x88\x01\x01\x12\x1f\n\x12run_on_main_thread\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x1e\n\x11\x62uild_environment\x18\x0e \x01(\x08H\t\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x0f \x01(\tH\n\x88\x01\x01\x42\n\n\x08\x63\x61llableB\x17\n\x15_machine_requirementsB\r\n\x0b_setup_funcB\x13\n\x11_environment_nameB\x13\n\x11_application_nameB\x0c\n\n_auth_modeB\x10\n\x0e_fetch_openapiB\n\n\x08_secretsB\x15\n\x13_run_on_main_threadB\x14\n\x12_build_environmentB\t\n\x07_env_id\"\xea\x02\n\x17\x42uildEnvironmentRequest\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x00\x88\x01\x01\x12\x1f\n\x05\x66iles\x18\x03 \x03(\x0b\x32\x10.controller.File\x12\x1d\n\x10\x65nvironment_name\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10\x61pplication_name\x18\x05 \x01(\tH\x02\x88\x01\x01\x12/\n\x07secrets\x18\x06 \x01(\x0b\x32\x19.controller.SecretsConfigH\x03\x88\x01\x01\x42\x17\n\x15_machine_requirementsB\x13\n\x11_environment_nameB\x13\n\x11_application_nameB\n\n\x08_secrets\"y\n\x16\x42uildEnvironmentResult\x12\x0e\n\x06\x65nv_id\x18\x01 \x01(\t\x12\x30\n\x06status\x18\x02 \x01(\x0b\x32\x1b.controller.HostedRunStatusH\x00\x88\x01\x01\x12\x12\n\x04logs\x18\x03 \x03(\x0b\x32\x04.LogB\t\n\x07_status\"\x88\x01\n\x14\x43reateUserKeyRequest\x12\x35\n\x05scope\x18\x01 \x01(\x0e\x32&.controller.CreateUserKeyRequest.Scope\x12\x12\n\x05\x61lias\x18\x02 \x01(\tH\x00\x88\x01\x01\"\x1b\n\x05Scope\x12\t\n\x05\x41\x44MIN\x10\x00\x12\x07\n\x03\x41PI\x10\x01\x42\x08\n\x06_alias\";\n\x15\x43reateUserKeyResponse\x12\x12\n\nkey_secret\x18\x01 \x01(\t\x12\x0e\n\x06key_id\x18\x02 \x01(\t\"\x15\n\x13ListUserKeysRequest\"B\n\x14ListUserKeysResponse\x12*\n\tuser_keys\x18\x01 \x03(\x0b\x32\x17.controller.UserKeyInfo\"&\n\x14RevokeUserKeyRequest\x12\x0e\n\x06key_id\x18\x01 \x01(\t\"\x17\n\x15RevokeUserKeyResponse\"\x93\x01\n\x0bUserKeyInfo\x12\x0e\n\x06key_id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x05scope\x18\x03 \x01(\x0e\x32&.controller.CreateUserKeyRequest.Scope\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"V\n\x0bServiceURLs\x12\x12\n\nplayground\x18\x01 \x01(\t\x12\x0b\n\x03run\x18\x02 \x01(\t\x12\r\n\x05queue\x18\x03 \x01(\t\x12\n\n\x02ws\x18\x04 \x01(\t\x12\x0b\n\x03log\x18\x05 \x01(\t\"\x96\x02\n\x0fHostedRunResult\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x30\n\x06status\x18\x02 \x01(\x0b\x32\x1b.controller.HostedRunStatusH\x00\x88\x01\x01\x12\x12\n\x04logs\x18\x03 \x03(\x0b\x32\x04.Log\x12,\n\x0creturn_value\x18\x04 \x01(\x0b\x32\x11.SerializedObjectH\x01\x88\x01\x01\x12\x32\n\x0cservice_urls\x18\x05 \x01(\x0b\x32\x17.controller.ServiceURLsH\x02\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x06 \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_statusB\x0f\n\r_return_valueB\x0f\n\r_service_urlsB\t\n\x07_env_id\"B\n\x15InteractiveRunRequest\x12)\n\nhosted_run\x18\x01 \x01(\x0b\x32\x15.controller.HostedRun\"P\n\x16InteractiveRunResponse\x12\x36\n\x11hosted_run_result\x18\x01 \x01(\x0b\x32\x1b.controller.HostedRunResult\"\x80\x01\n\x0fHostedRunStatus\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.controller.HostedRunStatus.State\";\n\x05State\x12\x0f\n\x0bIN_PROGRESS\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x14\n\x10INTERNAL_FAILURE\x10\x02\"\xbc\x06\n\x13MachineRequirements\x12\x1d\n\x0cmachine_type\x18\x01 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x17\n\nkeep_alive\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12\x17\n\nbase_image\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0c\x65xposed_port\x18\x04 \x01(\x05H\x03\x88\x01\x01\x12\x16\n\tscheduler\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x37\n\x11scheduler_options\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x05\x88\x01\x01\x12\x1d\n\x10max_multiplexing\x18\x06 \x01(\x05H\x06\x88\x01\x01\x12\x1c\n\x0fmax_concurrency\x18\t \x01(\x05H\x07\x88\x01\x01\x12\x1c\n\x0fmin_concurrency\x18\n \x01(\x05H\x08\x88\x01\x01\x12\x15\n\rmachine_types\x18\x0b \x03(\t\x12\x15\n\x08num_gpus\x18\x0c \x01(\x05H\t\x88\x01\x01\x12\x1c\n\x0frequest_timeout\x18\r \x01(\x05H\n\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\x0e \x01(\x05H\x0b\x88\x01\x01\x12\x1f\n\x12\x63oncurrency_buffer\x18\x0f \x01(\x05H\x0c\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x10 \x01(\x05H\r\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x11 \x01(\x05H\x0e\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x12 \x03(\tB\x0f\n\r_machine_typeB\r\n\x0b_keep_aliveB\r\n\x0b_base_imageB\x0f\n\r_exposed_portB\x0c\n\n_schedulerB\x14\n\x12_scheduler_optionsB\x13\n\x11_max_multiplexingB\x12\n\x10_max_concurrencyB\x12\n\x10_min_concurrencyB\x0b\n\t_num_gpusB\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_seconds\"\xae\x02\n\x1c\x41pplicationHealthCheckConfig\x12\x0c\n\x04path\x18\x01 \x01(\t\x12!\n\x14start_period_seconds\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x0ftimeout_seconds\x18\x03 \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11\x66\x61ilure_threshold\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x1b\n\x0e\x63\x61ll_regularly\x18\x05 \x01(\x08H\x03\x88\x01\x01\x12\x1a\n\rallow_on_busy\x18\x06 \x01(\x08H\x04\x88\x01\x01\x42\x17\n\x15_start_period_secondsB\x12\n\x10_timeout_secondsB\x14\n\x12_failure_thresholdB\x11\n\x0f_call_regularlyB\x10\n\x0e_allow_on_busy\"\xf3\n\n\x1aRegisterApplicationRequest\x12,\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x16.EnvironmentDefinition\x12\x42\n\x14machine_requirements\x18\x02 \x01(\x0b\x32\x1f.controller.MachineRequirementsH\x01\x88\x01\x01\x12%\n\x08\x66unction\x18\x03 \x01(\x0b\x32\x11.SerializedObjectH\x00\x12\x14\n\nentrypoint\x18\x15 \x01(\tH\x00\x12*\n\nsetup_func\x18\x04 \x01(\x0b\x32\x11.SerializedObjectH\x02\x88\x01\x01\x12\x1d\n\x10\x61pplication_name\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x37\n\tauth_mode\x18\x06 \x01(\x0e\x32\x1f.controller.ApplicationAuthModeH\x04\x88\x01\x01\x12 \n\x0fmax_concurrency\x18\x07 \x01(\x05\x42\x02\x18\x01H\x05\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x06\x88\x01\x01\x12@\n\x13\x64\x65ployment_strategy\x18\t \x01(\x0e\x32\x1e.controller.DeploymentStrategyH\x07\x88\x01\x01\x12\x12\n\x05scale\x18\n \x01(\x08H\x08\x88\x01\x01\x12\x19\n\x0cprivate_logs\x18\x0b \x01(\x08H\t\x88\x01\x01\x12\x1f\n\x05\x66iles\x18\x0c \x03(\x0b\x32\x10.controller.File\x12\x18\n\x0bsource_code\x18\r \x01(\tH\n\x88\x01\x01\x12\x1e\n\x11health_check_path\x18\x0e \x01(\tH\x0b\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x0f \x01(\tH\x0c\x88\x01\x01\x12J\n\x13health_check_config\x18\x10 \x01(\x0b\x32(.controller.ApplicationHealthCheckConfigH\r\x88\x01\x01\x12\x39\n\x15skip_retry_conditions\x18\x11 \x03(\x0e\x32\x1a.controller.RetryCondition\x12-\n termination_grace_period_seconds\x18\x12 \x01(\x05H\x0e\x88\x01\x01\x12\x1a\n\rfetch_openapi\x18\x13 \x01(\x08H\x0f\x88\x01\x01\x12\x13\n\x0b\x64\x61ta_mounts\x18\x14 \x03(\t\x12/\n\x07secrets\x18\x16 \x01(\x0b\x32\x19.controller.SecretsConfigH\x10\x88\x01\x01\x12\x1f\n\x12run_on_main_thread\x18\x17 \x01(\x08H\x11\x88\x01\x01\x12\x1e\n\x11\x62uild_environment\x18\x18 \x01(\x08H\x12\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x19 \x01(\tH\x13\x88\x01\x01\x42\n\n\x08\x63\x61llableB\x17\n\x15_machine_requirementsB\r\n\x0b_setup_funcB\x13\n\x11_application_nameB\x0c\n\n_auth_modeB\x12\n\x10_max_concurrencyB\x0b\n\t_metadataB\x16\n\x14_deployment_strategyB\x08\n\x06_scaleB\x0f\n\r_private_logsB\x0e\n\x0c_source_codeB\x14\n\x12_health_check_pathB\x13\n\x11_environment_nameB\x16\n\x14_health_check_configB#\n!_termination_grace_period_secondsB\x10\n\x0e_fetch_openapiB\n\n\x08_secretsB\x15\n\x13_run_on_main_threadB\x14\n\x12_build_environmentB\t\n\x07_env_id\"7\n\x1dRegisterApplicationResultType\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\xdf\x01\n\x19RegisterApplicationResult\x12\x12\n\x04logs\x18\x01 \x03(\x0b\x32\x04.Log\x12>\n\x06result\x18\x02 \x01(\x0b\x32).controller.RegisterApplicationResultTypeH\x00\x88\x01\x01\x12\x32\n\x0cservice_urls\x18\x03 \x01(\x0b\x32\x17.controller.ServiceURLsH\x01\x88\x01\x01\x12\x13\n\x06\x65nv_id\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\t\n\x07_resultB\x0f\n\r_service_urlsB\t\n\x07_env_id\"\xf2\x04\n\x18UpdateApplicationRequest\x12\x18\n\x10\x61pplication_name\x18\x01 \x01(\t\x12\x17\n\nkeep_alive\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1d\n\x10max_multiplexing\x18\x03 \x01(\x05H\x01\x88\x01\x01\x12\x1c\n\x0fmax_concurrency\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x1c\n\x0fmin_concurrency\x18\x05 \x01(\x05H\x03\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x06 \x03(\t\x12\x15\n\rmachine_types\x18\x07 \x03(\t\x12\x1c\n\x0frequest_timeout\x18\x08 \x01(\x05H\x04\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\t \x01(\x05H\x05\x88\x01\x01\x12\x1f\n\x12\x63oncurrency_buffer\x18\n \x01(\x05H\x06\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x0b \x01(\x05H\x07\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x0c \x01(\x05H\x08\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\r \x01(\tH\t\x88\x01\x01\x42\r\n\x0b_keep_aliveB\x13\n\x11_max_multiplexingB\x12\n\x10_max_concurrencyB\x12\n\x10_min_concurrencyB\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_secondsB\x13\n\x11_environment_name\"D\n\x17UpdateApplicationResult\x12)\n\nalias_info\x18\x01 \x01(\x0b\x32\x15.controller.AliasInfo\"\x81\x01\n\x17ListApplicationsRequest\x12\x1d\n\x10\x61pplication_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x13\n\x11_application_nameB\x13\n\x11_environment_name\"\xcf\x04\n\x0f\x41pplicationInfo\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x17\n\x0fmax_concurrency\x18\x02 \x01(\x05\x12\x18\n\x10max_multiplexing\x18\x03 \x01(\x05\x12\x12\n\nkeep_alive\x18\x04 \x01(\x05\x12\x16\n\x0e\x61\x63tive_runners\x18\x06 \x01(\x05\x12\x17\n\x0fmin_concurrency\x18\x07 \x01(\x05\x12\x15\n\rmachine_types\x18\x08 \x03(\t\x12\x1c\n\x0frequest_timeout\x18\t \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\n \x01(\x05H\x01\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x0b \x03(\t\x12\x1f\n\x12\x63oncurrency_buffer\x18\x0c \x01(\x05H\x02\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x0e \x01(\x05H\x03\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x0f \x01(\x05H\x04\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x10 \x01(\tH\x05\x88\x01\x01\x42\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_secondsB\x13\n\x11_environment_name\"K\n\x16ListApplicationsResult\x12\x31\n\x0c\x61pplications\x18\x01 \x03(\x0b\x32\x1b.controller.ApplicationInfo\"2\n\x18\x44\x65leteApplicationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x19\n\x17\x44\x65leteApplicationResult\"\x87\x01\n\x19RolloutApplicationRequest\x12\x18\n\x10\x61pplication_name\x18\x01 \x01(\t\x12\x12\n\x05\x66orce\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_forceB\x13\n\x11_environment_name\"\x1a\n\x18RolloutApplicationResult\"\x87\x02\n\x0fSetAliasRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x37\n\tauth_mode\x18\x03 \x01(\x0e\x32\x1f.controller.ApplicationAuthModeH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x04 \x01(\tH\x01\x88\x01\x01\x12@\n\x13\x64\x65ployment_strategy\x18\x05 \x01(\x0e\x32\x1e.controller.DeploymentStrategyH\x02\x88\x01\x01\x42\x0c\n\n_auth_modeB\x13\n\x11_environment_nameB\x16\n\x14_deployment_strategy\";\n\x0eSetAliasResult\x12)\n\nalias_info\x18\x01 \x01(\x0b\x32\x15.controller.AliasInfo\"W\n\x12\x44\x65leteAliasRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x1d\n\x10\x65nvironment_name\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_environment_name\"%\n\x11\x44\x65leteAliasResult\x12\x10\n\x08revision\x18\x01 \x01(\t\"H\n\x12ListAliasesRequest\x12\x1d\n\x10\x65nvironment_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_environment_name\";\n\x11ListAliasesResult\x12&\n\x07\x61liases\x18\x01 \x03(\x0b\x32\x15.controller.AliasInfo\"\xaa\x05\n\tAliasInfo\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x32\n\tauth_mode\x18\x03 \x01(\x0e\x32\x1f.controller.ApplicationAuthMode\x12\x17\n\x0fmax_concurrency\x18\x04 \x01(\x05\x12\x18\n\x10max_multiplexing\x18\x05 \x01(\x05\x12\x12\n\nkeep_alive\x18\x06 \x01(\x05\x12\x16\n\x0e\x61\x63tive_runners\x18\x07 \x01(\x05\x12\x17\n\x0fmin_concurrency\x18\x08 \x01(\x05\x12\x15\n\rmachine_types\x18\t \x03(\t\x12\x1c\n\x0frequest_timeout\x18\n \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x0fstartup_timeout\x18\x0b \x01(\x05H\x01\x88\x01\x01\x12\x15\n\rvalid_regions\x18\x0c \x03(\t\x12\x1f\n\x12\x63oncurrency_buffer\x18\r \x01(\x05H\x02\x88\x01\x01\x12$\n\x17\x63oncurrency_buffer_perc\x18\x0e \x01(\x05H\x03\x88\x01\x01\x12\"\n\x15scaling_delay_seconds\x18\x0f \x01(\x05H\x04\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x10 \x01(\tH\x05\x88\x01\x01\x12\x12\n\nis_rolling\x18\x11 \x01(\x08\x12\x33\n\x06\x63\x61nary\x18\x12 \x01(\x0b\x32\x1e.controller.CanaryInfoResponseH\x06\x88\x01\x01\x42\x12\n\x10_request_timeoutB\x12\n\x10_startup_timeoutB\x15\n\x13_concurrency_bufferB\x1a\n\x18_concurrency_buffer_percB\x18\n\x16_scaling_delay_secondsB\x13\n\x11_environment_nameB\t\n\x07_canary\"r\n\x10SetSecretRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\x05value\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_valueB\x13\n\x11_environment_name\"\x13\n\x11SetSecretResponse\"H\n\x12ListSecretsRequest\x12\x1d\n\x10\x65nvironment_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_environment_name\"\x92\x01\n\x06Secret\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x35\n\x0c\x63reated_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x0f\n\r_created_timeB\x13\n\x11_environment_name\":\n\x13ListSecretsResponse\x12#\n\x07secrets\x18\x01 \x03(\x0b\x32\x12.controller.Secret\"\xcc\x01\n\x17ListAliasRunnersRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x19\n\x0clist_pending\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x33\n\nstart_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x1d\n\x10\x65nvironment_name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x0f\n\r_list_pendingB\r\n\x0b_start_timeB\x13\n\x11_environment_name\"C\n\x18ListAliasRunnersResponse\x12\'\n\x07runners\x18\x01 \x03(\x0b\x32\x16.controller.RunnerInfo\"\xdc\x04\n\nRunnerInfo\x12\x11\n\trunner_id\x18\x01 \x01(\t\x12\x1a\n\x12in_flight_requests\x18\x02 \x01(\x05\x12!\n\x14\x65xpiration_countdown\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x0e\n\x06uptime\x18\x04 \x01(\x02\x12\x10\n\x08revision\x18\x06 \x01(\t\x12\r\n\x05\x61lias\x18\x07 \x01(\t\x12\x37\n\x11\x65xternal_metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x30\n\x05state\x18\x08 \x01(\x0e\x32\x1c.controller.RunnerInfo.StateH\x02\x88\x01\x01\x12\x38\n\x0breplacement\x18\t \x01(\x0e\x32#.controller.RunnerInfo.ReplaceState\x12\x14\n\x0cmachine_type\x18\n \x01(\t\"\x93\x01\n\x05State\x12\x0b\n\x07RUNNING\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\t\n\x05SETUP\x10\x02\x12\x08\n\x04\x44\x45\x41\x44\x10\x03\x12\x0f\n\x0b\x44OCKER_PULL\x10\x04\x12\x0c\n\x08\x44RAINING\x10\x05\x12\x0f\n\x0bTERMINATING\x10\x06\x12\x0e\n\nTERMINATED\x10\x07\x12\x08\n\x04IDLE\x10\x08\x12\x11\n\rFAILURE_DELAY\x10\t\"A\n\x0cReplaceState\x12\x0e\n\nNO_REPLACE\x10\x00\x12\x10\n\x0cWILL_REPLACE\x10\x01\x12\x0f\n\x0b\x44ID_REPLACE\x10\x02\x42\x17\n\x15_expiration_countdownB\x14\n\x12_external_metadataB\x08\n\x06_state\"=\n\x11StopRunnerRequest\x12\x11\n\trunner_id\x18\x01 \x01(\t\x12\x15\n\rreplace_first\x18\x02 \x01(\x08\"\x14\n\x12StopRunnerResponse\"&\n\x11KillRunnerRequest\x12\x11\n\trunner_id\x18\x01 \x01(\t\"\x84\x01\n\x12ListRunnersRequest\x12\x19\n\x0clist_pending\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x33\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x42\x0f\n\r_list_pendingB\r\n\x0b_start_time\">\n\x13ListRunnersResponse\x12\'\n\x07runners\x18\x01 \x03(\x0b\x32\x16.controller.RunnerInfo\"\x14\n\x12KillRunnerResponse\"-\n\x0cTerminalSize\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05width\x18\x02 \x01(\x05\"\x91\x01\n\x10ShellRunnerInput\x12\x11\n\trunner_id\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\r\n\x05\x63lose\x18\x03 \x01(\x08\x12/\n\x08tty_size\x18\x04 \x01(\x0b\x32\x18.controller.TerminalSizeH\x00\x88\x01\x01\x12\x0f\n\x07\x63ommand\x18\x05 \x03(\tB\x0b\n\t_tty_size\"V\n\x11ShellRunnerOutput\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\r\n\x05\x63lose\x18\x02 \x01(\x08\x12\x16\n\texit_code\x18\x03 \x01(\x05H\x00\x88\x01\x01\x42\x0c\n\n_exit_code\"\x19\n\x17ListEnvironmentsRequest\"M\n\x18ListEnvironmentsResponse\x12\x31\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x1b.controller.EnvironmentInfo\"\x8d\x01\n\x0f\x45nvironmentInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x12\n\nis_default\x18\x03 \x01(\x08\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0e\n\x0c_description\"R\n\x18\x43reateEnvironmentRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"M\n\x19\x43reateEnvironmentResponse\x12\x30\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x1b.controller.EnvironmentInfo\"(\n\x18\x44\x65leteEnvironmentRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x1b\n\x19\x44\x65leteEnvironmentResponse\"3\n\x13UpdateCanaryRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\r\n\x05ratio\x18\x02 \x01(\r\"D\n\x14UpdateCanaryResponse\x12,\n\x04info\x18\x01 \x01(\x0b\x32\x1e.controller.CanaryInfoResponse\"&\n\x15RollbackCanaryRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\">\n\x16RollbackCanaryResponse\x12$\n\x05\x61lias\x18\x01 \x01(\x0b\x32\x15.controller.AliasInfo\"V\n\x13\x43ommitCanaryRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\x12\x30\n\x08strategy\x18\x02 \x01(\x0e\x32\x1e.controller.DeploymentStrategy\"<\n\x14\x43ommitCanaryResponse\x12$\n\x05\x61lias\x18\x01 \x01(\x0b\x32\x15.controller.AliasInfo\"\"\n\x11\x43\x61naryInfoRequest\x12\r\n\x05\x61lias\x18\x01 \x01(\t\"\x98\x01\n\x12\x43\x61naryInfoResponse\x12\x13\n\x06\x61\x63tive\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x15\n\x08revision\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05ratio\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x14\n\x07runners\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\t\n\x07_activeB\x0b\n\t_revisionB\x08\n\x06_ratioB\n\n\x08_runners*:\n\x13\x41pplicationAuthMode\x12\x0b\n\x07PRIVATE\x10\x00\x12\n\n\x06PUBLIC\x10\x01\x12\n\n\x06SHARED\x10\x02*;\n\x12\x44\x65ploymentStrategy\x12\x0c\n\x08RECREATE\x10\x00\x12\x0b\n\x07ROLLING\x10\x01\x12\n\n\x06\x43\x41NARY\x10\x02*W\n\x0eRetryCondition\x12\x0b\n\x07TIMEOUT\x10\x00\x12\x10\n\x0c\x43LIENT_ERROR\x10\x01\x12\x10\n\x0cSERVER_ERROR\x10\x02\x12\x14\n\x10\x43ONNECTION_ERROR\x10\x03\x32\xed\x13\n\x11IsolateController\x12=\n\x03Run\x12\x15.controller.HostedRun\x1a\x1b.controller.HostedRunResult\"\x00\x30\x01\x12]\n\x0eInteractiveRun\x12!.controller.InteractiveRunRequest\x1a\".controller.InteractiveRunResponse\"\x00(\x01\x30\x01\x12=\n\x03Map\x12\x15.controller.HostedMap\x1a\x1b.controller.HostedRunResult\"\x00\x30\x01\x12V\n\rCreateUserKey\x12 .controller.CreateUserKeyRequest\x1a!.controller.CreateUserKeyResponse\"\x00\x12S\n\x0cListUserKeys\x12\x1f.controller.ListUserKeysRequest\x1a .controller.ListUserKeysResponse\"\x00\x12V\n\rRevokeUserKey\x12 .controller.RevokeUserKeyRequest\x1a!.controller.RevokeUserKeyResponse\"\x00\x12h\n\x13RegisterApplication\x12&.controller.RegisterApplicationRequest\x1a%.controller.RegisterApplicationResult\"\x00\x30\x01\x12`\n\x11UpdateApplication\x12$.controller.UpdateApplicationRequest\x1a#.controller.UpdateApplicationResult\"\x00\x12]\n\x10ListApplications\x12#.controller.ListApplicationsRequest\x1a\".controller.ListApplicationsResult\"\x00\x12`\n\x11\x44\x65leteApplication\x12$.controller.DeleteApplicationRequest\x1a#.controller.DeleteApplicationResult\"\x00\x12\x63\n\x12RolloutApplication\x12%.controller.RolloutApplicationRequest\x1a$.controller.RolloutApplicationResult\"\x00\x12\x45\n\x08SetAlias\x12\x1b.controller.SetAliasRequest\x1a\x1a.controller.SetAliasResult\"\x00\x12N\n\x0b\x44\x65leteAlias\x12\x1e.controller.DeleteAliasRequest\x1a\x1d.controller.DeleteAliasResult\"\x00\x12N\n\x0bListAliases\x12\x1e.controller.ListAliasesRequest\x1a\x1d.controller.ListAliasesResult\"\x00\x12J\n\tSetSecret\x12\x1c.controller.SetSecretRequest\x1a\x1d.controller.SetSecretResponse\"\x00\x12P\n\x0bListSecrets\x12\x1e.controller.ListSecretsRequest\x1a\x1f.controller.ListSecretsResponse\"\x00\x12_\n\x10ListAliasRunners\x12#.controller.ListAliasRunnersRequest\x1a$.controller.ListAliasRunnersResponse\"\x00\x12M\n\nStopRunner\x12\x1d.controller.StopRunnerRequest\x1a\x1e.controller.StopRunnerResponse\"\x00\x12M\n\nKillRunner\x12\x1d.controller.KillRunnerRequest\x1a\x1e.controller.KillRunnerResponse\"\x00\x12P\n\x0bListRunners\x12\x1e.controller.ListRunnersRequest\x1a\x1f.controller.ListRunnersResponse\"\x00\x12P\n\x0bShellRunner\x12\x1c.controller.ShellRunnerInput\x1a\x1d.controller.ShellRunnerOutput\"\x00(\x01\x30\x01\x12_\n\x10ListEnvironments\x12#.controller.ListEnvironmentsRequest\x1a$.controller.ListEnvironmentsResponse\"\x00\x12\x62\n\x11\x43reateEnvironment\x12$.controller.CreateEnvironmentRequest\x1a%.controller.CreateEnvironmentResponse\"\x00\x12\x62\n\x11\x44\x65leteEnvironment\x12$.controller.DeleteEnvironmentRequest\x1a%.controller.DeleteEnvironmentResponse\"\x00\x12_\n\x10\x42uildEnvironment\x12#.controller.BuildEnvironmentRequest\x1a\".controller.BuildEnvironmentResult\"\x00\x30\x01\x12S\n\x0cUpdateCanary\x12\x1f.controller.UpdateCanaryRequest\x1a .controller.UpdateCanaryResponse\"\x00\x12Y\n\x0eRollbackCanary\x12!.controller.RollbackCanaryRequest\x1a\".controller.RollbackCanaryResponse\"\x00\x12S\n\x0c\x43ommitCanary\x12\x1f.controller.CommitCanaryRequest\x1a .controller.CommitCanaryResponse\"\x00\x12M\n\nCanaryInfo\x12\x1d.controller.CanaryInfoRequest\x1a\x1e.controller.CanaryInfoResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,12 +29,12 @@ _globals['_MACHINEREQUIREMENTS'].fields_by_name['machine_type']._serialized_options = b'\030\001' _globals['_REGISTERAPPLICATIONREQUEST'].fields_by_name['max_concurrency']._loaded_options = None _globals['_REGISTERAPPLICATIONREQUEST'].fields_by_name['max_concurrency']._serialized_options = b'\030\001' - _globals['_APPLICATIONAUTHMODE']._serialized_start=11115 - _globals['_APPLICATIONAUTHMODE']._serialized_end=11173 - _globals['_DEPLOYMENTSTRATEGY']._serialized_start=11175 - _globals['_DEPLOYMENTSTRATEGY']._serialized_end=11222 - _globals['_RETRYCONDITION']._serialized_start=11224 - _globals['_RETRYCONDITION']._serialized_end=11311 + _globals['_APPLICATIONAUTHMODE']._serialized_start=11747 + _globals['_APPLICATIONAUTHMODE']._serialized_end=11805 + _globals['_DEPLOYMENTSTRATEGY']._serialized_start=11807 + _globals['_DEPLOYMENTSTRATEGY']._serialized_end=11866 + _globals['_RETRYCONDITION']._serialized_start=11868 + _globals['_RETRYCONDITION']._serialized_end=11955 _globals['_HOSTEDMAP']._serialized_start=124 _globals['_HOSTEDMAP']._serialized_end=438 _globals['_FILE']._serialized_start=440 @@ -116,59 +116,75 @@ _globals['_LISTALIASESRESULT']._serialized_start=8017 _globals['_LISTALIASESRESULT']._serialized_end=8076 _globals['_ALIASINFO']._serialized_start=8079 - _globals['_ALIASINFO']._serialized_end=8697 - _globals['_SETSECRETREQUEST']._serialized_start=8699 - _globals['_SETSECRETREQUEST']._serialized_end=8813 - _globals['_SETSECRETRESPONSE']._serialized_start=8815 - _globals['_SETSECRETRESPONSE']._serialized_end=8834 - _globals['_LISTSECRETSREQUEST']._serialized_start=8836 - _globals['_LISTSECRETSREQUEST']._serialized_end=8908 - _globals['_SECRET']._serialized_start=8911 - _globals['_SECRET']._serialized_end=9057 - _globals['_LISTSECRETSRESPONSE']._serialized_start=9059 - _globals['_LISTSECRETSRESPONSE']._serialized_end=9117 - _globals['_LISTALIASRUNNERSREQUEST']._serialized_start=9120 - _globals['_LISTALIASRUNNERSREQUEST']._serialized_end=9324 - _globals['_LISTALIASRUNNERSRESPONSE']._serialized_start=9326 - _globals['_LISTALIASRUNNERSRESPONSE']._serialized_end=9393 - _globals['_RUNNERINFO']._serialized_start=9396 - _globals['_RUNNERINFO']._serialized_end=10000 - _globals['_RUNNERINFO_STATE']._serialized_start=9729 - _globals['_RUNNERINFO_STATE']._serialized_end=9876 - _globals['_RUNNERINFO_REPLACESTATE']._serialized_start=9878 - _globals['_RUNNERINFO_REPLACESTATE']._serialized_end=9943 - _globals['_STOPRUNNERREQUEST']._serialized_start=10002 - _globals['_STOPRUNNERREQUEST']._serialized_end=10063 - _globals['_STOPRUNNERRESPONSE']._serialized_start=10065 - _globals['_STOPRUNNERRESPONSE']._serialized_end=10085 - _globals['_KILLRUNNERREQUEST']._serialized_start=10087 - _globals['_KILLRUNNERREQUEST']._serialized_end=10125 - _globals['_LISTRUNNERSREQUEST']._serialized_start=10128 - _globals['_LISTRUNNERSREQUEST']._serialized_end=10260 - _globals['_LISTRUNNERSRESPONSE']._serialized_start=10262 - _globals['_LISTRUNNERSRESPONSE']._serialized_end=10324 - _globals['_KILLRUNNERRESPONSE']._serialized_start=10326 - _globals['_KILLRUNNERRESPONSE']._serialized_end=10346 - _globals['_TERMINALSIZE']._serialized_start=10348 - _globals['_TERMINALSIZE']._serialized_end=10393 - _globals['_SHELLRUNNERINPUT']._serialized_start=10396 - _globals['_SHELLRUNNERINPUT']._serialized_end=10541 - _globals['_SHELLRUNNEROUTPUT']._serialized_start=10543 - _globals['_SHELLRUNNEROUTPUT']._serialized_end=10629 - _globals['_LISTENVIRONMENTSREQUEST']._serialized_start=10631 - _globals['_LISTENVIRONMENTSREQUEST']._serialized_end=10656 - _globals['_LISTENVIRONMENTSRESPONSE']._serialized_start=10658 - _globals['_LISTENVIRONMENTSRESPONSE']._serialized_end=10735 - _globals['_ENVIRONMENTINFO']._serialized_start=10738 - _globals['_ENVIRONMENTINFO']._serialized_end=10879 - _globals['_CREATEENVIRONMENTREQUEST']._serialized_start=10881 - _globals['_CREATEENVIRONMENTREQUEST']._serialized_end=10963 - _globals['_CREATEENVIRONMENTRESPONSE']._serialized_start=10965 - _globals['_CREATEENVIRONMENTRESPONSE']._serialized_end=11042 - _globals['_DELETEENVIRONMENTREQUEST']._serialized_start=11044 - _globals['_DELETEENVIRONMENTREQUEST']._serialized_end=11084 - _globals['_DELETEENVIRONMENTRESPONSE']._serialized_start=11086 - _globals['_DELETEENVIRONMENTRESPONSE']._serialized_end=11113 - _globals['_ISOLATECONTROLLER']._serialized_start=11314 - _globals['_ISOLATECONTROLLER']._serialized_end=13515 + _globals['_ALIASINFO']._serialized_end=8761 + _globals['_SETSECRETREQUEST']._serialized_start=8763 + _globals['_SETSECRETREQUEST']._serialized_end=8877 + _globals['_SETSECRETRESPONSE']._serialized_start=8879 + _globals['_SETSECRETRESPONSE']._serialized_end=8898 + _globals['_LISTSECRETSREQUEST']._serialized_start=8900 + _globals['_LISTSECRETSREQUEST']._serialized_end=8972 + _globals['_SECRET']._serialized_start=8975 + _globals['_SECRET']._serialized_end=9121 + _globals['_LISTSECRETSRESPONSE']._serialized_start=9123 + _globals['_LISTSECRETSRESPONSE']._serialized_end=9181 + _globals['_LISTALIASRUNNERSREQUEST']._serialized_start=9184 + _globals['_LISTALIASRUNNERSREQUEST']._serialized_end=9388 + _globals['_LISTALIASRUNNERSRESPONSE']._serialized_start=9390 + _globals['_LISTALIASRUNNERSRESPONSE']._serialized_end=9457 + _globals['_RUNNERINFO']._serialized_start=9460 + _globals['_RUNNERINFO']._serialized_end=10064 + _globals['_RUNNERINFO_STATE']._serialized_start=9793 + _globals['_RUNNERINFO_STATE']._serialized_end=9940 + _globals['_RUNNERINFO_REPLACESTATE']._serialized_start=9942 + _globals['_RUNNERINFO_REPLACESTATE']._serialized_end=10007 + _globals['_STOPRUNNERREQUEST']._serialized_start=10066 + _globals['_STOPRUNNERREQUEST']._serialized_end=10127 + _globals['_STOPRUNNERRESPONSE']._serialized_start=10129 + _globals['_STOPRUNNERRESPONSE']._serialized_end=10149 + _globals['_KILLRUNNERREQUEST']._serialized_start=10151 + _globals['_KILLRUNNERREQUEST']._serialized_end=10189 + _globals['_LISTRUNNERSREQUEST']._serialized_start=10192 + _globals['_LISTRUNNERSREQUEST']._serialized_end=10324 + _globals['_LISTRUNNERSRESPONSE']._serialized_start=10326 + _globals['_LISTRUNNERSRESPONSE']._serialized_end=10388 + _globals['_KILLRUNNERRESPONSE']._serialized_start=10390 + _globals['_KILLRUNNERRESPONSE']._serialized_end=10410 + _globals['_TERMINALSIZE']._serialized_start=10412 + _globals['_TERMINALSIZE']._serialized_end=10457 + _globals['_SHELLRUNNERINPUT']._serialized_start=10460 + _globals['_SHELLRUNNERINPUT']._serialized_end=10605 + _globals['_SHELLRUNNEROUTPUT']._serialized_start=10607 + _globals['_SHELLRUNNEROUTPUT']._serialized_end=10693 + _globals['_LISTENVIRONMENTSREQUEST']._serialized_start=10695 + _globals['_LISTENVIRONMENTSREQUEST']._serialized_end=10720 + _globals['_LISTENVIRONMENTSRESPONSE']._serialized_start=10722 + _globals['_LISTENVIRONMENTSRESPONSE']._serialized_end=10799 + _globals['_ENVIRONMENTINFO']._serialized_start=10802 + _globals['_ENVIRONMENTINFO']._serialized_end=10943 + _globals['_CREATEENVIRONMENTREQUEST']._serialized_start=10945 + _globals['_CREATEENVIRONMENTREQUEST']._serialized_end=11027 + _globals['_CREATEENVIRONMENTRESPONSE']._serialized_start=11029 + _globals['_CREATEENVIRONMENTRESPONSE']._serialized_end=11106 + _globals['_DELETEENVIRONMENTREQUEST']._serialized_start=11108 + _globals['_DELETEENVIRONMENTREQUEST']._serialized_end=11148 + _globals['_DELETEENVIRONMENTRESPONSE']._serialized_start=11150 + _globals['_DELETEENVIRONMENTRESPONSE']._serialized_end=11177 + _globals['_UPDATECANARYREQUEST']._serialized_start=11179 + _globals['_UPDATECANARYREQUEST']._serialized_end=11230 + _globals['_UPDATECANARYRESPONSE']._serialized_start=11232 + _globals['_UPDATECANARYRESPONSE']._serialized_end=11300 + _globals['_ROLLBACKCANARYREQUEST']._serialized_start=11302 + _globals['_ROLLBACKCANARYREQUEST']._serialized_end=11340 + _globals['_ROLLBACKCANARYRESPONSE']._serialized_start=11342 + _globals['_ROLLBACKCANARYRESPONSE']._serialized_end=11404 + _globals['_COMMITCANARYREQUEST']._serialized_start=11406 + _globals['_COMMITCANARYREQUEST']._serialized_end=11492 + _globals['_COMMITCANARYRESPONSE']._serialized_start=11494 + _globals['_COMMITCANARYRESPONSE']._serialized_end=11554 + _globals['_CANARYINFOREQUEST']._serialized_start=11556 + _globals['_CANARYINFOREQUEST']._serialized_end=11590 + _globals['_CANARYINFORESPONSE']._serialized_start=11593 + _globals['_CANARYINFORESPONSE']._serialized_end=11745 + _globals['_ISOLATECONTROLLER']._serialized_start=11958 + _globals['_ISOLATECONTROLLER']._serialized_end=14499 # @@protoc_insertion_point(module_scope) diff --git a/projects/isolate_proto/src/isolate_proto/controller_pb2.pyi b/projects/isolate_proto/src/isolate_proto/controller_pb2.pyi index 17b69031d..42c8123a0 100644 --- a/projects/isolate_proto/src/isolate_proto/controller_pb2.pyi +++ b/projects/isolate_proto/src/isolate_proto/controller_pb2.pyi @@ -47,11 +47,13 @@ class _DeploymentStrategyEnumTypeWrapper(google.protobuf.internal.enum_type_wrap DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor RECREATE: _DeploymentStrategy.ValueType # 0 ROLLING: _DeploymentStrategy.ValueType # 1 + CANARY: _DeploymentStrategy.ValueType # 2 class DeploymentStrategy(_DeploymentStrategy, metaclass=_DeploymentStrategyEnumTypeWrapper): ... RECREATE: DeploymentStrategy.ValueType # 0 ROLLING: DeploymentStrategy.ValueType # 1 +CANARY: DeploymentStrategy.ValueType # 2 global___DeploymentStrategy = DeploymentStrategy class _RetryCondition: @@ -1429,6 +1431,7 @@ class AliasInfo(google.protobuf.message.Message): SCALING_DELAY_SECONDS_FIELD_NUMBER: builtins.int ENVIRONMENT_NAME_FIELD_NUMBER: builtins.int IS_ROLLING_FIELD_NUMBER: builtins.int + CANARY_FIELD_NUMBER: builtins.int alias: builtins.str revision: builtins.str auth_mode: global___ApplicationAuthMode.ValueType @@ -1448,6 +1451,8 @@ class AliasInfo(google.protobuf.message.Message): scaling_delay_seconds: builtins.int environment_name: builtins.str is_rolling: builtins.bool + @property + def canary(self) -> global___CanaryInfoResponse: ... def __init__( self, *, @@ -1468,9 +1473,12 @@ class AliasInfo(google.protobuf.message.Message): scaling_delay_seconds: builtins.int | None = ..., environment_name: builtins.str | None = ..., is_rolling: builtins.bool = ..., + canary: global___CanaryInfoResponse | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_concurrency_buffer", b"_concurrency_buffer", "_concurrency_buffer_perc", b"_concurrency_buffer_perc", "_environment_name", b"_environment_name", "_request_timeout", b"_request_timeout", "_scaling_delay_seconds", b"_scaling_delay_seconds", "_startup_timeout", b"_startup_timeout", "concurrency_buffer", b"concurrency_buffer", "concurrency_buffer_perc", b"concurrency_buffer_perc", "environment_name", b"environment_name", "request_timeout", b"request_timeout", "scaling_delay_seconds", b"scaling_delay_seconds", "startup_timeout", b"startup_timeout"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_concurrency_buffer", b"_concurrency_buffer", "_concurrency_buffer_perc", b"_concurrency_buffer_perc", "_environment_name", b"_environment_name", "_request_timeout", b"_request_timeout", "_scaling_delay_seconds", b"_scaling_delay_seconds", "_startup_timeout", b"_startup_timeout", "active_runners", b"active_runners", "alias", b"alias", "auth_mode", b"auth_mode", "concurrency_buffer", b"concurrency_buffer", "concurrency_buffer_perc", b"concurrency_buffer_perc", "environment_name", b"environment_name", "is_rolling", b"is_rolling", "keep_alive", b"keep_alive", "machine_types", b"machine_types", "max_concurrency", b"max_concurrency", "max_multiplexing", b"max_multiplexing", "min_concurrency", b"min_concurrency", "request_timeout", b"request_timeout", "revision", b"revision", "scaling_delay_seconds", b"scaling_delay_seconds", "startup_timeout", b"startup_timeout", "valid_regions", b"valid_regions"]) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_canary", b"_canary", "_concurrency_buffer", b"_concurrency_buffer", "_concurrency_buffer_perc", b"_concurrency_buffer_perc", "_environment_name", b"_environment_name", "_request_timeout", b"_request_timeout", "_scaling_delay_seconds", b"_scaling_delay_seconds", "_startup_timeout", b"_startup_timeout", "canary", b"canary", "concurrency_buffer", b"concurrency_buffer", "concurrency_buffer_perc", b"concurrency_buffer_perc", "environment_name", b"environment_name", "request_timeout", b"request_timeout", "scaling_delay_seconds", b"scaling_delay_seconds", "startup_timeout", b"startup_timeout"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_canary", b"_canary", "_concurrency_buffer", b"_concurrency_buffer", "_concurrency_buffer_perc", b"_concurrency_buffer_perc", "_environment_name", b"_environment_name", "_request_timeout", b"_request_timeout", "_scaling_delay_seconds", b"_scaling_delay_seconds", "_startup_timeout", b"_startup_timeout", "active_runners", b"active_runners", "alias", b"alias", "auth_mode", b"auth_mode", "canary", b"canary", "concurrency_buffer", b"concurrency_buffer", "concurrency_buffer_perc", b"concurrency_buffer_perc", "environment_name", b"environment_name", "is_rolling", b"is_rolling", "keep_alive", b"keep_alive", "machine_types", b"machine_types", "max_concurrency", b"max_concurrency", "max_multiplexing", b"max_multiplexing", "min_concurrency", b"min_concurrency", "request_timeout", b"request_timeout", "revision", b"revision", "scaling_delay_seconds", b"scaling_delay_seconds", "startup_timeout", b"startup_timeout", "valid_regions", b"valid_regions"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_canary", b"_canary"]) -> typing_extensions.Literal["canary"] | None: ... @typing.overload def WhichOneof(self, oneof_group: typing_extensions.Literal["_concurrency_buffer", b"_concurrency_buffer"]) -> typing_extensions.Literal["concurrency_buffer"] | None: ... @typing.overload @@ -2018,3 +2026,155 @@ class DeleteEnvironmentResponse(google.protobuf.message.Message): ) -> None: ... global___DeleteEnvironmentResponse = DeleteEnvironmentResponse + +@typing_extensions.final +class UpdateCanaryRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALIAS_FIELD_NUMBER: builtins.int + RATIO_FIELD_NUMBER: builtins.int + alias: builtins.str + ratio: builtins.int + """0-100""" + def __init__( + self, + *, + alias: builtins.str = ..., + ratio: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["alias", b"alias", "ratio", b"ratio"]) -> None: ... + +global___UpdateCanaryRequest = UpdateCanaryRequest + +@typing_extensions.final +class UpdateCanaryResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + INFO_FIELD_NUMBER: builtins.int + @property + def info(self) -> global___CanaryInfoResponse: ... + def __init__( + self, + *, + info: global___CanaryInfoResponse | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["info", b"info"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["info", b"info"]) -> None: ... + +global___UpdateCanaryResponse = UpdateCanaryResponse + +@typing_extensions.final +class RollbackCanaryRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALIAS_FIELD_NUMBER: builtins.int + alias: builtins.str + def __init__( + self, + *, + alias: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["alias", b"alias"]) -> None: ... + +global___RollbackCanaryRequest = RollbackCanaryRequest + +@typing_extensions.final +class RollbackCanaryResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALIAS_FIELD_NUMBER: builtins.int + @property + def alias(self) -> global___AliasInfo: ... + def __init__( + self, + *, + alias: global___AliasInfo | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["alias", b"alias"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["alias", b"alias"]) -> None: ... + +global___RollbackCanaryResponse = RollbackCanaryResponse + +@typing_extensions.final +class CommitCanaryRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALIAS_FIELD_NUMBER: builtins.int + STRATEGY_FIELD_NUMBER: builtins.int + alias: builtins.str + strategy: global___DeploymentStrategy.ValueType + def __init__( + self, + *, + alias: builtins.str = ..., + strategy: global___DeploymentStrategy.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["alias", b"alias", "strategy", b"strategy"]) -> None: ... + +global___CommitCanaryRequest = CommitCanaryRequest + +@typing_extensions.final +class CommitCanaryResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALIAS_FIELD_NUMBER: builtins.int + @property + def alias(self) -> global___AliasInfo: ... + def __init__( + self, + *, + alias: global___AliasInfo | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["alias", b"alias"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["alias", b"alias"]) -> None: ... + +global___CommitCanaryResponse = CommitCanaryResponse + +@typing_extensions.final +class CanaryInfoRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALIAS_FIELD_NUMBER: builtins.int + alias: builtins.str + def __init__( + self, + *, + alias: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["alias", b"alias"]) -> None: ... + +global___CanaryInfoRequest = CanaryInfoRequest + +@typing_extensions.final +class CanaryInfoResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACTIVE_FIELD_NUMBER: builtins.int + REVISION_FIELD_NUMBER: builtins.int + RATIO_FIELD_NUMBER: builtins.int + RUNNERS_FIELD_NUMBER: builtins.int + active: builtins.bool + revision: builtins.str + ratio: builtins.int + """0-100""" + runners: builtins.int + def __init__( + self, + *, + active: builtins.bool | None = ..., + revision: builtins.str | None = ..., + ratio: builtins.int | None = ..., + runners: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_active", b"_active", "_ratio", b"_ratio", "_revision", b"_revision", "_runners", b"_runners", "active", b"active", "ratio", b"ratio", "revision", b"revision", "runners", b"runners"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_active", b"_active", "_ratio", b"_ratio", "_revision", b"_revision", "_runners", b"_runners", "active", b"active", "ratio", b"ratio", "revision", b"revision", "runners", b"runners"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_active", b"_active"]) -> typing_extensions.Literal["active"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_ratio", b"_ratio"]) -> typing_extensions.Literal["ratio"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_revision", b"_revision"]) -> typing_extensions.Literal["revision"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_runners", b"_runners"]) -> typing_extensions.Literal["runners"] | None: ... + +global___CanaryInfoResponse = CanaryInfoResponse diff --git a/projects/isolate_proto/src/isolate_proto/controller_pb2_grpc.py b/projects/isolate_proto/src/isolate_proto/controller_pb2_grpc.py index 60535da1a..059646ba6 100644 --- a/projects/isolate_proto/src/isolate_proto/controller_pb2_grpc.py +++ b/projects/isolate_proto/src/isolate_proto/controller_pb2_grpc.py @@ -164,6 +164,26 @@ def __init__(self, channel): request_serializer=controller__pb2.BuildEnvironmentRequest.SerializeToString, response_deserializer=controller__pb2.BuildEnvironmentResult.FromString, _registered_method=True) + self.UpdateCanary = channel.unary_unary( + '/controller.IsolateController/UpdateCanary', + request_serializer=controller__pb2.UpdateCanaryRequest.SerializeToString, + response_deserializer=controller__pb2.UpdateCanaryResponse.FromString, + _registered_method=True) + self.RollbackCanary = channel.unary_unary( + '/controller.IsolateController/RollbackCanary', + request_serializer=controller__pb2.RollbackCanaryRequest.SerializeToString, + response_deserializer=controller__pb2.RollbackCanaryResponse.FromString, + _registered_method=True) + self.CommitCanary = channel.unary_unary( + '/controller.IsolateController/CommitCanary', + request_serializer=controller__pb2.CommitCanaryRequest.SerializeToString, + response_deserializer=controller__pb2.CommitCanaryResponse.FromString, + _registered_method=True) + self.CanaryInfo = channel.unary_unary( + '/controller.IsolateController/CanaryInfo', + request_serializer=controller__pb2.CanaryInfoRequest.SerializeToString, + response_deserializer=controller__pb2.CanaryInfoResponse.FromString, + _registered_method=True) class IsolateControllerServicer(object): @@ -348,6 +368,34 @@ def BuildEnvironment(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def UpdateCanary(self, request, context): + """Update application canary config + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def RollbackCanary(self, request, context): + """Rollback (cancel) application canary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CommitCanary(self, request, context): + """Commit (roll forward) application canary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CanaryInfo(self, request, context): + """Get application canary info + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_IsolateControllerServicer_to_server(servicer, server): rpc_method_handlers = { @@ -476,6 +524,26 @@ def add_IsolateControllerServicer_to_server(servicer, server): request_deserializer=controller__pb2.BuildEnvironmentRequest.FromString, response_serializer=controller__pb2.BuildEnvironmentResult.SerializeToString, ), + 'UpdateCanary': grpc.unary_unary_rpc_method_handler( + servicer.UpdateCanary, + request_deserializer=controller__pb2.UpdateCanaryRequest.FromString, + response_serializer=controller__pb2.UpdateCanaryResponse.SerializeToString, + ), + 'RollbackCanary': grpc.unary_unary_rpc_method_handler( + servicer.RollbackCanary, + request_deserializer=controller__pb2.RollbackCanaryRequest.FromString, + response_serializer=controller__pb2.RollbackCanaryResponse.SerializeToString, + ), + 'CommitCanary': grpc.unary_unary_rpc_method_handler( + servicer.CommitCanary, + request_deserializer=controller__pb2.CommitCanaryRequest.FromString, + response_serializer=controller__pb2.CommitCanaryResponse.SerializeToString, + ), + 'CanaryInfo': grpc.unary_unary_rpc_method_handler( + servicer.CanaryInfo, + request_deserializer=controller__pb2.CanaryInfoRequest.FromString, + response_serializer=controller__pb2.CanaryInfoResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'controller.IsolateController', rpc_method_handlers) @@ -1161,3 +1229,111 @@ def BuildEnvironment(request, timeout, metadata, _registered_method=True) + + @staticmethod + def UpdateCanary(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/controller.IsolateController/UpdateCanary', + controller__pb2.UpdateCanaryRequest.SerializeToString, + controller__pb2.UpdateCanaryResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def RollbackCanary(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/controller.IsolateController/RollbackCanary', + controller__pb2.RollbackCanaryRequest.SerializeToString, + controller__pb2.RollbackCanaryResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CommitCanary(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/controller.IsolateController/CommitCanary', + controller__pb2.CommitCanaryRequest.SerializeToString, + controller__pb2.CommitCanaryResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CanaryInfo(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/controller.IsolateController/CanaryInfo', + controller__pb2.CanaryInfoRequest.SerializeToString, + controller__pb2.CanaryInfoResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/projects/isolate_proto/src/isolate_proto/health/health_pb2_grpc.py b/projects/isolate_proto/src/isolate_proto/health/health_pb2_grpc.py index 70500f3a0..ccf776f36 100644 --- a/projects/isolate_proto/src/isolate_proto/health/health_pb2_grpc.py +++ b/projects/isolate_proto/src/isolate_proto/health/health_pb2_grpc.py @@ -3,7 +3,7 @@ import grpc import warnings -from isolate.server.health import health_pb2 as health__pb2 +from isolate_proto.health import health_pb2 as health__pb2 GRPC_GENERATED_VERSION = '1.64.0' GRPC_VERSION = grpc.__version__ diff --git a/projects/isolate_proto/tests/test_proto.py b/projects/isolate_proto/tests/test_proto.py index 62ed18104..e39d5cd1d 100644 --- a/projects/isolate_proto/tests/test_proto.py +++ b/projects/isolate_proto/tests/test_proto.py @@ -220,3 +220,32 @@ def test_register_application_private_logs_presence(): ) assert request_with_private_logs_true.HasField("private_logs") is True assert request_with_private_logs_true.private_logs is True + + +def test_canary_fields_and_messages(): + canary = isolate_proto.CanaryInfoResponse( + active=True, + revision="rev-123", + ratio=25, + runners=3, + ) + assert canary.HasField("active") is True + assert canary.HasField("revision") is True + assert canary.ratio == 25 + + alias = isolate_proto.AliasInfo(alias="my-app", canary=canary) + assert alias.HasField("canary") is True + assert alias.canary.revision == "rev-123" + + update = isolate_proto.UpdateCanaryRequest(alias="my-app", ratio=50) + assert update.alias == "my-app" + assert update.ratio == 50 + + commit = isolate_proto.CommitCanaryRequest( + alias="my-app", + strategy=isolate_proto.CANARY, + ) + assert commit.strategy == isolate_proto.CANARY + + response = isolate_proto.UpdateCanaryResponse(info=canary) + assert response.info.active is True