From 836ee5d1c854375787d081f8db37bdde34897639 Mon Sep 17 00:00:00 2001 From: Cassandra Coyle Date: Tue, 26 May 2026 16:27:24 -0500 Subject: [PATCH 1/2] jobs api stable, bump to latest dapr version and regen protos Signed-off-by: Cassandra Coyle --- dapr/aio/clients/grpc/client.py | 118 ++-- dapr/clients/grpc/client.py | 115 +++- dapr/proto/runtime/v1/actors_pb2.py | 123 ++-- dapr/proto/runtime/v1/actors_pb2.pyi | 583 ++++++++++++++++++ dapr/proto/runtime/v1/appcallback_pb2.py | 14 +- dapr/proto/runtime/v1/appcallback_pb2_grpc.py | 46 +- dapr/proto/runtime/v1/dapr_pb2.py | 14 +- dapr/proto/runtime/v1/dapr_pb2_grpc.py | 275 ++++++++- dapr/proto/runtime/v1/jobs_pb2.py | 18 +- dapr/proto/runtime/v1/jobs_pb2.pyi | 71 +++ examples/jobs/README.md | 11 +- examples/jobs/job_management.py | 14 +- examples/jobs/job_processing.py | 4 +- ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py | 10 +- ext/dapr-ext-grpc/tests/test_servicier.py | 30 + tests/clients/fake_dapr_server.py | 42 +- tests/clients/test_dapr_grpc_client.py | 78 ++- tests/clients/test_dapr_grpc_client_async.py | 89 ++- tests/integration/AGENTS.md | 4 +- tests/integration/test_jobs.py | 32 +- tests/integration/test_jobs_async.py | 14 +- 21 files changed, 1477 insertions(+), 228 deletions(-) diff --git a/dapr/aio/clients/grpc/client.py b/dapr/aio/clients/grpc/client.py index b93758179..61924a60a 100644 --- a/dapr/aio/clients/grpc/client.py +++ b/dapr/aio/clients/grpc/client.py @@ -1738,10 +1738,11 @@ async def get_metadata(self) -> GetMetadataResponse: mcp_servers=mcp_servers, ) - async def schedule_job_alpha1(self, job: Job, overwrite: bool = False) -> DaprResponse: + async def schedule_job(self, job: Job, overwrite: bool = False) -> DaprResponse: """Schedules a job to be triggered at a specified time or interval. - This is an Alpha API and is subject to change. + Calls the stable ScheduleJob RPC and falls back to ScheduleJobAlpha1 when + the sidecar predates the stable Jobs API. Args: job (Job): The job to schedule. Must have a name and either schedule or due_time. @@ -1754,32 +1755,46 @@ async def schedule_job_alpha1(self, job: Job, overwrite: bool = False) -> DaprRe ValueError: If job name is empty or both schedule and due_time are missing. DaprGrpcError: If the Dapr runtime returns an error. """ - # Warnings and input validation - warn( - 'The Jobs API is an Alpha version and is subject to change.', - UserWarning, - stacklevel=2, - ) validateNotBlankString(job_name=job.name) if not job.schedule and not job.due_time: raise ValueError('Job must have either schedule or due_time specified') - # Convert job to proto using the Job class private method job_proto = job._get_proto() request = api_v1.ScheduleJobRequest(job=job_proto, overwrite=overwrite) try: - call = self._stub.ScheduleJobAlpha1(request) + call = self._stub.ScheduleJob(request) await call - return DaprResponse(headers=await call.initial_metadata()) - except grpc.aio.AioRpcError as err: - raise DaprGrpcError(err) from err + except AioRpcError as err: + if err.code() == StatusCode.UNIMPLEMENTED: + try: + call = self._stub.ScheduleJobAlpha1(request) + await call + except AioRpcError as err2: + raise DaprGrpcError(err2) from err2 + else: + raise DaprGrpcError(err) from err + return DaprResponse(headers=await call.initial_metadata()) - async def get_job_alpha1(self, name: str) -> Job: + async def schedule_job_alpha1(self, job: Job, overwrite: bool = False) -> DaprResponse: + """Deprecated: use :meth:`schedule_job`. + + The Jobs API graduated to stable in Dapr 1.18; this Alpha1 alias remains + for backwards compatibility and forwards to :meth:`schedule_job`. + """ + warn( + 'schedule_job_alpha1 is deprecated; use schedule_job instead.', + DeprecationWarning, + stacklevel=2, + ) + return await self.schedule_job(job, overwrite) + + async def get_job(self, name: str) -> Job: """Gets a scheduled job by name. - This is an Alpha API and is subject to change. + Calls the stable GetJob RPC and falls back to GetJobAlpha1 when the + sidecar predates the stable Jobs API. Args: name (str): The name of the job to retrieve. @@ -1791,27 +1806,42 @@ async def get_job_alpha1(self, name: str) -> Job: ValueError: If job name is empty. DaprGrpcError: If the Dapr runtime returns an error. """ - # Warnings and input validation - warn( - 'The Jobs API is an Alpha version and is subject to change.', - UserWarning, - stacklevel=2, - ) validateNotBlankString(job_name=name) request = api_v1.GetJobRequest(name=name) try: - call = self._stub.GetJobAlpha1(request) + call = self._stub.GetJob(request) response = await call - return Job._from_proto(response.job) - except grpc.aio.AioRpcError as err: - raise DaprGrpcError(err) from err + except AioRpcError as err: + if err.code() == StatusCode.UNIMPLEMENTED: + try: + call = self._stub.GetJobAlpha1(request) + response = await call + except AioRpcError as err2: + raise DaprGrpcError(err2) from err2 + else: + raise DaprGrpcError(err) from err + return Job._from_proto(response.job) - async def delete_job_alpha1(self, name: str) -> DaprResponse: + async def get_job_alpha1(self, name: str) -> Job: + """Deprecated: use :meth:`get_job`. + + The Jobs API graduated to stable in Dapr 1.18; this Alpha1 alias remains + for backwards compatibility and forwards to :meth:`get_job`. + """ + warn( + 'get_job_alpha1 is deprecated; use get_job instead.', + DeprecationWarning, + stacklevel=2, + ) + return await self.get_job(name) + + async def delete_job(self, name: str) -> DaprResponse: """Deletes a scheduled job by name. - This is an Alpha API and is subject to change. + Calls the stable DeleteJob RPC and falls back to DeleteJobAlpha1 when the + sidecar predates the stable Jobs API. Args: name (str): The name of the job to delete. @@ -1823,22 +1853,36 @@ async def delete_job_alpha1(self, name: str) -> DaprResponse: ValueError: If job name is empty. DaprGrpcError: If the Dapr runtime returns an error. """ - # Warnings and input validation - warn( - 'The Jobs API is an Alpha version and is subject to change.', - UserWarning, - stacklevel=2, - ) validateNotBlankString(job_name=name) request = api_v1.DeleteJobRequest(name=name) try: - call = self._stub.DeleteJobAlpha1(request) + call = self._stub.DeleteJob(request) await call - return DaprResponse(headers=await call.initial_metadata()) - except grpc.aio.AioRpcError as err: - raise DaprGrpcError(err) from err + except AioRpcError as err: + if err.code() == StatusCode.UNIMPLEMENTED: + try: + call = self._stub.DeleteJobAlpha1(request) + await call + except AioRpcError as err2: + raise DaprGrpcError(err2) from err2 + else: + raise DaprGrpcError(err) from err + return DaprResponse(headers=await call.initial_metadata()) + + async def delete_job_alpha1(self, name: str) -> DaprResponse: + """Deprecated: use :meth:`delete_job`. + + The Jobs API graduated to stable in Dapr 1.18; this Alpha1 alias remains + for backwards compatibility and forwards to :meth:`delete_job`. + """ + warn( + 'delete_job_alpha1 is deprecated; use delete_job instead.', + DeprecationWarning, + stacklevel=2, + ) + return await self.delete_job(name) async def set_metadata(self, attributeName: str, attributeValue: str) -> DaprResponse: """Adds a custom (extended) metadata attribute to the Dapr sidecar diff --git a/dapr/clients/grpc/client.py b/dapr/clients/grpc/client.py index bb48cb9f8..c4130329a 100644 --- a/dapr/clients/grpc/client.py +++ b/dapr/clients/grpc/client.py @@ -1668,10 +1668,11 @@ def converse_alpha2( except RpcError as err: raise DaprGrpcError(err) from err - def schedule_job_alpha1(self, job: Job, overwrite: bool = False) -> DaprResponse: + def schedule_job(self, job: Job, overwrite: bool = False) -> DaprResponse: """Schedules a job to be triggered at a specified time or interval. - This is an Alpha API and is subject to change. + Calls the stable ScheduleJob RPC and falls back to ScheduleJobAlpha1 when + the sidecar predates the stable Jobs API. Args: job (Job): The job to schedule. Must have a name and either schedule or due_time. @@ -1684,31 +1685,46 @@ def schedule_job_alpha1(self, job: Job, overwrite: bool = False) -> DaprResponse ValueError: If job name is empty or both schedule and due_time are missing. DaprGrpcError: If the Dapr runtime returns an error. """ - # Warnings and input validation - warn( - 'The Jobs API is an Alpha version and is subject to change.', - UserWarning, - stacklevel=2, - ) validateNotBlankString(job_name=job.name) if not job.schedule and not job.due_time: raise ValueError('Job must have either schedule or due_time specified') - # Convert job to proto using the Job class private method job_proto = job._get_proto() request = api_v1.ScheduleJobRequest(job=job_proto, overwrite=overwrite) try: - _, call = self.retry_policy.run_rpc(self._stub.ScheduleJobAlpha1.with_call, request) - return DaprResponse(headers=call.initial_metadata()) + _, call = self.retry_policy.run_rpc(self._stub.ScheduleJob.with_call, request) except RpcError as err: - raise DaprGrpcError(err) from err + if err.code() == StatusCode.UNIMPLEMENTED: + try: + _, call = self.retry_policy.run_rpc( + self._stub.ScheduleJobAlpha1.with_call, request + ) + except RpcError as err2: + raise DaprGrpcError(err2) from err2 + else: + raise DaprGrpcError(err) from err + return DaprResponse(headers=call.initial_metadata()) - def get_job_alpha1(self, name: str) -> Job: + def schedule_job_alpha1(self, job: Job, overwrite: bool = False) -> DaprResponse: + """Deprecated: use :meth:`schedule_job`. + + The Jobs API graduated to stable in Dapr 1.18; this Alpha1 alias remains + for backwards compatibility and forwards to :meth:`schedule_job`. + """ + warn( + 'schedule_job_alpha1 is deprecated; use schedule_job instead.', + DeprecationWarning, + stacklevel=2, + ) + return self.schedule_job(job, overwrite) + + def get_job(self, name: str) -> Job: """Gets a scheduled job by name. - This is an Alpha API and is subject to change. + Calls the stable GetJob RPC and falls back to GetJobAlpha1 when the + sidecar predates the stable Jobs API. Args: name (str): The name of the job to retrieve. @@ -1720,26 +1736,42 @@ def get_job_alpha1(self, name: str) -> Job: ValueError: If job name is empty. DaprGrpcError: If the Dapr runtime returns an error. """ - # Warnings and input validation - warn( - 'The Jobs API is an Alpha version and is subject to change.', - UserWarning, - stacklevel=2, - ) validateNotBlankString(job_name=name) request = api_v1.GetJobRequest(name=name) try: - response, call = self.retry_policy.run_rpc(self._stub.GetJobAlpha1.with_call, request) - return Job._from_proto(response.job) + response, _ = self.retry_policy.run_rpc(self._stub.GetJob.with_call, request) except RpcError as err: - raise DaprGrpcError(err) from err + if err.code() == StatusCode.UNIMPLEMENTED: + try: + response, _ = self.retry_policy.run_rpc( + self._stub.GetJobAlpha1.with_call, request + ) + except RpcError as err2: + raise DaprGrpcError(err2) from err2 + else: + raise DaprGrpcError(err) from err + return Job._from_proto(response.job) - def delete_job_alpha1(self, name: str) -> DaprResponse: + def get_job_alpha1(self, name: str) -> Job: + """Deprecated: use :meth:`get_job`. + + The Jobs API graduated to stable in Dapr 1.18; this Alpha1 alias remains + for backwards compatibility and forwards to :meth:`get_job`. + """ + warn( + 'get_job_alpha1 is deprecated; use get_job instead.', + DeprecationWarning, + stacklevel=2, + ) + return self.get_job(name) + + def delete_job(self, name: str) -> DaprResponse: """Deletes a scheduled job by name. - This is an Alpha API and is subject to change. + Calls the stable DeleteJob RPC and falls back to DeleteJobAlpha1 when the + sidecar predates the stable Jobs API. Args: name (str): The name of the job to delete. @@ -1751,21 +1783,36 @@ def delete_job_alpha1(self, name: str) -> DaprResponse: ValueError: If job name is empty. DaprGrpcError: If the Dapr runtime returns an error. """ - # Warnings and input validation - warn( - 'The Jobs API is an Alpha version and is subject to change.', - UserWarning, - stacklevel=2, - ) validateNotBlankString(job_name=name) request = api_v1.DeleteJobRequest(name=name) try: - _, call = self.retry_policy.run_rpc(self._stub.DeleteJobAlpha1.with_call, request) - return DaprResponse(headers=call.initial_metadata()) + _, call = self.retry_policy.run_rpc(self._stub.DeleteJob.with_call, request) except RpcError as err: - raise DaprGrpcError(err) from err + if err.code() == StatusCode.UNIMPLEMENTED: + try: + _, call = self.retry_policy.run_rpc( + self._stub.DeleteJobAlpha1.with_call, request + ) + except RpcError as err2: + raise DaprGrpcError(err2) from err2 + else: + raise DaprGrpcError(err) from err + return DaprResponse(headers=call.initial_metadata()) + + def delete_job_alpha1(self, name: str) -> DaprResponse: + """Deprecated: use :meth:`delete_job`. + + The Jobs API graduated to stable in Dapr 1.18; this Alpha1 alias remains + for backwards compatibility and forwards to :meth:`delete_job`. + """ + warn( + 'delete_job_alpha1 is deprecated; use delete_job instead.', + DeprecationWarning, + stacklevel=2, + ) + return self.delete_job(name) def wait(self, timeout_s: float): """Waits for sidecar to be available within the timeout. diff --git a/dapr/proto/runtime/v1/actors_pb2.py b/dapr/proto/runtime/v1/actors_pb2.py index 28fa79df0..ea2c0476d 100644 --- a/dapr/proto/runtime/v1/actors_pb2.py +++ b/dapr/proto/runtime/v1/actors_pb2.py @@ -23,10 +23,11 @@ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from dapr.proto.common.v1 import common_pb2 as dapr_dot_proto_dot_common_dot_v1_dot_common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"dapr/proto/runtime/v1/actors.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a!dapr/proto/common/v1/common.proto\"\xbb\x01\n\x19RegisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61llback\x18\x06 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x07 \x01(\x0c\x12\x0b\n\x03ttl\x18\x08 \x01(\t\"e\n\x1bUnregisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"\xba\x02\n\x1cRegisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12\x0b\n\x03ttl\x18\x07 \x01(\t\x12\x16\n\toverwrite\x18\x08 \x01(\x08H\x00\x88\x01\x01\x12S\n\x0e\x66\x61ilure_policy\x18\t \x01(\x0b\x32&.dapr.proto.common.v1.JobFailurePolicyH\x01R\x0e\x66\x61ilure_policy\x88\x01\x01\x42\x0c\n\n_overwriteB\x11\n\x0f_failure_policy\"h\n\x1eUnregisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"]\n\x14GetActorStateRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0b\n\x03key\x18\x03 \x01(\t\"\xa4\x01\n\x15GetActorStateResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12L\n\x08metadata\x18\x02 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetActorStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xac\x01\n#ExecuteActorStateTransactionRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12K\n\noperations\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.TransactionalActorStateOperation\"\xf5\x01\n TransactionalActorStateOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12#\n\x05value\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any\x12W\n\x08metadata\x18\x04 \x03(\x0b\x32\x45.dapr.proto.runtime.v1.TransactionalActorStateOperation.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xe8\x01\n\x12InvokeActorRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12I\n\x08metadata\x18\x05 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.InvokeActorRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\x13InvokeActorResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"a\n\x17GetActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torID\x12\x0c\n\x04name\x18\x03 \x01(\t\"\xdf\x01\n\x18GetActorReminderResponse\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torID\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x00R\x07\x64ueTime\x88\x01\x01\x12\x13\n\x06period\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x10\n\x03ttl\x18\x07 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_due_timeB\t\n\x07_periodB\x06\n\x04_ttl\"g\n\x19ListActorRemindersRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x1e\n\x08\x61\x63tor_id\x18\x02 \x01(\tH\x00R\x07\x61\x63torId\x88\x01\x01\x42\x0b\n\t_actor_id\"Z\n\x1aListActorRemindersResponse\x12<\n\treminders\x18\x01 \x03(\x0b\x32).dapr.proto.runtime.v1.NamedActorReminder\"Z\n\x12NamedActorReminder\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\x08reminder\x18\x02 \x01(\x0b\x32$.dapr.proto.runtime.v1.ActorReminder\"\xd4\x01\n\rActorReminder\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torID\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x00R\x07\x64ueTime\x88\x01\x01\x12\x13\n\x06period\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x10\n\x03ttl\x18\x07 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_due_timeB\t\n\x07_periodB\x06\n\x04_ttl\"s\n%UnregisterActorRemindersByTypeRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x1e\n\x08\x61\x63tor_id\x18\x02 \x01(\tH\x00R\x07\x61\x63torId\x88\x01\x01\x42\x0b\n\t_actor_id\"(\n&UnregisterActorRemindersByTypeResponseBo\n\nio.dapr.v1B\x10\x44\x61prActorsProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"dapr/proto/runtime/v1/actors.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a!dapr/proto/common/v1/common.proto\"\xbb\x01\n\x19RegisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61llback\x18\x06 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x07 \x01(\x0c\x12\x0b\n\x03ttl\x18\x08 \x01(\t\"e\n\x1bUnregisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"\xba\x02\n\x1cRegisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12\x0b\n\x03ttl\x18\x07 \x01(\t\x12\x16\n\toverwrite\x18\x08 \x01(\x08H\x00\x88\x01\x01\x12S\n\x0e\x66\x61ilure_policy\x18\t \x01(\x0b\x32&.dapr.proto.common.v1.JobFailurePolicyH\x01R\x0e\x66\x61ilure_policy\x88\x01\x01\x42\x0c\n\n_overwriteB\x11\n\x0f_failure_policy\"h\n\x1eUnregisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"]\n\x14GetActorStateRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0b\n\x03key\x18\x03 \x01(\t\"\xa4\x01\n\x15GetActorStateResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12L\n\x08metadata\x18\x02 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetActorStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xac\x01\n#ExecuteActorStateTransactionRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12K\n\noperations\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.TransactionalActorStateOperation\"\xf5\x01\n TransactionalActorStateOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12#\n\x05value\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any\x12W\n\x08metadata\x18\x04 \x03(\x0b\x32\x45.dapr.proto.runtime.v1.TransactionalActorStateOperation.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xe8\x01\n\x12InvokeActorRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12I\n\x08metadata\x18\x05 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.InvokeActorRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\x13InvokeActorResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"a\n\x17GetActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torID\x12\x0c\n\x04name\x18\x03 \x01(\t\"\xdf\x01\n\x18GetActorReminderResponse\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torID\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x00R\x07\x64ueTime\x88\x01\x01\x12\x13\n\x06period\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x10\n\x03ttl\x18\x07 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_due_timeB\t\n\x07_periodB\x06\n\x04_ttl\"g\n\x19ListActorRemindersRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x1e\n\x08\x61\x63tor_id\x18\x02 \x01(\tH\x00R\x07\x61\x63torId\x88\x01\x01\x42\x0b\n\t_actor_id\"Z\n\x1aListActorRemindersResponse\x12<\n\treminders\x18\x01 \x03(\x0b\x32).dapr.proto.runtime.v1.NamedActorReminder\"Z\n\x12NamedActorReminder\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\x08reminder\x18\x02 \x01(\x0b\x32$.dapr.proto.runtime.v1.ActorReminder\"\xd4\x01\n\rActorReminder\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torID\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x00R\x07\x64ueTime\x88\x01\x01\x12\x13\n\x06period\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x10\n\x03ttl\x18\x07 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_due_timeB\t\n\x07_periodB\x06\n\x04_ttl\"s\n%UnregisterActorRemindersByTypeRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x1e\n\x08\x61\x63tor_id\x18\x02 \x01(\tH\x00R\x07\x61\x63torId\x88\x01\x01\x42\x0b\n\t_actor_id\"(\n&UnregisterActorRemindersByTypeResponse\"\x82\x05\n!SubscribeActorEventsRequestAlpha1\x12Z\n\x0finitial_request\x18\x01 \x01(\x0b\x32?.dapr.proto.runtime.v1.SubscribeActorEventsRequestInitialAlpha1H\x00\x12\x61\n\x0finvoke_response\x18\x02 \x01(\x0b\x32\x46.dapr.proto.runtime.v1.SubscribeActorEventsRequestInvokeResponseAlpha1H\x00\x12\x65\n\x11reminder_response\x18\x03 \x01(\x0b\x32H.dapr.proto.runtime.v1.SubscribeActorEventsRequestReminderResponseAlpha1H\x00\x12\x62\n\x0etimer_response\x18\x04 \x01(\x0b\x32H.dapr.proto.runtime.v1.SubscribeActorEventsRequestReminderResponseAlpha1H\x00\x12i\n\x13\x64\x65\x61\x63tivate_response\x18\x05 \x01(\x0b\x32J.dapr.proto.runtime.v1.SubscribeActorEventsRequestDeactivateResponseAlpha1H\x00\x12X\n\x0erequest_failed\x18\x06 \x01(\x0b\x32>.dapr.proto.runtime.v1.SubscribeActorEventsRequestFailedAlpha1H\x00\x42\x0e\n\x0crequest_type\"\xcd\x03\n(SubscribeActorEventsRequestInitialAlpha1\x12\x10\n\x08\x65ntities\x18\x01 \x03(\t\x12:\n\x12\x61\x63tor_idle_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x12\x42\n\x1a\x64rain_ongoing_call_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x01\x88\x01\x01\x12$\n\x17\x64rain_rebalanced_actors\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x45\n\nreentrancy\x18\x05 \x01(\x0b\x32,.dapr.proto.runtime.v1.ActorReentrancyConfigH\x03\x88\x01\x01\x12\x41\n\x0f\x65ntities_config\x18\x06 \x03(\x0b\x32(.dapr.proto.runtime.v1.ActorEntityConfigB\x15\n\x13_actor_idle_timeoutB\x1d\n\x1b_drain_ongoing_call_timeoutB\x1a\n\x18_drain_rebalanced_actorsB\r\n\x0b_reentrancy\"\xf3\x01\n/SubscribeActorEventsRequestInvokeResponseAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x66\n\x08metadata\x18\x03 \x03(\x0b\x32T.dapr.proto.runtime.v1.SubscribeActorEventsRequestInvokeResponseAlpha1.MetadataEntry\x12\r\n\x05\x65rror\x18\x04 \x01(\x08\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"O\n1SubscribeActorEventsRequestReminderResponseAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06\x63\x61ncel\x18\x02 \x01(\x08\"A\n3SubscribeActorEventsRequestDeactivateResponseAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\"T\n\'SubscribeActorEventsRequestFailedAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04\x63ode\x18\x02 \x01(\r\x12\x0f\n\x07message\x18\x03 \x01(\t\"\xa5\x04\n\"SubscribeActorEventsResponseAlpha1\x12\\\n\x10initial_response\x18\x01 \x01(\x0b\x32@.dapr.proto.runtime.v1.SubscribeActorEventsResponseInitialAlpha1H\x00\x12`\n\x0einvoke_request\x18\x02 \x01(\x0b\x32\x46.dapr.proto.runtime.v1.SubscribeActorEventsResponseInvokeRequestAlpha1H\x00\x12\x64\n\x10reminder_request\x18\x03 \x01(\x0b\x32H.dapr.proto.runtime.v1.SubscribeActorEventsResponseReminderRequestAlpha1H\x00\x12^\n\rtimer_request\x18\x04 \x01(\x0b\x32\x45.dapr.proto.runtime.v1.SubscribeActorEventsResponseTimerRequestAlpha1H\x00\x12h\n\x12\x64\x65\x61\x63tivate_request\x18\x05 \x01(\x0b\x32J.dapr.proto.runtime.v1.SubscribeActorEventsResponseDeactivateRequestAlpha1H\x00\x42\x0f\n\rresponse_type\"+\n)SubscribeActorEventsResponseInitialAlpha1\"\x9a\x02\n/SubscribeActorEventsResponseInvokeRequestAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nactor_type\x18\x02 \x01(\t\x12\x10\n\x08\x61\x63tor_id\x18\x03 \x01(\t\x12\x0e\n\x06method\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\x12\x66\n\x08metadata\x18\x06 \x03(\x0b\x32T.dapr.proto.runtime.v1.SubscribeActorEventsResponseInvokeRequestAlpha1.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb9\x01\n1SubscribeActorEventsResponseReminderRequestAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nactor_type\x18\x02 \x01(\t\x12\x10\n\x08\x61\x63tor_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x10\n\x08\x64ue_time\x18\x05 \x01(\t\x12\x0e\n\x06period\x18\x06 \x01(\t\x12\"\n\x04\x64\x61ta\x18\x07 \x01(\x0b\x32\x14.google.protobuf.Any\"\xc8\x01\n.SubscribeActorEventsResponseTimerRequestAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nactor_type\x18\x02 \x01(\t\x12\x10\n\x08\x61\x63tor_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x10\n\x08\x64ue_time\x18\x05 \x01(\t\x12\x0e\n\x06period\x18\x06 \x01(\t\x12\x10\n\x08\x63\x61llback\x18\x07 \x01(\t\x12\"\n\x04\x64\x61ta\x18\x08 \x01(\x0b\x32\x14.google.protobuf.Any\"g\n3SubscribeActorEventsResponseDeactivateRequestAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nactor_type\x18\x02 \x01(\t\x12\x10\n\x08\x61\x63tor_id\x18\x03 \x01(\t\"\xf3\x02\n\x11\x41\x63torEntityConfig\x12\x10\n\x08\x65ntities\x18\x01 \x03(\t\x12:\n\x12\x61\x63tor_idle_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x12\x42\n\x1a\x64rain_ongoing_call_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x01\x88\x01\x01\x12$\n\x17\x64rain_rebalanced_actors\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x45\n\nreentrancy\x18\x05 \x01(\x0b\x32,.dapr.proto.runtime.v1.ActorReentrancyConfigH\x03\x88\x01\x01\x42\x15\n\x13_actor_idle_timeoutB\x1d\n\x1b_drain_ongoing_call_timeoutB\x1a\n\x18_drain_rebalanced_actorsB\r\n\x0b_reentrancy\"Z\n\x15\x41\x63torReentrancyConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1c\n\x0fmax_stack_depth\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\x12\n\x10_max_stack_depthBo\n\nio.dapr.v1B\x10\x44\x61prActorsProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -40,46 +41,82 @@ _globals['_TRANSACTIONALACTORSTATEOPERATION_METADATAENTRY']._serialized_options = b'8\001' _globals['_INVOKEACTORREQUEST_METADATAENTRY']._loaded_options = None _globals['_INVOKEACTORREQUEST_METADATAENTRY']._serialized_options = b'8\001' - _globals['_REGISTERACTORTIMERREQUEST']._serialized_start=124 - _globals['_REGISTERACTORTIMERREQUEST']._serialized_end=311 - _globals['_UNREGISTERACTORTIMERREQUEST']._serialized_start=313 - _globals['_UNREGISTERACTORTIMERREQUEST']._serialized_end=414 - _globals['_REGISTERACTORREMINDERREQUEST']._serialized_start=417 - _globals['_REGISTERACTORREMINDERREQUEST']._serialized_end=731 - _globals['_UNREGISTERACTORREMINDERREQUEST']._serialized_start=733 - _globals['_UNREGISTERACTORREMINDERREQUEST']._serialized_end=837 - _globals['_GETACTORSTATEREQUEST']._serialized_start=839 - _globals['_GETACTORSTATEREQUEST']._serialized_end=932 - _globals['_GETACTORSTATERESPONSE']._serialized_start=935 - _globals['_GETACTORSTATERESPONSE']._serialized_end=1099 - _globals['_GETACTORSTATERESPONSE_METADATAENTRY']._serialized_start=1052 - _globals['_GETACTORSTATERESPONSE_METADATAENTRY']._serialized_end=1099 - _globals['_EXECUTEACTORSTATETRANSACTIONREQUEST']._serialized_start=1102 - _globals['_EXECUTEACTORSTATETRANSACTIONREQUEST']._serialized_end=1274 - _globals['_TRANSACTIONALACTORSTATEOPERATION']._serialized_start=1277 - _globals['_TRANSACTIONALACTORSTATEOPERATION']._serialized_end=1522 - _globals['_TRANSACTIONALACTORSTATEOPERATION_METADATAENTRY']._serialized_start=1052 - _globals['_TRANSACTIONALACTORSTATEOPERATION_METADATAENTRY']._serialized_end=1099 - _globals['_INVOKEACTORREQUEST']._serialized_start=1525 - _globals['_INVOKEACTORREQUEST']._serialized_end=1757 - _globals['_INVOKEACTORREQUEST_METADATAENTRY']._serialized_start=1052 - _globals['_INVOKEACTORREQUEST_METADATAENTRY']._serialized_end=1099 - _globals['_INVOKEACTORRESPONSE']._serialized_start=1759 - _globals['_INVOKEACTORRESPONSE']._serialized_end=1794 - _globals['_GETACTORREMINDERREQUEST']._serialized_start=1796 - _globals['_GETACTORREMINDERREQUEST']._serialized_end=1893 - _globals['_GETACTORREMINDERRESPONSE']._serialized_start=1896 - _globals['_GETACTORREMINDERRESPONSE']._serialized_end=2119 - _globals['_LISTACTORREMINDERSREQUEST']._serialized_start=2121 - _globals['_LISTACTORREMINDERSREQUEST']._serialized_end=2224 - _globals['_LISTACTORREMINDERSRESPONSE']._serialized_start=2226 - _globals['_LISTACTORREMINDERSRESPONSE']._serialized_end=2316 - _globals['_NAMEDACTORREMINDER']._serialized_start=2318 - _globals['_NAMEDACTORREMINDER']._serialized_end=2408 - _globals['_ACTORREMINDER']._serialized_start=2411 - _globals['_ACTORREMINDER']._serialized_end=2623 - _globals['_UNREGISTERACTORREMINDERSBYTYPEREQUEST']._serialized_start=2625 - _globals['_UNREGISTERACTORREMINDERSBYTYPEREQUEST']._serialized_end=2740 - _globals['_UNREGISTERACTORREMINDERSBYTYPERESPONSE']._serialized_start=2742 - _globals['_UNREGISTERACTORREMINDERSBYTYPERESPONSE']._serialized_end=2782 + _globals['_SUBSCRIBEACTOREVENTSREQUESTINVOKERESPONSEALPHA1_METADATAENTRY']._loaded_options = None + _globals['_SUBSCRIBEACTOREVENTSREQUESTINVOKERESPONSEALPHA1_METADATAENTRY']._serialized_options = b'8\001' + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINVOKEREQUESTALPHA1_METADATAENTRY']._loaded_options = None + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINVOKEREQUESTALPHA1_METADATAENTRY']._serialized_options = b'8\001' + _globals['_REGISTERACTORTIMERREQUEST']._serialized_start=156 + _globals['_REGISTERACTORTIMERREQUEST']._serialized_end=343 + _globals['_UNREGISTERACTORTIMERREQUEST']._serialized_start=345 + _globals['_UNREGISTERACTORTIMERREQUEST']._serialized_end=446 + _globals['_REGISTERACTORREMINDERREQUEST']._serialized_start=449 + _globals['_REGISTERACTORREMINDERREQUEST']._serialized_end=763 + _globals['_UNREGISTERACTORREMINDERREQUEST']._serialized_start=765 + _globals['_UNREGISTERACTORREMINDERREQUEST']._serialized_end=869 + _globals['_GETACTORSTATEREQUEST']._serialized_start=871 + _globals['_GETACTORSTATEREQUEST']._serialized_end=964 + _globals['_GETACTORSTATERESPONSE']._serialized_start=967 + _globals['_GETACTORSTATERESPONSE']._serialized_end=1131 + _globals['_GETACTORSTATERESPONSE_METADATAENTRY']._serialized_start=1084 + _globals['_GETACTORSTATERESPONSE_METADATAENTRY']._serialized_end=1131 + _globals['_EXECUTEACTORSTATETRANSACTIONREQUEST']._serialized_start=1134 + _globals['_EXECUTEACTORSTATETRANSACTIONREQUEST']._serialized_end=1306 + _globals['_TRANSACTIONALACTORSTATEOPERATION']._serialized_start=1309 + _globals['_TRANSACTIONALACTORSTATEOPERATION']._serialized_end=1554 + _globals['_TRANSACTIONALACTORSTATEOPERATION_METADATAENTRY']._serialized_start=1084 + _globals['_TRANSACTIONALACTORSTATEOPERATION_METADATAENTRY']._serialized_end=1131 + _globals['_INVOKEACTORREQUEST']._serialized_start=1557 + _globals['_INVOKEACTORREQUEST']._serialized_end=1789 + _globals['_INVOKEACTORREQUEST_METADATAENTRY']._serialized_start=1084 + _globals['_INVOKEACTORREQUEST_METADATAENTRY']._serialized_end=1131 + _globals['_INVOKEACTORRESPONSE']._serialized_start=1791 + _globals['_INVOKEACTORRESPONSE']._serialized_end=1826 + _globals['_GETACTORREMINDERREQUEST']._serialized_start=1828 + _globals['_GETACTORREMINDERREQUEST']._serialized_end=1925 + _globals['_GETACTORREMINDERRESPONSE']._serialized_start=1928 + _globals['_GETACTORREMINDERRESPONSE']._serialized_end=2151 + _globals['_LISTACTORREMINDERSREQUEST']._serialized_start=2153 + _globals['_LISTACTORREMINDERSREQUEST']._serialized_end=2256 + _globals['_LISTACTORREMINDERSRESPONSE']._serialized_start=2258 + _globals['_LISTACTORREMINDERSRESPONSE']._serialized_end=2348 + _globals['_NAMEDACTORREMINDER']._serialized_start=2350 + _globals['_NAMEDACTORREMINDER']._serialized_end=2440 + _globals['_ACTORREMINDER']._serialized_start=2443 + _globals['_ACTORREMINDER']._serialized_end=2655 + _globals['_UNREGISTERACTORREMINDERSBYTYPEREQUEST']._serialized_start=2657 + _globals['_UNREGISTERACTORREMINDERSBYTYPEREQUEST']._serialized_end=2772 + _globals['_UNREGISTERACTORREMINDERSBYTYPERESPONSE']._serialized_start=2774 + _globals['_UNREGISTERACTORREMINDERSBYTYPERESPONSE']._serialized_end=2814 + _globals['_SUBSCRIBEACTOREVENTSREQUESTALPHA1']._serialized_start=2817 + _globals['_SUBSCRIBEACTOREVENTSREQUESTALPHA1']._serialized_end=3459 + _globals['_SUBSCRIBEACTOREVENTSREQUESTINITIALALPHA1']._serialized_start=3462 + _globals['_SUBSCRIBEACTOREVENTSREQUESTINITIALALPHA1']._serialized_end=3923 + _globals['_SUBSCRIBEACTOREVENTSREQUESTINVOKERESPONSEALPHA1']._serialized_start=3926 + _globals['_SUBSCRIBEACTOREVENTSREQUESTINVOKERESPONSEALPHA1']._serialized_end=4169 + _globals['_SUBSCRIBEACTOREVENTSREQUESTINVOKERESPONSEALPHA1_METADATAENTRY']._serialized_start=1084 + _globals['_SUBSCRIBEACTOREVENTSREQUESTINVOKERESPONSEALPHA1_METADATAENTRY']._serialized_end=1131 + _globals['_SUBSCRIBEACTOREVENTSREQUESTREMINDERRESPONSEALPHA1']._serialized_start=4171 + _globals['_SUBSCRIBEACTOREVENTSREQUESTREMINDERRESPONSEALPHA1']._serialized_end=4250 + _globals['_SUBSCRIBEACTOREVENTSREQUESTDEACTIVATERESPONSEALPHA1']._serialized_start=4252 + _globals['_SUBSCRIBEACTOREVENTSREQUESTDEACTIVATERESPONSEALPHA1']._serialized_end=4317 + _globals['_SUBSCRIBEACTOREVENTSREQUESTFAILEDALPHA1']._serialized_start=4319 + _globals['_SUBSCRIBEACTOREVENTSREQUESTFAILEDALPHA1']._serialized_end=4403 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEALPHA1']._serialized_start=4406 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEALPHA1']._serialized_end=4955 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINITIALALPHA1']._serialized_start=4957 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINITIALALPHA1']._serialized_end=5000 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINVOKEREQUESTALPHA1']._serialized_start=5003 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINVOKEREQUESTALPHA1']._serialized_end=5285 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINVOKEREQUESTALPHA1_METADATAENTRY']._serialized_start=1084 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEINVOKEREQUESTALPHA1_METADATAENTRY']._serialized_end=1131 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEREMINDERREQUESTALPHA1']._serialized_start=5288 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEREMINDERREQUESTALPHA1']._serialized_end=5473 + _globals['_SUBSCRIBEACTOREVENTSRESPONSETIMERREQUESTALPHA1']._serialized_start=5476 + _globals['_SUBSCRIBEACTOREVENTSRESPONSETIMERREQUESTALPHA1']._serialized_end=5676 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEDEACTIVATEREQUESTALPHA1']._serialized_start=5678 + _globals['_SUBSCRIBEACTOREVENTSRESPONSEDEACTIVATEREQUESTALPHA1']._serialized_end=5781 + _globals['_ACTORENTITYCONFIG']._serialized_start=5784 + _globals['_ACTORENTITYCONFIG']._serialized_end=6155 + _globals['_ACTORREENTRANCYCONFIG']._serialized_start=6157 + _globals['_ACTORREENTRANCYCONFIG']._serialized_end=6247 # @@protoc_insertion_point(module_scope) diff --git a/dapr/proto/runtime/v1/actors_pb2.pyi b/dapr/proto/runtime/v1/actors_pb2.pyi index 735def561..4e4785dcc 100644 --- a/dapr/proto/runtime/v1/actors_pb2.pyi +++ b/dapr/proto/runtime/v1/actors_pb2.pyi @@ -18,6 +18,7 @@ from collections import abc as _abc from dapr.proto.common.v1 import common_pb2 as _common_pb2 from google.protobuf import any_pb2 as _any_pb2 from google.protobuf import descriptor as _descriptor +from google.protobuf import duration_pb2 as _duration_pb2 from google.protobuf import message as _message from google.protobuf.internal import containers as _containers import builtins as _builtins @@ -608,3 +609,585 @@ class UnregisterActorRemindersByTypeResponse(_message.Message): ) -> None: ... Global___UnregisterActorRemindersByTypeResponse: _TypeAlias = UnregisterActorRemindersByTypeResponse # noqa: Y015 + +@_typing.final +class SubscribeActorEventsRequestAlpha1(_message.Message): + """---------------------------------------------------------------------------- + Actor host streaming protocol (SubscribeActorEventsAlpha1 on the Dapr + service). The app is the gRPC client: it dials daprd, opens the stream, + sends an initial registration message, and then exchanges callback + request/response pairs correlated by id. Apps using this protocol do not + need to expose an HTTP or gRPC server port. + + Naming convention: every oneof variant type is prefixed with its parent + message name (SubscribeActorEventsRequestAlpha1 / + SubscribeActorEventsResponseAlpha1) so the wire types are self-describing + and can't collide with unrelated messages. + ---------------------------------------------------------------------------- + + SubscribeActorEventsRequestAlpha1 is a message flowing from the app to + daprd on the actor event stream. The first message must be the initial + request (registering the actor host); every subsequent message must be a + response correlated by id to a request previously emitted by daprd. + """ + + DESCRIPTOR: _descriptor.Descriptor + + INITIAL_REQUEST_FIELD_NUMBER: _builtins.int + INVOKE_RESPONSE_FIELD_NUMBER: _builtins.int + REMINDER_RESPONSE_FIELD_NUMBER: _builtins.int + TIMER_RESPONSE_FIELD_NUMBER: _builtins.int + DEACTIVATE_RESPONSE_FIELD_NUMBER: _builtins.int + REQUEST_FAILED_FIELD_NUMBER: _builtins.int + @_builtins.property + def initial_request(self) -> Global___SubscribeActorEventsRequestInitialAlpha1: ... + @_builtins.property + def invoke_response(self) -> Global___SubscribeActorEventsRequestInvokeResponseAlpha1: ... + @_builtins.property + def reminder_response(self) -> Global___SubscribeActorEventsRequestReminderResponseAlpha1: ... + @_builtins.property + def timer_response(self) -> Global___SubscribeActorEventsRequestReminderResponseAlpha1: ... + @_builtins.property + def deactivate_response(self) -> Global___SubscribeActorEventsRequestDeactivateResponseAlpha1: ... + @_builtins.property + def request_failed(self) -> Global___SubscribeActorEventsRequestFailedAlpha1: + """request_failed is sent in place of a typed response when the app + cannot process the request (e.g. the actor method does not exist). + The id correlates back to the originating request; the code is a gRPC + status code (see google.golang.org/grpc/codes) and lets daprd map + codes.NotFound to a permanent, non-retryable failure. + """ + + def __init__( + self, + *, + initial_request: Global___SubscribeActorEventsRequestInitialAlpha1 | None = ..., + invoke_response: Global___SubscribeActorEventsRequestInvokeResponseAlpha1 | None = ..., + reminder_response: Global___SubscribeActorEventsRequestReminderResponseAlpha1 | None = ..., + timer_response: Global___SubscribeActorEventsRequestReminderResponseAlpha1 | None = ..., + deactivate_response: Global___SubscribeActorEventsRequestDeactivateResponseAlpha1 | None = ..., + request_failed: Global___SubscribeActorEventsRequestFailedAlpha1 | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["deactivate_response", b"deactivate_response", "initial_request", b"initial_request", "invoke_response", b"invoke_response", "reminder_response", b"reminder_response", "request_failed", b"request_failed", "request_type", b"request_type", "timer_response", b"timer_response"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["deactivate_response", b"deactivate_response", "initial_request", b"initial_request", "invoke_response", b"invoke_response", "reminder_response", b"reminder_response", "request_failed", b"request_failed", "request_type", b"request_type", "timer_response", b"timer_response"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_request_type: _TypeAlias = _typing.Literal["initial_request", "invoke_response", "reminder_response", "timer_response", "deactivate_response", "request_failed"] # noqa: Y015 + _WhichOneofArgType_request_type: _TypeAlias = _typing.Literal["request_type", b"request_type"] # noqa: Y015 + def WhichOneof(self, oneof_group: _WhichOneofArgType_request_type) -> _WhichOneofReturnType_request_type | None: ... + +Global___SubscribeActorEventsRequestAlpha1: _TypeAlias = SubscribeActorEventsRequestAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsRequestInitialAlpha1(_message.Message): + """SubscribeActorEventsRequestInitialAlpha1 is the first message the app + sends when opening the stream. It advertises the actor types the app + hosts and the runtime configuration that applies to them. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ENTITIES_FIELD_NUMBER: _builtins.int + ACTOR_IDLE_TIMEOUT_FIELD_NUMBER: _builtins.int + DRAIN_ONGOING_CALL_TIMEOUT_FIELD_NUMBER: _builtins.int + DRAIN_REBALANCED_ACTORS_FIELD_NUMBER: _builtins.int + REENTRANCY_FIELD_NUMBER: _builtins.int + ENTITIES_CONFIG_FIELD_NUMBER: _builtins.int + drain_rebalanced_actors: _builtins.bool + """drain_rebalanced_actors, when true, instructs Dapr to drain invocations + from a rebalanced actor rather than aborting them. + """ + @_builtins.property + def entities(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """entities is the list of actor types this app hosts.""" + + @_builtins.property + def actor_idle_timeout(self) -> _duration_pb2.Duration: + """actor_idle_timeout is the default idle timeout for all actor types. + Unset means use Dapr's default. + """ + + @_builtins.property + def drain_ongoing_call_timeout(self) -> _duration_pb2.Duration: + """drain_ongoing_call_timeout is the duration Dapr waits for ongoing + invocations to finish when an actor is rebalanced. Unset means use + Dapr's default. + """ + + @_builtins.property + def reentrancy(self) -> Global___ActorReentrancyConfig: + """reentrancy is the default reentrancy configuration applied to all + actor types. + """ + + @_builtins.property + def entities_config(self) -> _containers.RepeatedCompositeFieldContainer[Global___ActorEntityConfig]: + """entities_config applies per-actor-type overrides on top of the + defaults above. + """ + + def __init__( + self, + *, + entities: _abc.Iterable[_builtins.str] | None = ..., + actor_idle_timeout: _duration_pb2.Duration | None = ..., + drain_ongoing_call_timeout: _duration_pb2.Duration | None = ..., + drain_rebalanced_actors: _builtins.bool | None = ..., + reentrancy: Global___ActorReentrancyConfig | None = ..., + entities_config: _abc.Iterable[Global___ActorEntityConfig] | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["_actor_idle_timeout", b"_actor_idle_timeout", "_drain_ongoing_call_timeout", b"_drain_ongoing_call_timeout", "_drain_rebalanced_actors", b"_drain_rebalanced_actors", "_reentrancy", b"_reentrancy", "actor_idle_timeout", b"actor_idle_timeout", "drain_ongoing_call_timeout", b"drain_ongoing_call_timeout", "drain_rebalanced_actors", b"drain_rebalanced_actors", "reentrancy", b"reentrancy"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["_actor_idle_timeout", b"_actor_idle_timeout", "_drain_ongoing_call_timeout", b"_drain_ongoing_call_timeout", "_drain_rebalanced_actors", b"_drain_rebalanced_actors", "_reentrancy", b"_reentrancy", "actor_idle_timeout", b"actor_idle_timeout", "drain_ongoing_call_timeout", b"drain_ongoing_call_timeout", "drain_rebalanced_actors", b"drain_rebalanced_actors", "entities", b"entities", "entities_config", b"entities_config", "reentrancy", b"reentrancy"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__actor_idle_timeout: _TypeAlias = _typing.Literal["actor_idle_timeout"] # noqa: Y015 + _WhichOneofArgType__actor_idle_timeout: _TypeAlias = _typing.Literal["_actor_idle_timeout", b"_actor_idle_timeout"] # noqa: Y015 + _WhichOneofReturnType__drain_ongoing_call_timeout: _TypeAlias = _typing.Literal["drain_ongoing_call_timeout"] # noqa: Y015 + _WhichOneofArgType__drain_ongoing_call_timeout: _TypeAlias = _typing.Literal["_drain_ongoing_call_timeout", b"_drain_ongoing_call_timeout"] # noqa: Y015 + _WhichOneofReturnType__drain_rebalanced_actors: _TypeAlias = _typing.Literal["drain_rebalanced_actors"] # noqa: Y015 + _WhichOneofArgType__drain_rebalanced_actors: _TypeAlias = _typing.Literal["_drain_rebalanced_actors", b"_drain_rebalanced_actors"] # noqa: Y015 + _WhichOneofReturnType__reentrancy: _TypeAlias = _typing.Literal["reentrancy"] # noqa: Y015 + _WhichOneofArgType__reentrancy: _TypeAlias = _typing.Literal["_reentrancy", b"_reentrancy"] # noqa: Y015 + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__actor_idle_timeout) -> _WhichOneofReturnType__actor_idle_timeout | None: ... + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__drain_ongoing_call_timeout) -> _WhichOneofReturnType__drain_ongoing_call_timeout | None: ... + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__drain_rebalanced_actors) -> _WhichOneofReturnType__drain_rebalanced_actors | None: ... + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__reentrancy) -> _WhichOneofReturnType__reentrancy | None: ... + +Global___SubscribeActorEventsRequestInitialAlpha1: _TypeAlias = SubscribeActorEventsRequestInitialAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsRequestInvokeResponseAlpha1(_message.Message): + """SubscribeActorEventsRequestInvokeResponseAlpha1 is the app's response to + a SubscribeActorEventsResponseInvokeRequestAlpha1 (actor method call). + """ + + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class MetadataEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + def __init__( + self, + *, + key: _builtins.str = ..., + value: _builtins.str = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + + ID_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int + ERROR_FIELD_NUMBER: _builtins.int + id: _builtins.str + data: _builtins.bytes + error: _builtins.bool + """error, when true, signals that data is an application-defined error + payload returned from the actor method. Dapr passes the payload + through to the original caller verbatim. + """ + @_builtins.property + def metadata(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """metadata carries response-level headers, including "content-type".""" + + def __init__( + self, + *, + id: _builtins.str = ..., + data: _builtins.bytes = ..., + metadata: _abc.Mapping[_builtins.str, _builtins.str] | None = ..., + error: _builtins.bool = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["data", b"data", "error", b"error", "id", b"id", "metadata", b"metadata"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsRequestInvokeResponseAlpha1: _TypeAlias = SubscribeActorEventsRequestInvokeResponseAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsRequestReminderResponseAlpha1(_message.Message): + """SubscribeActorEventsRequestReminderResponseAlpha1 is the app's response + to both reminder and timer callbacks. The cancel flag signals that the + reminder or timer should not fire again. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ID_FIELD_NUMBER: _builtins.int + CANCEL_FIELD_NUMBER: _builtins.int + id: _builtins.str + cancel: _builtins.bool + def __init__( + self, + *, + id: _builtins.str = ..., + cancel: _builtins.bool = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["cancel", b"cancel", "id", b"id"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsRequestReminderResponseAlpha1: _TypeAlias = SubscribeActorEventsRequestReminderResponseAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsRequestDeactivateResponseAlpha1(_message.Message): + """SubscribeActorEventsRequestDeactivateResponseAlpha1 is the app's ack + for a SubscribeActorEventsResponseDeactivateRequestAlpha1. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ID_FIELD_NUMBER: _builtins.int + id: _builtins.str + def __init__( + self, + *, + id: _builtins.str = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["id", b"id"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsRequestDeactivateResponseAlpha1: _TypeAlias = SubscribeActorEventsRequestDeactivateResponseAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsRequestFailedAlpha1(_message.Message): + """SubscribeActorEventsRequestFailedAlpha1 signals an app-side failure for + a previously received request. The id correlates with the originating + request, the code is a gRPC status code. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ID_FIELD_NUMBER: _builtins.int + CODE_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + id: _builtins.str + code: _builtins.int + message: _builtins.str + def __init__( + self, + *, + id: _builtins.str = ..., + code: _builtins.int = ..., + message: _builtins.str = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["code", b"code", "id", b"id", "message", b"message"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsRequestFailedAlpha1: _TypeAlias = SubscribeActorEventsRequestFailedAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsResponseAlpha1(_message.Message): + """SubscribeActorEventsResponseAlpha1 is a message flowing from daprd to + the app on the actor event stream. The first message is the initial + response acknowledging registration; every subsequent message is a + callback request with a unique id the app must echo on its response. + """ + + DESCRIPTOR: _descriptor.Descriptor + + INITIAL_RESPONSE_FIELD_NUMBER: _builtins.int + INVOKE_REQUEST_FIELD_NUMBER: _builtins.int + REMINDER_REQUEST_FIELD_NUMBER: _builtins.int + TIMER_REQUEST_FIELD_NUMBER: _builtins.int + DEACTIVATE_REQUEST_FIELD_NUMBER: _builtins.int + @_builtins.property + def initial_response(self) -> Global___SubscribeActorEventsResponseInitialAlpha1: ... + @_builtins.property + def invoke_request(self) -> Global___SubscribeActorEventsResponseInvokeRequestAlpha1: ... + @_builtins.property + def reminder_request(self) -> Global___SubscribeActorEventsResponseReminderRequestAlpha1: ... + @_builtins.property + def timer_request(self) -> Global___SubscribeActorEventsResponseTimerRequestAlpha1: ... + @_builtins.property + def deactivate_request(self) -> Global___SubscribeActorEventsResponseDeactivateRequestAlpha1: ... + def __init__( + self, + *, + initial_response: Global___SubscribeActorEventsResponseInitialAlpha1 | None = ..., + invoke_request: Global___SubscribeActorEventsResponseInvokeRequestAlpha1 | None = ..., + reminder_request: Global___SubscribeActorEventsResponseReminderRequestAlpha1 | None = ..., + timer_request: Global___SubscribeActorEventsResponseTimerRequestAlpha1 | None = ..., + deactivate_request: Global___SubscribeActorEventsResponseDeactivateRequestAlpha1 | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["deactivate_request", b"deactivate_request", "initial_response", b"initial_response", "invoke_request", b"invoke_request", "reminder_request", b"reminder_request", "response_type", b"response_type", "timer_request", b"timer_request"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["deactivate_request", b"deactivate_request", "initial_response", b"initial_response", "invoke_request", b"invoke_request", "reminder_request", b"reminder_request", "response_type", b"response_type", "timer_request", b"timer_request"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType_response_type: _TypeAlias = _typing.Literal["initial_response", "invoke_request", "reminder_request", "timer_request", "deactivate_request"] # noqa: Y015 + _WhichOneofArgType_response_type: _TypeAlias = _typing.Literal["response_type", b"response_type"] # noqa: Y015 + def WhichOneof(self, oneof_group: _WhichOneofArgType_response_type) -> _WhichOneofReturnType_response_type | None: ... + +Global___SubscribeActorEventsResponseAlpha1: _TypeAlias = SubscribeActorEventsResponseAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsResponseInitialAlpha1(_message.Message): + """SubscribeActorEventsResponseInitialAlpha1 acks the app's registration + message. An empty body indicates success; failures are surfaced as a + gRPC error on the stream itself. + """ + + DESCRIPTOR: _descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___SubscribeActorEventsResponseInitialAlpha1: _TypeAlias = SubscribeActorEventsResponseInitialAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsResponseInvokeRequestAlpha1(_message.Message): + """SubscribeActorEventsResponseInvokeRequestAlpha1 is the callback payload + daprd sends when an actor method is invoked. The app echoes id on its + SubscribeActorEventsRequestInvokeResponseAlpha1. + """ + + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class MetadataEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.str + def __init__( + self, + *, + key: _builtins.str = ..., + value: _builtins.str = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + + ID_FIELD_NUMBER: _builtins.int + ACTOR_TYPE_FIELD_NUMBER: _builtins.int + ACTOR_ID_FIELD_NUMBER: _builtins.int + METHOD_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + METADATA_FIELD_NUMBER: _builtins.int + id: _builtins.str + actor_type: _builtins.str + actor_id: _builtins.str + method: _builtins.str + data: _builtins.bytes + @_builtins.property + def metadata(self) -> _containers.ScalarMap[_builtins.str, _builtins.str]: + """metadata carries request-level headers from the original caller, + including "content-type" and "Dapr-Reentrancy-Id" when reentrancy is + enabled for the actor type. + """ + + def __init__( + self, + *, + id: _builtins.str = ..., + actor_type: _builtins.str = ..., + actor_id: _builtins.str = ..., + method: _builtins.str = ..., + data: _builtins.bytes = ..., + metadata: _abc.Mapping[_builtins.str, _builtins.str] | None = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "data", b"data", "id", b"id", "metadata", b"metadata", "method", b"method"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsResponseInvokeRequestAlpha1: _TypeAlias = SubscribeActorEventsResponseInvokeRequestAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsResponseReminderRequestAlpha1(_message.Message): + """SubscribeActorEventsResponseReminderRequestAlpha1 is the callback + payload daprd sends when an actor reminder fires. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ID_FIELD_NUMBER: _builtins.int + ACTOR_TYPE_FIELD_NUMBER: _builtins.int + ACTOR_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + DUE_TIME_FIELD_NUMBER: _builtins.int + PERIOD_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + id: _builtins.str + actor_type: _builtins.str + actor_id: _builtins.str + name: _builtins.str + due_time: _builtins.str + period: _builtins.str + @_builtins.property + def data(self) -> _any_pb2.Any: ... + def __init__( + self, + *, + id: _builtins.str = ..., + actor_type: _builtins.str = ..., + actor_id: _builtins.str = ..., + name: _builtins.str = ..., + due_time: _builtins.str = ..., + period: _builtins.str = ..., + data: _any_pb2.Any | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["data", b"data"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "data", b"data", "due_time", b"due_time", "id", b"id", "name", b"name", "period", b"period"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsResponseReminderRequestAlpha1: _TypeAlias = SubscribeActorEventsResponseReminderRequestAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsResponseTimerRequestAlpha1(_message.Message): + """SubscribeActorEventsResponseTimerRequestAlpha1 is the callback payload + daprd sends when an actor timer fires. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ID_FIELD_NUMBER: _builtins.int + ACTOR_TYPE_FIELD_NUMBER: _builtins.int + ACTOR_ID_FIELD_NUMBER: _builtins.int + NAME_FIELD_NUMBER: _builtins.int + DUE_TIME_FIELD_NUMBER: _builtins.int + PERIOD_FIELD_NUMBER: _builtins.int + CALLBACK_FIELD_NUMBER: _builtins.int + DATA_FIELD_NUMBER: _builtins.int + id: _builtins.str + actor_type: _builtins.str + actor_id: _builtins.str + name: _builtins.str + due_time: _builtins.str + period: _builtins.str + callback: _builtins.str + @_builtins.property + def data(self) -> _any_pb2.Any: ... + def __init__( + self, + *, + id: _builtins.str = ..., + actor_type: _builtins.str = ..., + actor_id: _builtins.str = ..., + name: _builtins.str = ..., + due_time: _builtins.str = ..., + period: _builtins.str = ..., + callback: _builtins.str = ..., + data: _any_pb2.Any | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["data", b"data"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "callback", b"callback", "data", b"data", "due_time", b"due_time", "id", b"id", "name", b"name", "period", b"period"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsResponseTimerRequestAlpha1: _TypeAlias = SubscribeActorEventsResponseTimerRequestAlpha1 # noqa: Y015 + +@_typing.final +class SubscribeActorEventsResponseDeactivateRequestAlpha1(_message.Message): + """SubscribeActorEventsResponseDeactivateRequestAlpha1 is the callback + payload daprd sends when an actor instance is being deactivated. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ID_FIELD_NUMBER: _builtins.int + ACTOR_TYPE_FIELD_NUMBER: _builtins.int + ACTOR_ID_FIELD_NUMBER: _builtins.int + id: _builtins.str + actor_type: _builtins.str + actor_id: _builtins.str + def __init__( + self, + *, + id: _builtins.str = ..., + actor_type: _builtins.str = ..., + actor_id: _builtins.str = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "id", b"id"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___SubscribeActorEventsResponseDeactivateRequestAlpha1: _TypeAlias = SubscribeActorEventsResponseDeactivateRequestAlpha1 # noqa: Y015 + +@_typing.final +class ActorEntityConfig(_message.Message): + """ActorEntityConfig overrides the default actor runtime configuration for + a specific set of entities. + """ + + DESCRIPTOR: _descriptor.Descriptor + + ENTITIES_FIELD_NUMBER: _builtins.int + ACTOR_IDLE_TIMEOUT_FIELD_NUMBER: _builtins.int + DRAIN_ONGOING_CALL_TIMEOUT_FIELD_NUMBER: _builtins.int + DRAIN_REBALANCED_ACTORS_FIELD_NUMBER: _builtins.int + REENTRANCY_FIELD_NUMBER: _builtins.int + drain_rebalanced_actors: _builtins.bool + @_builtins.property + def entities(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ... + @_builtins.property + def actor_idle_timeout(self) -> _duration_pb2.Duration: ... + @_builtins.property + def drain_ongoing_call_timeout(self) -> _duration_pb2.Duration: ... + @_builtins.property + def reentrancy(self) -> Global___ActorReentrancyConfig: ... + def __init__( + self, + *, + entities: _abc.Iterable[_builtins.str] | None = ..., + actor_idle_timeout: _duration_pb2.Duration | None = ..., + drain_ongoing_call_timeout: _duration_pb2.Duration | None = ..., + drain_rebalanced_actors: _builtins.bool | None = ..., + reentrancy: Global___ActorReentrancyConfig | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["_actor_idle_timeout", b"_actor_idle_timeout", "_drain_ongoing_call_timeout", b"_drain_ongoing_call_timeout", "_drain_rebalanced_actors", b"_drain_rebalanced_actors", "_reentrancy", b"_reentrancy", "actor_idle_timeout", b"actor_idle_timeout", "drain_ongoing_call_timeout", b"drain_ongoing_call_timeout", "drain_rebalanced_actors", b"drain_rebalanced_actors", "reentrancy", b"reentrancy"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["_actor_idle_timeout", b"_actor_idle_timeout", "_drain_ongoing_call_timeout", b"_drain_ongoing_call_timeout", "_drain_rebalanced_actors", b"_drain_rebalanced_actors", "_reentrancy", b"_reentrancy", "actor_idle_timeout", b"actor_idle_timeout", "drain_ongoing_call_timeout", b"drain_ongoing_call_timeout", "drain_rebalanced_actors", b"drain_rebalanced_actors", "entities", b"entities", "reentrancy", b"reentrancy"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__actor_idle_timeout: _TypeAlias = _typing.Literal["actor_idle_timeout"] # noqa: Y015 + _WhichOneofArgType__actor_idle_timeout: _TypeAlias = _typing.Literal["_actor_idle_timeout", b"_actor_idle_timeout"] # noqa: Y015 + _WhichOneofReturnType__drain_ongoing_call_timeout: _TypeAlias = _typing.Literal["drain_ongoing_call_timeout"] # noqa: Y015 + _WhichOneofArgType__drain_ongoing_call_timeout: _TypeAlias = _typing.Literal["_drain_ongoing_call_timeout", b"_drain_ongoing_call_timeout"] # noqa: Y015 + _WhichOneofReturnType__drain_rebalanced_actors: _TypeAlias = _typing.Literal["drain_rebalanced_actors"] # noqa: Y015 + _WhichOneofArgType__drain_rebalanced_actors: _TypeAlias = _typing.Literal["_drain_rebalanced_actors", b"_drain_rebalanced_actors"] # noqa: Y015 + _WhichOneofReturnType__reentrancy: _TypeAlias = _typing.Literal["reentrancy"] # noqa: Y015 + _WhichOneofArgType__reentrancy: _TypeAlias = _typing.Literal["_reentrancy", b"_reentrancy"] # noqa: Y015 + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__actor_idle_timeout) -> _WhichOneofReturnType__actor_idle_timeout | None: ... + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__drain_ongoing_call_timeout) -> _WhichOneofReturnType__drain_ongoing_call_timeout | None: ... + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__drain_rebalanced_actors) -> _WhichOneofReturnType__drain_rebalanced_actors | None: ... + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__reentrancy) -> _WhichOneofReturnType__reentrancy | None: ... + +Global___ActorEntityConfig: _TypeAlias = ActorEntityConfig # noqa: Y015 + +@_typing.final +class ActorReentrancyConfig(_message.Message): + """ActorReentrancyConfig configures actor reentrancy behavior.""" + + DESCRIPTOR: _descriptor.Descriptor + + ENABLED_FIELD_NUMBER: _builtins.int + MAX_STACK_DEPTH_FIELD_NUMBER: _builtins.int + enabled: _builtins.bool + max_stack_depth: _builtins.int + def __init__( + self, + *, + enabled: _builtins.bool = ..., + max_stack_depth: _builtins.int | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["_max_stack_depth", b"_max_stack_depth", "max_stack_depth", b"max_stack_depth"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["_max_stack_depth", b"_max_stack_depth", "enabled", b"enabled", "max_stack_depth", b"max_stack_depth"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__max_stack_depth: _TypeAlias = _typing.Literal["max_stack_depth"] # noqa: Y015 + _WhichOneofArgType__max_stack_depth: _TypeAlias = _typing.Literal["_max_stack_depth", b"_max_stack_depth"] # noqa: Y015 + def WhichOneof(self, oneof_group: _WhichOneofArgType__max_stack_depth) -> _WhichOneofReturnType__max_stack_depth | None: ... + +Global___ActorReentrancyConfig: _TypeAlias = ActorReentrancyConfig # noqa: Y015 diff --git a/dapr/proto/runtime/v1/appcallback_pb2.py b/dapr/proto/runtime/v1/appcallback_pb2.py index 24267f1e4..4e35f0712 100644 --- a/dapr/proto/runtime/v1/appcallback_pb2.py +++ b/dapr/proto/runtime/v1/appcallback_pb2.py @@ -28,7 +28,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'dapr/proto/runtime/v1/appcallback.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a!dapr/proto/common/v1/common.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xa6\x01\n\x0fJobEventRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\"\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x14\n\x0c\x63ontent_type\x18\x04 \x01(\t\x12;\n\x0ehttp_extension\x18\x05 \x01(\x0b\x32#.dapr.proto.common.v1.HTTPExtension\"\x12\n\x10JobEventResponse\"\xdb\x01\n\x11TopicEventRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x14\n\x0cspec_version\x18\x04 \x01(\t\x12\x19\n\x11\x64\x61ta_content_type\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x07 \x01(\x0c\x12\r\n\x05topic\x18\x06 \x01(\t\x12\x13\n\x0bpubsub_name\x18\x08 \x01(\t\x12\x0c\n\x04path\x18\t \x01(\t\x12+\n\nextensions\x18\n \x01(\x0b\x32\x17.google.protobuf.Struct\"\xa6\x01\n\x12TopicEventResponse\x12R\n\x06status\x18\x01 \x01(\x0e\x32\x42.dapr.proto.runtime.v1.TopicEventResponse.TopicEventResponseStatus\"<\n\x18TopicEventResponseStatus\x12\x0b\n\x07SUCCESS\x10\x00\x12\t\n\x05RETRY\x10\x01\x12\x08\n\x04\x44ROP\x10\x02\"\xab\x01\n\x13TopicEventCERequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x14\n\x0cspec_version\x18\x04 \x01(\t\x12\x19\n\x11\x64\x61ta_content_type\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12+\n\nextensions\x18\x07 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xa5\x02\n\x1aTopicEventBulkRequestEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12\x0f\n\x05\x62ytes\x18\x02 \x01(\x0cH\x00\x12\x41\n\x0b\x63loud_event\x18\x03 \x01(\x0b\x32*.dapr.proto.runtime.v1.TopicEventCERequestH\x00\x12\x14\n\x0c\x63ontent_type\x18\x04 \x01(\t\x12Q\n\x08metadata\x18\x05 \x03(\x0b\x32?.dapr.proto.runtime.v1.TopicEventBulkRequestEntry.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x07\n\x05\x65vent\"\xa6\x02\n\x15TopicEventBulkRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x42\n\x07\x65ntries\x18\x02 \x03(\x0b\x32\x31.dapr.proto.runtime.v1.TopicEventBulkRequestEntry\x12L\n\x08metadata\x18\x03 \x03(\x0b\x32:.dapr.proto.runtime.v1.TopicEventBulkRequest.MetadataEntry\x12\r\n\x05topic\x18\x04 \x01(\t\x12\x13\n\x0bpubsub_name\x18\x05 \x01(\t\x12\x0c\n\x04type\x18\x06 \x01(\t\x12\x0c\n\x04path\x18\x07 \x01(\t\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x83\x01\n\x1bTopicEventBulkResponseEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12R\n\x06status\x18\x02 \x01(\x0e\x32\x42.dapr.proto.runtime.v1.TopicEventResponse.TopicEventResponseStatus\"^\n\x16TopicEventBulkResponse\x12\x44\n\x08statuses\x18\x01 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.TopicEventBulkResponseEntry\"\xae\x01\n\x13\x42indingEventRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12J\n\x08metadata\x18\x03 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.BindingEventRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x88\x02\n\x14\x42indingEventResponse\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12/\n\x06states\x18\x02 \x03(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\x12\n\n\x02to\x18\x03 \x03(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12X\n\x0b\x63oncurrency\x18\x05 \x01(\x0e\x32\x43.dapr.proto.runtime.v1.BindingEventResponse.BindingEventConcurrency\"7\n\x17\x42indingEventConcurrency\x12\x0e\n\nSEQUENTIAL\x10\x00\x12\x0c\n\x08PARALLEL\x10\x01\"a\n\x1eListTopicSubscriptionsResponse\x12?\n\rsubscriptions\x18\x01 \x03(\x0b\x32(.dapr.proto.runtime.v1.TopicSubscription\"\xc5\x02\n\x11TopicSubscription\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12H\n\x08metadata\x18\x03 \x03(\x0b\x32\x36.dapr.proto.runtime.v1.TopicSubscription.MetadataEntry\x12\x32\n\x06routes\x18\x05 \x01(\x0b\x32\".dapr.proto.runtime.v1.TopicRoutes\x12\x19\n\x11\x64\x65\x61\x64_letter_topic\x18\x06 \x01(\t\x12\x42\n\x0e\x62ulk_subscribe\x18\x07 \x01(\x0b\x32*.dapr.proto.runtime.v1.BulkSubscribeConfig\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"O\n\x0bTopicRoutes\x12/\n\x05rules\x18\x01 \x03(\x0b\x32 .dapr.proto.runtime.v1.TopicRule\x12\x0f\n\x07\x64\x65\x66\x61ult\x18\x02 \x01(\t\"(\n\tTopicRule\x12\r\n\x05match\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"a\n\x13\x42ulkSubscribeConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1a\n\x12max_messages_count\x18\x02 \x01(\x05\x12\x1d\n\x15max_await_duration_ms\x18\x03 \x01(\x05\"-\n\x19ListInputBindingsResponse\x12\x10\n\x08\x62indings\x18\x01 \x03(\t\"\x15\n\x13HealthCheckResponse2\xf9\x04\n\x0b\x41ppCallback\x12W\n\x08OnInvoke\x12#.dapr.proto.common.v1.InvokeRequest\x1a$.dapr.proto.common.v1.InvokeResponse\"\x00\x12i\n\x16ListTopicSubscriptions\x12\x16.google.protobuf.Empty\x1a\x35.dapr.proto.runtime.v1.ListTopicSubscriptionsResponse\"\x00\x12\x65\n\x0cOnTopicEvent\x12(.dapr.proto.runtime.v1.TopicEventRequest\x1a).dapr.proto.runtime.v1.TopicEventResponse\"\x00\x12_\n\x11ListInputBindings\x12\x16.google.protobuf.Empty\x1a\x30.dapr.proto.runtime.v1.ListInputBindingsResponse\"\x00\x12k\n\x0eOnBindingEvent\x12*.dapr.proto.runtime.v1.BindingEventRequest\x1a+.dapr.proto.runtime.v1.BindingEventResponse\"\x00\x12q\n\x10OnBulkTopicEvent\x12,.dapr.proto.runtime.v1.TopicEventBulkRequest\x1a-.dapr.proto.runtime.v1.TopicEventBulkResponse\"\x00\x32m\n\x16\x41ppCallbackHealthCheck\x12S\n\x0bHealthCheck\x12\x16.google.protobuf.Empty\x1a*.dapr.proto.runtime.v1.HealthCheckResponse\"\x00\x32\xf3\x01\n\x10\x41ppCallbackAlpha\x12z\n\x16OnBulkTopicEventAlpha1\x12,.dapr.proto.runtime.v1.TopicEventBulkRequest\x1a-.dapr.proto.runtime.v1.TopicEventBulkResponse\"\x03\x88\x02\x01\x12\x63\n\x10OnJobEventAlpha1\x12&.dapr.proto.runtime.v1.JobEventRequest\x1a\'.dapr.proto.runtime.v1.JobEventResponseBy\n\nio.dapr.v1B\x15\x44\x61prAppCallbackProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02 Dapr.AppCallback.Autogen.Grpc.v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'dapr/proto/runtime/v1/appcallback.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a!dapr/proto/common/v1/common.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xa6\x01\n\x0fJobEventRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\"\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x14\n\x0c\x63ontent_type\x18\x04 \x01(\t\x12;\n\x0ehttp_extension\x18\x05 \x01(\x0b\x32#.dapr.proto.common.v1.HTTPExtension\"\x12\n\x10JobEventResponse\"\xdb\x01\n\x11TopicEventRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x14\n\x0cspec_version\x18\x04 \x01(\t\x12\x19\n\x11\x64\x61ta_content_type\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x07 \x01(\x0c\x12\r\n\x05topic\x18\x06 \x01(\t\x12\x13\n\x0bpubsub_name\x18\x08 \x01(\t\x12\x0c\n\x04path\x18\t \x01(\t\x12+\n\nextensions\x18\n \x01(\x0b\x32\x17.google.protobuf.Struct\"\xa6\x01\n\x12TopicEventResponse\x12R\n\x06status\x18\x01 \x01(\x0e\x32\x42.dapr.proto.runtime.v1.TopicEventResponse.TopicEventResponseStatus\"<\n\x18TopicEventResponseStatus\x12\x0b\n\x07SUCCESS\x10\x00\x12\t\n\x05RETRY\x10\x01\x12\x08\n\x04\x44ROP\x10\x02\"\xab\x01\n\x13TopicEventCERequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x14\n\x0cspec_version\x18\x04 \x01(\t\x12\x19\n\x11\x64\x61ta_content_type\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12+\n\nextensions\x18\x07 \x01(\x0b\x32\x17.google.protobuf.Struct\"\xa5\x02\n\x1aTopicEventBulkRequestEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12\x0f\n\x05\x62ytes\x18\x02 \x01(\x0cH\x00\x12\x41\n\x0b\x63loud_event\x18\x03 \x01(\x0b\x32*.dapr.proto.runtime.v1.TopicEventCERequestH\x00\x12\x14\n\x0c\x63ontent_type\x18\x04 \x01(\t\x12Q\n\x08metadata\x18\x05 \x03(\x0b\x32?.dapr.proto.runtime.v1.TopicEventBulkRequestEntry.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x07\n\x05\x65vent\"\xa6\x02\n\x15TopicEventBulkRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x42\n\x07\x65ntries\x18\x02 \x03(\x0b\x32\x31.dapr.proto.runtime.v1.TopicEventBulkRequestEntry\x12L\n\x08metadata\x18\x03 \x03(\x0b\x32:.dapr.proto.runtime.v1.TopicEventBulkRequest.MetadataEntry\x12\r\n\x05topic\x18\x04 \x01(\t\x12\x13\n\x0bpubsub_name\x18\x05 \x01(\t\x12\x0c\n\x04type\x18\x06 \x01(\t\x12\x0c\n\x04path\x18\x07 \x01(\t\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x83\x01\n\x1bTopicEventBulkResponseEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12R\n\x06status\x18\x02 \x01(\x0e\x32\x42.dapr.proto.runtime.v1.TopicEventResponse.TopicEventResponseStatus\"^\n\x16TopicEventBulkResponse\x12\x44\n\x08statuses\x18\x01 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.TopicEventBulkResponseEntry\"\xae\x01\n\x13\x42indingEventRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12J\n\x08metadata\x18\x03 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.BindingEventRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x88\x02\n\x14\x42indingEventResponse\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12/\n\x06states\x18\x02 \x03(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\x12\n\n\x02to\x18\x03 \x03(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12X\n\x0b\x63oncurrency\x18\x05 \x01(\x0e\x32\x43.dapr.proto.runtime.v1.BindingEventResponse.BindingEventConcurrency\"7\n\x17\x42indingEventConcurrency\x12\x0e\n\nSEQUENTIAL\x10\x00\x12\x0c\n\x08PARALLEL\x10\x01\"a\n\x1eListTopicSubscriptionsResponse\x12?\n\rsubscriptions\x18\x01 \x03(\x0b\x32(.dapr.proto.runtime.v1.TopicSubscription\"\xc5\x02\n\x11TopicSubscription\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12H\n\x08metadata\x18\x03 \x03(\x0b\x32\x36.dapr.proto.runtime.v1.TopicSubscription.MetadataEntry\x12\x32\n\x06routes\x18\x05 \x01(\x0b\x32\".dapr.proto.runtime.v1.TopicRoutes\x12\x19\n\x11\x64\x65\x61\x64_letter_topic\x18\x06 \x01(\t\x12\x42\n\x0e\x62ulk_subscribe\x18\x07 \x01(\x0b\x32*.dapr.proto.runtime.v1.BulkSubscribeConfig\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"O\n\x0bTopicRoutes\x12/\n\x05rules\x18\x01 \x03(\x0b\x32 .dapr.proto.runtime.v1.TopicRule\x12\x0f\n\x07\x64\x65\x66\x61ult\x18\x02 \x01(\t\"(\n\tTopicRule\x12\r\n\x05match\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"a\n\x13\x42ulkSubscribeConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1a\n\x12max_messages_count\x18\x02 \x01(\x05\x12\x1d\n\x15max_await_duration_ms\x18\x03 \x01(\x05\"-\n\x19ListInputBindingsResponse\x12\x10\n\x08\x62indings\x18\x01 \x03(\t\"\x15\n\x13HealthCheckResponse2\xd8\x05\n\x0b\x41ppCallback\x12W\n\x08OnInvoke\x12#.dapr.proto.common.v1.InvokeRequest\x1a$.dapr.proto.common.v1.InvokeResponse\"\x00\x12i\n\x16ListTopicSubscriptions\x12\x16.google.protobuf.Empty\x1a\x35.dapr.proto.runtime.v1.ListTopicSubscriptionsResponse\"\x00\x12\x65\n\x0cOnTopicEvent\x12(.dapr.proto.runtime.v1.TopicEventRequest\x1a).dapr.proto.runtime.v1.TopicEventResponse\"\x00\x12_\n\x11ListInputBindings\x12\x16.google.protobuf.Empty\x1a\x30.dapr.proto.runtime.v1.ListInputBindingsResponse\"\x00\x12k\n\x0eOnBindingEvent\x12*.dapr.proto.runtime.v1.BindingEventRequest\x1a+.dapr.proto.runtime.v1.BindingEventResponse\"\x00\x12q\n\x10OnBulkTopicEvent\x12,.dapr.proto.runtime.v1.TopicEventBulkRequest\x1a-.dapr.proto.runtime.v1.TopicEventBulkResponse\"\x00\x12]\n\nOnJobEvent\x12&.dapr.proto.runtime.v1.JobEventRequest\x1a\'.dapr.proto.runtime.v1.JobEventResponse2m\n\x16\x41ppCallbackHealthCheck\x12S\n\x0bHealthCheck\x12\x16.google.protobuf.Empty\x1a*.dapr.proto.runtime.v1.HealthCheckResponse\"\x00\x32\xf8\x01\n\x10\x41ppCallbackAlpha\x12z\n\x16OnBulkTopicEventAlpha1\x12,.dapr.proto.runtime.v1.TopicEventBulkRequest\x1a-.dapr.proto.runtime.v1.TopicEventBulkResponse\"\x03\x88\x02\x01\x12h\n\x10OnJobEventAlpha1\x12&.dapr.proto.runtime.v1.JobEventRequest\x1a\'.dapr.proto.runtime.v1.JobEventResponse\"\x03\x88\x02\x01\x42y\n\nio.dapr.v1B\x15\x44\x61prAppCallbackProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02 Dapr.AppCallback.Autogen.Grpc.v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -46,6 +46,8 @@ _globals['_TOPICSUBSCRIPTION_METADATAENTRY']._serialized_options = b'8\001' _globals['_APPCALLBACKALPHA'].methods_by_name['OnBulkTopicEventAlpha1']._loaded_options = None _globals['_APPCALLBACKALPHA'].methods_by_name['OnBulkTopicEventAlpha1']._serialized_options = b'\210\002\001' + _globals['_APPCALLBACKALPHA'].methods_by_name['OnJobEventAlpha1']._loaded_options = None + _globals['_APPCALLBACKALPHA'].methods_by_name['OnJobEventAlpha1']._serialized_options = b'\210\002\001' _globals['_JOBEVENTREQUEST']._serialized_start=188 _globals['_JOBEVENTREQUEST']._serialized_end=354 _globals['_JOBEVENTRESPONSE']._serialized_start=356 @@ -95,9 +97,9 @@ _globals['_HEALTHCHECKRESPONSE']._serialized_start=2904 _globals['_HEALTHCHECKRESPONSE']._serialized_end=2925 _globals['_APPCALLBACK']._serialized_start=2928 - _globals['_APPCALLBACK']._serialized_end=3561 - _globals['_APPCALLBACKHEALTHCHECK']._serialized_start=3563 - _globals['_APPCALLBACKHEALTHCHECK']._serialized_end=3672 - _globals['_APPCALLBACKALPHA']._serialized_start=3675 - _globals['_APPCALLBACKALPHA']._serialized_end=3918 + _globals['_APPCALLBACK']._serialized_end=3656 + _globals['_APPCALLBACKHEALTHCHECK']._serialized_start=3658 + _globals['_APPCALLBACKHEALTHCHECK']._serialized_end=3767 + _globals['_APPCALLBACKALPHA']._serialized_start=3770 + _globals['_APPCALLBACKALPHA']._serialized_end=4018 # @@protoc_insertion_point(module_scope) diff --git a/dapr/proto/runtime/v1/appcallback_pb2_grpc.py b/dapr/proto/runtime/v1/appcallback_pb2_grpc.py index 26c586cbc..762281db9 100644 --- a/dapr/proto/runtime/v1/appcallback_pb2_grpc.py +++ b/dapr/proto/runtime/v1/appcallback_pb2_grpc.py @@ -69,6 +69,11 @@ def __init__(self, channel): request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.TopicEventBulkRequest.SerializeToString, response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.TopicEventBulkResponse.FromString, _registered_method=True) + self.OnJobEvent = channel.unary_unary( + '/dapr.proto.runtime.v1.AppCallback/OnJobEvent', + request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.JobEventRequest.SerializeToString, + response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.JobEventResponse.FromString, + _registered_method=True) class AppCallbackServicer(object): @@ -122,6 +127,13 @@ def OnBulkTopicEvent(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def OnJobEvent(self, request, context): + """Sends job back to the app's endpoint at trigger time. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_AppCallbackServicer_to_server(servicer, server): rpc_method_handlers = { @@ -155,6 +167,11 @@ def add_AppCallbackServicer_to_server(servicer, server): request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.TopicEventBulkRequest.FromString, response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.TopicEventBulkResponse.SerializeToString, ), + 'OnJobEvent': grpc.unary_unary_rpc_method_handler( + servicer.OnJobEvent, + request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.JobEventRequest.FromString, + response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.JobEventResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'dapr.proto.runtime.v1.AppCallback', rpc_method_handlers) @@ -331,6 +348,33 @@ def OnBulkTopicEvent(request, metadata, _registered_method=True) + @staticmethod + def OnJobEvent(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, + '/dapr.proto.runtime.v1.AppCallback/OnJobEvent', + dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.JobEventRequest.SerializeToString, + dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2.JobEventResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + class AppCallbackHealthCheckStub(object): """AppCallbackHealthCheck V1 is an optional extension to AppCallback V1 to implement @@ -447,7 +491,7 @@ def OnBulkTopicEventAlpha1(self, request, context): raise NotImplementedError('Method not implemented!') def OnJobEventAlpha1(self, request, context): - """Sends job back to the app's endpoint at trigger time. + """Deprecated: Sends job back to the app's endpoint at trigger time. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') diff --git a/dapr/proto/runtime/v1/dapr_pb2.py b/dapr/proto/runtime/v1/dapr_pb2.py index 642ced434..8cf3fa26a 100644 --- a/dapr/proto/runtime/v1/dapr_pb2.py +++ b/dapr/proto/runtime/v1/dapr_pb2.py @@ -39,7 +39,7 @@ from dapr.proto.runtime.v1 import ai_pb2 as dapr_dot_proto_dot_runtime_dot_v1_dot_ai__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dapr/proto/runtime/v1/dapr.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x1bgoogle/protobuf/empty.proto\x1a!dapr/proto/common/v1/common.proto\x1a\"dapr/proto/runtime/v1/actors.proto\x1a\"dapr/proto/runtime/v1/pubsub.proto\x1a\"dapr/proto/runtime/v1/invoke.proto\x1a!dapr/proto/runtime/v1/state.proto\x1a#dapr/proto/runtime/v1/binding.proto\x1a\"dapr/proto/runtime/v1/secret.proto\x1a$dapr/proto/runtime/v1/metadata.proto\x1a)dapr/proto/runtime/v1/configuration.proto\x1a dapr/proto/runtime/v1/lock.proto\x1a\"dapr/proto/runtime/v1/crypto.proto\x1a$dapr/proto/runtime/v1/workflow.proto\x1a dapr/proto/runtime/v1/jobs.proto\x1a\x1e\x64\x61pr/proto/runtime/v1/ai.proto\"\x11\n\x0fShutdownRequest2\xbe\x38\n\x04\x44\x61pr\x12\x64\n\rInvokeService\x12+.dapr.proto.runtime.v1.InvokeServiceRequest\x1a$.dapr.proto.common.v1.InvokeResponse\"\x00\x12]\n\x08GetState\x12&.dapr.proto.runtime.v1.GetStateRequest\x1a\'.dapr.proto.runtime.v1.GetStateResponse\"\x00\x12i\n\x0cGetBulkState\x12*.dapr.proto.runtime.v1.GetBulkStateRequest\x1a+.dapr.proto.runtime.v1.GetBulkStateResponse\"\x00\x12N\n\tSaveState\x12\'.dapr.proto.runtime.v1.SaveStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12i\n\x10QueryStateAlpha1\x12(.dapr.proto.runtime.v1.QueryStateRequest\x1a).dapr.proto.runtime.v1.QueryStateResponse\"\x00\x12R\n\x0b\x44\x65leteState\x12).dapr.proto.runtime.v1.DeleteStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x0f\x44\x65leteBulkState\x12-.dapr.proto.runtime.v1.DeleteBulkStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17\x45xecuteStateTransaction\x12\x35.dapr.proto.runtime.v1.ExecuteStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12T\n\x0cPublishEvent\x12*.dapr.proto.runtime.v1.PublishEventRequest\x1a\x16.google.protobuf.Empty\"\x00\x12t\n\x16\x42ulkPublishEventAlpha1\x12).dapr.proto.runtime.v1.BulkPublishRequest\x1a*.dapr.proto.runtime.v1.BulkPublishResponse\"\x03\x88\x02\x01\x12k\n\x10\x42ulkPublishEvent\x12).dapr.proto.runtime.v1.BulkPublishRequest\x1a*.dapr.proto.runtime.v1.BulkPublishResponse\"\x00\x12\x97\x01\n\x1aSubscribeTopicEventsAlpha1\x12\x38.dapr.proto.runtime.v1.SubscribeTopicEventsRequestAlpha1\x1a\x39.dapr.proto.runtime.v1.SubscribeTopicEventsResponseAlpha1\"\x00(\x01\x30\x01\x12l\n\rInvokeBinding\x12+.dapr.proto.runtime.v1.InvokeBindingRequest\x1a,.dapr.proto.runtime.v1.InvokeBindingResponse\"\x00\x12`\n\tGetSecret\x12\'.dapr.proto.runtime.v1.GetSecretRequest\x1a(.dapr.proto.runtime.v1.GetSecretResponse\"\x00\x12l\n\rGetBulkSecret\x12+.dapr.proto.runtime.v1.GetBulkSecretRequest\x1a,.dapr.proto.runtime.v1.GetBulkSecretResponse\"\x00\x12`\n\x12RegisterActorTimer\x12\x30.dapr.proto.runtime.v1.RegisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x14UnregisterActorTimer\x12\x32.dapr.proto.runtime.v1.UnregisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x15RegisterActorReminder\x12\x33.dapr.proto.runtime.v1.RegisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17UnregisterActorReminder\x12\x35.dapr.proto.runtime.v1.UnregisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x9f\x01\n\x1eUnregisterActorRemindersByType\x12<.dapr.proto.runtime.v1.UnregisterActorRemindersByTypeRequest\x1a=.dapr.proto.runtime.v1.UnregisterActorRemindersByTypeResponse\"\x00\x12{\n\x12ListActorReminders\x12\x30.dapr.proto.runtime.v1.ListActorRemindersRequest\x1a\x31.dapr.proto.runtime.v1.ListActorRemindersResponse\"\x00\x12l\n\rGetActorState\x12+.dapr.proto.runtime.v1.GetActorStateRequest\x1a,.dapr.proto.runtime.v1.GetActorStateResponse\"\x00\x12u\n\x10GetActorReminder\x12..dapr.proto.runtime.v1.GetActorReminderRequest\x1a/.dapr.proto.runtime.v1.GetActorReminderResponse\"\x00\x12t\n\x1c\x45xecuteActorStateTransaction\x12:.dapr.proto.runtime.v1.ExecuteActorStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x0bInvokeActor\x12).dapr.proto.runtime.v1.InvokeActorRequest\x1a*.dapr.proto.runtime.v1.InvokeActorResponse\"\x00\x12{\n\x16GetConfigurationAlpha1\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12u\n\x10GetConfiguration\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12\x8f\x01\n\x1cSubscribeConfigurationAlpha1\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x89\x01\n\x16SubscribeConfiguration\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x93\x01\n\x1eUnsubscribeConfigurationAlpha1\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12\x8d\x01\n\x18UnsubscribeConfiguration\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12`\n\rTryLockAlpha1\x12%.dapr.proto.runtime.v1.TryLockRequest\x1a&.dapr.proto.runtime.v1.TryLockResponse\"\x00\x12]\n\x0cUnlockAlpha1\x12$.dapr.proto.runtime.v1.UnlockRequest\x1a%.dapr.proto.runtime.v1.UnlockResponse\"\x00\x12\x62\n\rEncryptAlpha1\x12%.dapr.proto.runtime.v1.EncryptRequest\x1a&.dapr.proto.runtime.v1.EncryptResponse(\x01\x30\x01\x12\x62\n\rDecryptAlpha1\x12%.dapr.proto.runtime.v1.DecryptRequest\x1a&.dapr.proto.runtime.v1.DecryptResponse(\x01\x30\x01\x12\x66\n\x0bGetMetadata\x12).dapr.proto.runtime.v1.GetMetadataRequest\x1a*.dapr.proto.runtime.v1.GetMetadataResponse\"\x00\x12R\n\x0bSetMetadata\x12).dapr.proto.runtime.v1.SetMetadataRequest\x1a\x16.google.protobuf.Empty\"\x00\x12m\n\x12SubtleGetKeyAlpha1\x12*.dapr.proto.runtime.v1.SubtleGetKeyRequest\x1a+.dapr.proto.runtime.v1.SubtleGetKeyResponse\x12p\n\x13SubtleEncryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleEncryptRequest\x1a,.dapr.proto.runtime.v1.SubtleEncryptResponse\x12p\n\x13SubtleDecryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleDecryptRequest\x1a,.dapr.proto.runtime.v1.SubtleDecryptResponse\x12p\n\x13SubtleWrapKeyAlpha1\x12+.dapr.proto.runtime.v1.SubtleWrapKeyRequest\x1a,.dapr.proto.runtime.v1.SubtleWrapKeyResponse\x12v\n\x15SubtleUnwrapKeyAlpha1\x12-.dapr.proto.runtime.v1.SubtleUnwrapKeyRequest\x1a..dapr.proto.runtime.v1.SubtleUnwrapKeyResponse\x12g\n\x10SubtleSignAlpha1\x12(.dapr.proto.runtime.v1.SubtleSignRequest\x1a).dapr.proto.runtime.v1.SubtleSignResponse\x12m\n\x12SubtleVerifyAlpha1\x12*.dapr.proto.runtime.v1.SubtleVerifyRequest\x1a+.dapr.proto.runtime.v1.SubtleVerifyResponse\x12u\n\x13StartWorkflowAlpha1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x03\x88\x02\x01\x12o\n\x11GetWorkflowAlpha1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x03\x88\x02\x01\x12_\n\x13PurgeWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12g\n\x17TerminateWorkflowAlpha1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12_\n\x13PauseWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12\x61\n\x14ResumeWorkflowAlpha1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12i\n\x18RaiseEventWorkflowAlpha1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12q\n\x12StartWorkflowBeta1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x00\x12k\n\x10GetWorkflowBeta1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x00\x12[\n\x12PurgeWorkflowBeta1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x63\n\x16TerminateWorkflowBeta1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12[\n\x12PauseWorkflowBeta1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12]\n\x13ResumeWorkflowBeta1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x65\n\x17RaiseEventWorkflowBeta1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12L\n\x08Shutdown\x12&.dapr.proto.runtime.v1.ShutdownRequest\x1a\x16.google.protobuf.Empty\"\x00\x12l\n\x11ScheduleJobAlpha1\x12).dapr.proto.runtime.v1.ScheduleJobRequest\x1a*.dapr.proto.runtime.v1.ScheduleJobResponse\"\x00\x12]\n\x0cGetJobAlpha1\x12$.dapr.proto.runtime.v1.GetJobRequest\x1a%.dapr.proto.runtime.v1.GetJobResponse\"\x00\x12\x66\n\x0f\x44\x65leteJobAlpha1\x12\'.dapr.proto.runtime.v1.DeleteJobRequest\x1a(.dapr.proto.runtime.v1.DeleteJobResponse\"\x00\x12\x8d\x01\n\x18\x44\x65leteJobsByPrefixAlpha1\x12\x36.dapr.proto.runtime.v1.DeleteJobsByPrefixRequestAlpha1\x1a\x37.dapr.proto.runtime.v1.DeleteJobsByPrefixResponseAlpha1\"\x00\x12o\n\x0eListJobsAlpha1\x12,.dapr.proto.runtime.v1.ListJobsRequestAlpha1\x1a-.dapr.proto.runtime.v1.ListJobsResponseAlpha1\"\x00\x12k\n\x0e\x43onverseAlpha1\x12*.dapr.proto.runtime.v1.ConversationRequest\x1a+.dapr.proto.runtime.v1.ConversationResponse\"\x00\x12w\n\x0e\x43onverseAlpha2\x12\x30.dapr.proto.runtime.v1.ConversationRequestAlpha2\x1a\x31.dapr.proto.runtime.v1.ConversationResponseAlpha2\"\x00\x42i\n\nio.dapr.v1B\nDaprProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dapr/proto/runtime/v1/dapr.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x1bgoogle/protobuf/empty.proto\x1a!dapr/proto/common/v1/common.proto\x1a\"dapr/proto/runtime/v1/actors.proto\x1a\"dapr/proto/runtime/v1/pubsub.proto\x1a\"dapr/proto/runtime/v1/invoke.proto\x1a!dapr/proto/runtime/v1/state.proto\x1a#dapr/proto/runtime/v1/binding.proto\x1a\"dapr/proto/runtime/v1/secret.proto\x1a$dapr/proto/runtime/v1/metadata.proto\x1a)dapr/proto/runtime/v1/configuration.proto\x1a dapr/proto/runtime/v1/lock.proto\x1a\"dapr/proto/runtime/v1/crypto.proto\x1a$dapr/proto/runtime/v1/workflow.proto\x1a dapr/proto/runtime/v1/jobs.proto\x1a\x1e\x64\x61pr/proto/runtime/v1/ai.proto\"\x11\n\x0fShutdownRequest2\xe6=\n\x04\x44\x61pr\x12\x64\n\rInvokeService\x12+.dapr.proto.runtime.v1.InvokeServiceRequest\x1a$.dapr.proto.common.v1.InvokeResponse\"\x00\x12]\n\x08GetState\x12&.dapr.proto.runtime.v1.GetStateRequest\x1a\'.dapr.proto.runtime.v1.GetStateResponse\"\x00\x12i\n\x0cGetBulkState\x12*.dapr.proto.runtime.v1.GetBulkStateRequest\x1a+.dapr.proto.runtime.v1.GetBulkStateResponse\"\x00\x12N\n\tSaveState\x12\'.dapr.proto.runtime.v1.SaveStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12i\n\x10QueryStateAlpha1\x12(.dapr.proto.runtime.v1.QueryStateRequest\x1a).dapr.proto.runtime.v1.QueryStateResponse\"\x00\x12R\n\x0b\x44\x65leteState\x12).dapr.proto.runtime.v1.DeleteStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x0f\x44\x65leteBulkState\x12-.dapr.proto.runtime.v1.DeleteBulkStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17\x45xecuteStateTransaction\x12\x35.dapr.proto.runtime.v1.ExecuteStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12T\n\x0cPublishEvent\x12*.dapr.proto.runtime.v1.PublishEventRequest\x1a\x16.google.protobuf.Empty\"\x00\x12t\n\x16\x42ulkPublishEventAlpha1\x12).dapr.proto.runtime.v1.BulkPublishRequest\x1a*.dapr.proto.runtime.v1.BulkPublishResponse\"\x03\x88\x02\x01\x12k\n\x10\x42ulkPublishEvent\x12).dapr.proto.runtime.v1.BulkPublishRequest\x1a*.dapr.proto.runtime.v1.BulkPublishResponse\"\x00\x12\x97\x01\n\x1aSubscribeTopicEventsAlpha1\x12\x38.dapr.proto.runtime.v1.SubscribeTopicEventsRequestAlpha1\x1a\x39.dapr.proto.runtime.v1.SubscribeTopicEventsResponseAlpha1\"\x00(\x01\x30\x01\x12l\n\rInvokeBinding\x12+.dapr.proto.runtime.v1.InvokeBindingRequest\x1a,.dapr.proto.runtime.v1.InvokeBindingResponse\"\x00\x12`\n\tGetSecret\x12\'.dapr.proto.runtime.v1.GetSecretRequest\x1a(.dapr.proto.runtime.v1.GetSecretResponse\"\x00\x12l\n\rGetBulkSecret\x12+.dapr.proto.runtime.v1.GetBulkSecretRequest\x1a,.dapr.proto.runtime.v1.GetBulkSecretResponse\"\x00\x12`\n\x12RegisterActorTimer\x12\x30.dapr.proto.runtime.v1.RegisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x14UnregisterActorTimer\x12\x32.dapr.proto.runtime.v1.UnregisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x15RegisterActorReminder\x12\x33.dapr.proto.runtime.v1.RegisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17UnregisterActorReminder\x12\x35.dapr.proto.runtime.v1.UnregisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x9f\x01\n\x1eUnregisterActorRemindersByType\x12<.dapr.proto.runtime.v1.UnregisterActorRemindersByTypeRequest\x1a=.dapr.proto.runtime.v1.UnregisterActorRemindersByTypeResponse\"\x00\x12{\n\x12ListActorReminders\x12\x30.dapr.proto.runtime.v1.ListActorRemindersRequest\x1a\x31.dapr.proto.runtime.v1.ListActorRemindersResponse\"\x00\x12l\n\rGetActorState\x12+.dapr.proto.runtime.v1.GetActorStateRequest\x1a,.dapr.proto.runtime.v1.GetActorStateResponse\"\x00\x12u\n\x10GetActorReminder\x12..dapr.proto.runtime.v1.GetActorReminderRequest\x1a/.dapr.proto.runtime.v1.GetActorReminderResponse\"\x00\x12t\n\x1c\x45xecuteActorStateTransaction\x12:.dapr.proto.runtime.v1.ExecuteActorStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x0bInvokeActor\x12).dapr.proto.runtime.v1.InvokeActorRequest\x1a*.dapr.proto.runtime.v1.InvokeActorResponse\"\x00\x12\x97\x01\n\x1aSubscribeActorEventsAlpha1\x12\x38.dapr.proto.runtime.v1.SubscribeActorEventsRequestAlpha1\x1a\x39.dapr.proto.runtime.v1.SubscribeActorEventsResponseAlpha1\"\x00(\x01\x30\x01\x12{\n\x16GetConfigurationAlpha1\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12u\n\x10GetConfiguration\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12\x8f\x01\n\x1cSubscribeConfigurationAlpha1\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x89\x01\n\x16SubscribeConfiguration\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x93\x01\n\x1eUnsubscribeConfigurationAlpha1\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12\x8d\x01\n\x18UnsubscribeConfiguration\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12`\n\rTryLockAlpha1\x12%.dapr.proto.runtime.v1.TryLockRequest\x1a&.dapr.proto.runtime.v1.TryLockResponse\"\x00\x12]\n\x0cUnlockAlpha1\x12$.dapr.proto.runtime.v1.UnlockRequest\x1a%.dapr.proto.runtime.v1.UnlockResponse\"\x00\x12\x62\n\rEncryptAlpha1\x12%.dapr.proto.runtime.v1.EncryptRequest\x1a&.dapr.proto.runtime.v1.EncryptResponse(\x01\x30\x01\x12\x62\n\rDecryptAlpha1\x12%.dapr.proto.runtime.v1.DecryptRequest\x1a&.dapr.proto.runtime.v1.DecryptResponse(\x01\x30\x01\x12\x66\n\x0bGetMetadata\x12).dapr.proto.runtime.v1.GetMetadataRequest\x1a*.dapr.proto.runtime.v1.GetMetadataResponse\"\x00\x12R\n\x0bSetMetadata\x12).dapr.proto.runtime.v1.SetMetadataRequest\x1a\x16.google.protobuf.Empty\"\x00\x12m\n\x12SubtleGetKeyAlpha1\x12*.dapr.proto.runtime.v1.SubtleGetKeyRequest\x1a+.dapr.proto.runtime.v1.SubtleGetKeyResponse\x12p\n\x13SubtleEncryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleEncryptRequest\x1a,.dapr.proto.runtime.v1.SubtleEncryptResponse\x12p\n\x13SubtleDecryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleDecryptRequest\x1a,.dapr.proto.runtime.v1.SubtleDecryptResponse\x12p\n\x13SubtleWrapKeyAlpha1\x12+.dapr.proto.runtime.v1.SubtleWrapKeyRequest\x1a,.dapr.proto.runtime.v1.SubtleWrapKeyResponse\x12v\n\x15SubtleUnwrapKeyAlpha1\x12-.dapr.proto.runtime.v1.SubtleUnwrapKeyRequest\x1a..dapr.proto.runtime.v1.SubtleUnwrapKeyResponse\x12g\n\x10SubtleSignAlpha1\x12(.dapr.proto.runtime.v1.SubtleSignRequest\x1a).dapr.proto.runtime.v1.SubtleSignResponse\x12m\n\x12SubtleVerifyAlpha1\x12*.dapr.proto.runtime.v1.SubtleVerifyRequest\x1a+.dapr.proto.runtime.v1.SubtleVerifyResponse\x12u\n\x13StartWorkflowAlpha1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x03\x88\x02\x01\x12o\n\x11GetWorkflowAlpha1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x03\x88\x02\x01\x12_\n\x13PurgeWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12g\n\x17TerminateWorkflowAlpha1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12_\n\x13PauseWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12\x61\n\x14ResumeWorkflowAlpha1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12i\n\x18RaiseEventWorkflowAlpha1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12q\n\x12StartWorkflowBeta1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x00\x12k\n\x10GetWorkflowBeta1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x00\x12[\n\x12PurgeWorkflowBeta1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x63\n\x16TerminateWorkflowBeta1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12[\n\x12PauseWorkflowBeta1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12]\n\x13ResumeWorkflowBeta1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x65\n\x17RaiseEventWorkflowBeta1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12L\n\x08Shutdown\x12&.dapr.proto.runtime.v1.ShutdownRequest\x1a\x16.google.protobuf.Empty\"\x00\x12o\n\x11ScheduleJobAlpha1\x12).dapr.proto.runtime.v1.ScheduleJobRequest\x1a*.dapr.proto.runtime.v1.ScheduleJobResponse\"\x03\x88\x02\x01\x12\x66\n\x0bScheduleJob\x12).dapr.proto.runtime.v1.ScheduleJobRequest\x1a*.dapr.proto.runtime.v1.ScheduleJobResponse\"\x00\x12`\n\x0cGetJobAlpha1\x12$.dapr.proto.runtime.v1.GetJobRequest\x1a%.dapr.proto.runtime.v1.GetJobResponse\"\x03\x88\x02\x01\x12W\n\x06GetJob\x12$.dapr.proto.runtime.v1.GetJobRequest\x1a%.dapr.proto.runtime.v1.GetJobResponse\"\x00\x12i\n\x0f\x44\x65leteJobAlpha1\x12\'.dapr.proto.runtime.v1.DeleteJobRequest\x1a(.dapr.proto.runtime.v1.DeleteJobResponse\"\x03\x88\x02\x01\x12`\n\tDeleteJob\x12\'.dapr.proto.runtime.v1.DeleteJobRequest\x1a(.dapr.proto.runtime.v1.DeleteJobResponse\"\x00\x12\x90\x01\n\x18\x44\x65leteJobsByPrefixAlpha1\x12\x36.dapr.proto.runtime.v1.DeleteJobsByPrefixRequestAlpha1\x1a\x37.dapr.proto.runtime.v1.DeleteJobsByPrefixResponseAlpha1\"\x03\x88\x02\x01\x12{\n\x12\x44\x65leteJobsByPrefix\x12\x30.dapr.proto.runtime.v1.DeleteJobsByPrefixRequest\x1a\x31.dapr.proto.runtime.v1.DeleteJobsByPrefixResponse\"\x00\x12r\n\x0eListJobsAlpha1\x12,.dapr.proto.runtime.v1.ListJobsRequestAlpha1\x1a-.dapr.proto.runtime.v1.ListJobsResponseAlpha1\"\x03\x88\x02\x01\x12]\n\x08ListJobs\x12&.dapr.proto.runtime.v1.ListJobsRequest\x1a\'.dapr.proto.runtime.v1.ListJobsResponse\"\x00\x12k\n\x0e\x43onverseAlpha1\x12*.dapr.proto.runtime.v1.ConversationRequest\x1a+.dapr.proto.runtime.v1.ConversationResponse\"\x00\x12w\n\x0e\x43onverseAlpha2\x12\x30.dapr.proto.runtime.v1.ConversationRequestAlpha2\x1a\x31.dapr.proto.runtime.v1.ConversationResponseAlpha2\"\x00\x42i\n\nio.dapr.v1B\nDaprProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -63,8 +63,18 @@ _globals['_DAPR'].methods_by_name['ResumeWorkflowAlpha1']._serialized_options = b'\210\002\001' _globals['_DAPR'].methods_by_name['RaiseEventWorkflowAlpha1']._loaded_options = None _globals['_DAPR'].methods_by_name['RaiseEventWorkflowAlpha1']._serialized_options = b'\210\002\001' + _globals['_DAPR'].methods_by_name['ScheduleJobAlpha1']._loaded_options = None + _globals['_DAPR'].methods_by_name['ScheduleJobAlpha1']._serialized_options = b'\210\002\001' + _globals['_DAPR'].methods_by_name['GetJobAlpha1']._loaded_options = None + _globals['_DAPR'].methods_by_name['GetJobAlpha1']._serialized_options = b'\210\002\001' + _globals['_DAPR'].methods_by_name['DeleteJobAlpha1']._loaded_options = None + _globals['_DAPR'].methods_by_name['DeleteJobAlpha1']._serialized_options = b'\210\002\001' + _globals['_DAPR'].methods_by_name['DeleteJobsByPrefixAlpha1']._loaded_options = None + _globals['_DAPR'].methods_by_name['DeleteJobsByPrefixAlpha1']._serialized_options = b'\210\002\001' + _globals['_DAPR'].methods_by_name['ListJobsAlpha1']._loaded_options = None + _globals['_DAPR'].methods_by_name['ListJobsAlpha1']._serialized_options = b'\210\002\001' _globals['_SHUTDOWNREQUEST']._serialized_start=594 _globals['_SHUTDOWNREQUEST']._serialized_end=611 _globals['_DAPR']._serialized_start=614 - _globals['_DAPR']._serialized_end=7844 + _globals['_DAPR']._serialized_end=8524 # @@protoc_insertion_point(module_scope) diff --git a/dapr/proto/runtime/v1/dapr_pb2_grpc.py b/dapr/proto/runtime/v1/dapr_pb2_grpc.py index 803556190..09c5e21d0 100644 --- a/dapr/proto/runtime/v1/dapr_pb2_grpc.py +++ b/dapr/proto/runtime/v1/dapr_pb2_grpc.py @@ -175,6 +175,11 @@ def __init__(self, channel): request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.InvokeActorRequest.SerializeToString, response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.InvokeActorResponse.FromString, _registered_method=True) + self.SubscribeActorEventsAlpha1 = channel.stream_stream( + '/dapr.proto.runtime.v1.Dapr/SubscribeActorEventsAlpha1', + request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.SubscribeActorEventsRequestAlpha1.SerializeToString, + response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.SubscribeActorEventsResponseAlpha1.FromString, + _registered_method=True) self.GetConfigurationAlpha1 = channel.unary_unary( '/dapr.proto.runtime.v1.Dapr/GetConfigurationAlpha1', request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_configuration__pb2.GetConfigurationRequest.SerializeToString, @@ -350,26 +355,51 @@ def __init__(self, channel): request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobRequest.SerializeToString, response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobResponse.FromString, _registered_method=True) + self.ScheduleJob = channel.unary_unary( + '/dapr.proto.runtime.v1.Dapr/ScheduleJob', + request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobRequest.SerializeToString, + response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobResponse.FromString, + _registered_method=True) self.GetJobAlpha1 = channel.unary_unary( '/dapr.proto.runtime.v1.Dapr/GetJobAlpha1', request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobRequest.SerializeToString, response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobResponse.FromString, _registered_method=True) + self.GetJob = channel.unary_unary( + '/dapr.proto.runtime.v1.Dapr/GetJob', + request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobRequest.SerializeToString, + response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobResponse.FromString, + _registered_method=True) self.DeleteJobAlpha1 = channel.unary_unary( '/dapr.proto.runtime.v1.Dapr/DeleteJobAlpha1', request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobRequest.SerializeToString, response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobResponse.FromString, _registered_method=True) + self.DeleteJob = channel.unary_unary( + '/dapr.proto.runtime.v1.Dapr/DeleteJob', + request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobRequest.SerializeToString, + response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobResponse.FromString, + _registered_method=True) self.DeleteJobsByPrefixAlpha1 = channel.unary_unary( '/dapr.proto.runtime.v1.Dapr/DeleteJobsByPrefixAlpha1', request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixRequestAlpha1.SerializeToString, response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixResponseAlpha1.FromString, _registered_method=True) + self.DeleteJobsByPrefix = channel.unary_unary( + '/dapr.proto.runtime.v1.Dapr/DeleteJobsByPrefix', + request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixRequest.SerializeToString, + response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixResponse.FromString, + _registered_method=True) self.ListJobsAlpha1 = channel.unary_unary( '/dapr.proto.runtime.v1.Dapr/ListJobsAlpha1', request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsRequestAlpha1.SerializeToString, response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsResponseAlpha1.FromString, _registered_method=True) + self.ListJobs = channel.unary_unary( + '/dapr.proto.runtime.v1.Dapr/ListJobs', + request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsRequest.SerializeToString, + response_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsResponse.FromString, + _registered_method=True) self.ConverseAlpha1 = channel.unary_unary( '/dapr.proto.runtime.v1.Dapr/ConverseAlpha1', request_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_ai__pb2.ConversationRequest.SerializeToString, @@ -561,6 +591,18 @@ def InvokeActor(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def SubscribeActorEventsAlpha1(self, request_iterator, context): + """SubscribeActorEventsAlpha1 is the app-initiated stream over which an + actor host receives invocation, reminder, timer, and deactivation + callbacks from Dapr. The first message the app sends must be a + SubscribeActorEventsRequestInitialAlpha1 registering the actor types + it hosts. Apps using this RPC do not need to expose a server port for + actor callbacks. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def GetConfigurationAlpha1(self, request, context): """GetConfiguration gets configuration from configuration store. """ @@ -800,6 +842,13 @@ def Shutdown(self, request, context): raise NotImplementedError('Method not implemented!') def ScheduleJobAlpha1(self, request, context): + """Deprecated: Create and schedule a job + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ScheduleJob(self, request, context): """Create and schedule a job """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -807,6 +856,13 @@ def ScheduleJobAlpha1(self, request, context): raise NotImplementedError('Method not implemented!') def GetJobAlpha1(self, request, context): + """Deprecated: Gets a scheduled job + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetJob(self, request, context): """Gets a scheduled job """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -814,6 +870,13 @@ def GetJobAlpha1(self, request, context): raise NotImplementedError('Method not implemented!') def DeleteJobAlpha1(self, request, context): + """Deprecated: Delete a job + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteJob(self, request, context): """Delete a job """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -821,13 +884,29 @@ def DeleteJobAlpha1(self, request, context): raise NotImplementedError('Method not implemented!') def DeleteJobsByPrefixAlpha1(self, request, context): - """Missing associated documentation comment in .proto file.""" + """Deprecated: Delete jobs by name prefix + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteJobsByPrefix(self, request, context): + """Delete jobs by name prefix + """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def ListJobsAlpha1(self, request, context): - """Missing associated documentation comment in .proto file.""" + """Deprecated: List all jobs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListJobs(self, request, context): + """List all jobs + """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') @@ -974,6 +1053,11 @@ def add_DaprServicer_to_server(servicer, server): request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.InvokeActorRequest.FromString, response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.InvokeActorResponse.SerializeToString, ), + 'SubscribeActorEventsAlpha1': grpc.stream_stream_rpc_method_handler( + servicer.SubscribeActorEventsAlpha1, + request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.SubscribeActorEventsRequestAlpha1.FromString, + response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.SubscribeActorEventsResponseAlpha1.SerializeToString, + ), 'GetConfigurationAlpha1': grpc.unary_unary_rpc_method_handler( servicer.GetConfigurationAlpha1, request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_configuration__pb2.GetConfigurationRequest.FromString, @@ -1149,26 +1233,51 @@ def add_DaprServicer_to_server(servicer, server): request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobRequest.FromString, response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobResponse.SerializeToString, ), + 'ScheduleJob': grpc.unary_unary_rpc_method_handler( + servicer.ScheduleJob, + request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobRequest.FromString, + response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobResponse.SerializeToString, + ), 'GetJobAlpha1': grpc.unary_unary_rpc_method_handler( servicer.GetJobAlpha1, request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobRequest.FromString, response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobResponse.SerializeToString, ), + 'GetJob': grpc.unary_unary_rpc_method_handler( + servicer.GetJob, + request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobRequest.FromString, + response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobResponse.SerializeToString, + ), 'DeleteJobAlpha1': grpc.unary_unary_rpc_method_handler( servicer.DeleteJobAlpha1, request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobRequest.FromString, response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobResponse.SerializeToString, ), + 'DeleteJob': grpc.unary_unary_rpc_method_handler( + servicer.DeleteJob, + request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobRequest.FromString, + response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobResponse.SerializeToString, + ), 'DeleteJobsByPrefixAlpha1': grpc.unary_unary_rpc_method_handler( servicer.DeleteJobsByPrefixAlpha1, request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixRequestAlpha1.FromString, response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixResponseAlpha1.SerializeToString, ), + 'DeleteJobsByPrefix': grpc.unary_unary_rpc_method_handler( + servicer.DeleteJobsByPrefix, + request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixRequest.FromString, + response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixResponse.SerializeToString, + ), 'ListJobsAlpha1': grpc.unary_unary_rpc_method_handler( servicer.ListJobsAlpha1, request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsRequestAlpha1.FromString, response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsResponseAlpha1.SerializeToString, ), + 'ListJobs': grpc.unary_unary_rpc_method_handler( + servicer.ListJobs, + request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsRequest.FromString, + response_serializer=dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsResponse.SerializeToString, + ), 'ConverseAlpha1': grpc.unary_unary_rpc_method_handler( servicer.ConverseAlpha1, request_deserializer=dapr_dot_proto_dot_runtime_dot_v1_dot_ai__pb2.ConversationRequest.FromString, @@ -1866,6 +1975,33 @@ def InvokeActor(request, metadata, _registered_method=True) + @staticmethod + def SubscribeActorEventsAlpha1(request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.stream_stream( + request_iterator, + target, + '/dapr.proto.runtime.v1.Dapr/SubscribeActorEventsAlpha1', + dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.SubscribeActorEventsRequestAlpha1.SerializeToString, + dapr_dot_proto_dot_runtime_dot_v1_dot_actors__pb2.SubscribeActorEventsResponseAlpha1.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def GetConfigurationAlpha1(request, target, @@ -2811,6 +2947,33 @@ def ScheduleJobAlpha1(request, metadata, _registered_method=True) + @staticmethod + def ScheduleJob(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, + '/dapr.proto.runtime.v1.Dapr/ScheduleJob', + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobRequest.SerializeToString, + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ScheduleJobResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def GetJobAlpha1(request, target, @@ -2838,6 +3001,33 @@ def GetJobAlpha1(request, metadata, _registered_method=True) + @staticmethod + def GetJob(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, + '/dapr.proto.runtime.v1.Dapr/GetJob', + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobRequest.SerializeToString, + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.GetJobResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def DeleteJobAlpha1(request, target, @@ -2865,6 +3055,33 @@ def DeleteJobAlpha1(request, metadata, _registered_method=True) + @staticmethod + def DeleteJob(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, + '/dapr.proto.runtime.v1.Dapr/DeleteJob', + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobRequest.SerializeToString, + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def DeleteJobsByPrefixAlpha1(request, target, @@ -2892,6 +3109,33 @@ def DeleteJobsByPrefixAlpha1(request, metadata, _registered_method=True) + @staticmethod + def DeleteJobsByPrefix(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, + '/dapr.proto.runtime.v1.Dapr/DeleteJobsByPrefix', + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixRequest.SerializeToString, + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.DeleteJobsByPrefixResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def ListJobsAlpha1(request, target, @@ -2919,6 +3163,33 @@ def ListJobsAlpha1(request, metadata, _registered_method=True) + @staticmethod + def ListJobs(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, + '/dapr.proto.runtime.v1.Dapr/ListJobs', + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsRequest.SerializeToString, + dapr_dot_proto_dot_runtime_dot_v1_dot_jobs__pb2.ListJobsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def ConverseAlpha1(request, target, diff --git a/dapr/proto/runtime/v1/jobs_pb2.py b/dapr/proto/runtime/v1/jobs_pb2.py index 0631950db..38aefd0cf 100644 --- a/dapr/proto/runtime/v1/jobs_pb2.py +++ b/dapr/proto/runtime/v1/jobs_pb2.py @@ -26,7 +26,7 @@ from dapr.proto.common.v1 import common_pb2 as dapr_dot_proto_dot_common_dot_v1_dot_common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dapr/proto/runtime/v1/jobs.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a!dapr/proto/common/v1/common.proto\"\xcf\x02\n\x03Job\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x08schedule\x18\x02 \x01(\tH\x00R\x08schedule\x88\x01\x01\x12\x1d\n\x07repeats\x18\x03 \x01(\rH\x01R\x07repeats\x88\x01\x01\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x02R\x07\x64ueTime\x88\x01\x01\x12\x15\n\x03ttl\x18\x05 \x01(\tH\x03R\x03ttl\x88\x01\x01\x12(\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyR\x04\x64\x61ta\x12R\n\x0e\x66\x61ilure_policy\x18\x07 \x01(\x0b\x32&.dapr.proto.common.v1.JobFailurePolicyH\x04R\rfailurePolicy\x88\x01\x01\x42\x0b\n\t_scheduleB\n\n\x08_repeatsB\x0b\n\t_due_timeB\x06\n\x04_ttlB\x11\n\x0f_failure_policy\"[\n\x12ScheduleJobRequest\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\x12\x1c\n\toverwrite\x18\x02 \x01(\x08R\toverwrite\"\x15\n\x13ScheduleJobResponse\"\x1d\n\rGetJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"9\n\x0eGetJobResponse\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\" \n\x10\x44\x65leteJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x13\n\x11\x44\x65leteJobResponse\"K\n\x1f\x44\x65leteJobsByPrefixRequestAlpha1\x12\x18\n\x0bname_prefix\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_name_prefix\"\"\n DeleteJobsByPrefixResponseAlpha1\"\x17\n\x15ListJobsRequestAlpha1\"B\n\x16ListJobsResponseAlpha1\x12(\n\x04jobs\x18\x01 \x03(\x0b\x32\x1a.dapr.proto.runtime.v1.JobBm\n\nio.dapr.v1B\x0e\x44\x61prJobsProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dapr/proto/runtime/v1/jobs.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a!dapr/proto/common/v1/common.proto\"\xcf\x02\n\x03Job\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x08schedule\x18\x02 \x01(\tH\x00R\x08schedule\x88\x01\x01\x12\x1d\n\x07repeats\x18\x03 \x01(\rH\x01R\x07repeats\x88\x01\x01\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x02R\x07\x64ueTime\x88\x01\x01\x12\x15\n\x03ttl\x18\x05 \x01(\tH\x03R\x03ttl\x88\x01\x01\x12(\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyR\x04\x64\x61ta\x12R\n\x0e\x66\x61ilure_policy\x18\x07 \x01(\x0b\x32&.dapr.proto.common.v1.JobFailurePolicyH\x04R\rfailurePolicy\x88\x01\x01\x42\x0b\n\t_scheduleB\n\n\x08_repeatsB\x0b\n\t_due_timeB\x06\n\x04_ttlB\x11\n\x0f_failure_policy\"[\n\x12ScheduleJobRequest\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\x12\x1c\n\toverwrite\x18\x02 \x01(\x08R\toverwrite\"\x15\n\x13ScheduleJobResponse\"\x1d\n\rGetJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"9\n\x0eGetJobResponse\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\" \n\x10\x44\x65leteJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x13\n\x11\x44\x65leteJobResponse\"K\n\x1f\x44\x65leteJobsByPrefixRequestAlpha1\x12\x18\n\x0bname_prefix\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_name_prefix\"\"\n DeleteJobsByPrefixResponseAlpha1\"E\n\x19\x44\x65leteJobsByPrefixRequest\x12\x18\n\x0bname_prefix\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_name_prefix\"\x1c\n\x1a\x44\x65leteJobsByPrefixResponse\"\x17\n\x15ListJobsRequestAlpha1\"B\n\x16ListJobsResponseAlpha1\x12(\n\x04jobs\x18\x01 \x03(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\"\x11\n\x0fListJobsRequest\"<\n\x10ListJobsResponse\x12(\n\x04jobs\x18\x01 \x03(\x0b\x32\x1a.dapr.proto.runtime.v1.JobBm\n\nio.dapr.v1B\x0e\x44\x61prJobsProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -52,8 +52,16 @@ _globals['_DELETEJOBSBYPREFIXREQUESTALPHA1']._serialized_end=795 _globals['_DELETEJOBSBYPREFIXRESPONSEALPHA1']._serialized_start=797 _globals['_DELETEJOBSBYPREFIXRESPONSEALPHA1']._serialized_end=831 - _globals['_LISTJOBSREQUESTALPHA1']._serialized_start=833 - _globals['_LISTJOBSREQUESTALPHA1']._serialized_end=856 - _globals['_LISTJOBSRESPONSEALPHA1']._serialized_start=858 - _globals['_LISTJOBSRESPONSEALPHA1']._serialized_end=924 + _globals['_DELETEJOBSBYPREFIXREQUEST']._serialized_start=833 + _globals['_DELETEJOBSBYPREFIXREQUEST']._serialized_end=902 + _globals['_DELETEJOBSBYPREFIXRESPONSE']._serialized_start=904 + _globals['_DELETEJOBSBYPREFIXRESPONSE']._serialized_end=932 + _globals['_LISTJOBSREQUESTALPHA1']._serialized_start=934 + _globals['_LISTJOBSREQUESTALPHA1']._serialized_end=957 + _globals['_LISTJOBSRESPONSEALPHA1']._serialized_start=959 + _globals['_LISTJOBSRESPONSEALPHA1']._serialized_end=1025 + _globals['_LISTJOBSREQUEST']._serialized_start=1027 + _globals['_LISTJOBSREQUEST']._serialized_end=1044 + _globals['_LISTJOBSRESPONSE']._serialized_start=1046 + _globals['_LISTJOBSRESPONSE']._serialized_end=1106 # @@protoc_insertion_point(module_scope) diff --git a/dapr/proto/runtime/v1/jobs_pb2.pyi b/dapr/proto/runtime/v1/jobs_pb2.pyi index 20a7ab795..188a0017a 100644 --- a/dapr/proto/runtime/v1/jobs_pb2.pyi +++ b/dapr/proto/runtime/v1/jobs_pb2.pyi @@ -287,6 +287,44 @@ class DeleteJobsByPrefixResponseAlpha1(_message.Message): Global___DeleteJobsByPrefixResponseAlpha1: _TypeAlias = DeleteJobsByPrefixResponseAlpha1 # noqa: Y015 +@_typing.final +class DeleteJobsByPrefixRequest(_message.Message): + """DeleteJobsByPrefixRequest is the stable message to delete jobs by name prefix.""" + + DESCRIPTOR: _descriptor.Descriptor + + NAME_PREFIX_FIELD_NUMBER: _builtins.int + name_prefix: _builtins.str + """name_prefix is the prefix of the job names to delete. If not provided, all + jobs associated with this app ID will be deleted. + """ + def __init__( + self, + *, + name_prefix: _builtins.str | None = ..., + ) -> None: ... + _HasFieldArgType: _TypeAlias = _typing.Literal["_name_prefix", b"_name_prefix", "name_prefix", b"name_prefix"] # noqa: Y015 + def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["_name_prefix", b"_name_prefix", "name_prefix", b"name_prefix"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__name_prefix: _TypeAlias = _typing.Literal["name_prefix"] # noqa: Y015 + _WhichOneofArgType__name_prefix: _TypeAlias = _typing.Literal["_name_prefix", b"_name_prefix"] # noqa: Y015 + def WhichOneof(self, oneof_group: _WhichOneofArgType__name_prefix) -> _WhichOneofReturnType__name_prefix | None: ... + +Global___DeleteJobsByPrefixRequest: _TypeAlias = DeleteJobsByPrefixRequest # noqa: Y015 + +@_typing.final +class DeleteJobsByPrefixResponse(_message.Message): + """Empty""" + + DESCRIPTOR: _descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___DeleteJobsByPrefixResponse: _TypeAlias = DeleteJobsByPrefixResponse # noqa: Y015 + @_typing.final class ListJobsRequestAlpha1(_message.Message): """Empty""" @@ -319,3 +357,36 @@ class ListJobsResponseAlpha1(_message.Message): def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___ListJobsResponseAlpha1: _TypeAlias = ListJobsResponseAlpha1 # noqa: Y015 + +@_typing.final +class ListJobsRequest(_message.Message): + """Empty""" + + DESCRIPTOR: _descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___ListJobsRequest: _TypeAlias = ListJobsRequest # noqa: Y015 + +@_typing.final +class ListJobsResponse(_message.Message): + """ListJobsResponse is the stable message response containing the list of jobs.""" + + DESCRIPTOR: _descriptor.Descriptor + + JOBS_FIELD_NUMBER: _builtins.int + @_builtins.property + def jobs(self) -> _containers.RepeatedCompositeFieldContainer[Global___Job]: + """The list of jobs.""" + + def __init__( + self, + *, + jobs: _abc.Iterable[Global___Job] | None = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["jobs", b"jobs"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___ListJobsResponse: _TypeAlias = ListJobsResponse # noqa: Y015 diff --git a/examples/jobs/README.md b/examples/jobs/README.md index 5c0fb514f..433575826 100644 --- a/examples/jobs/README.md +++ b/examples/jobs/README.md @@ -2,16 +2,17 @@ This example demonstrates the [Jobs API](https://docs.dapr.io/developing-applications/building-blocks/jobs/) in Dapr. It demonstrates the following APIs: -- **schedule_job_alpha1**: Schedule a job to run at specified times -- **get_job_alpha1**: Retrieve details about a scheduled job -- **delete_job_alpha1**: Delete a scheduled job +- **schedule_job**: Schedule a job to run at specified times +- **get_job**: Retrieve details about a scheduled job +- **delete_job**: Delete a scheduled job It includes two examples that showcase different aspects of the Jobs API: 1. **`job_management.py`** - Focuses on job scheduling patterns and management operations 2. **`job_processing.py`** - Shows the complete workflow including job event handling -> **Note:** The Jobs API is currently in Alpha and subject to change. Make sure to use the latest proto bindings. +> **Note:** The Jobs API is stable as of Dapr 1.18. The SDK calls the stable RPCs and +> transparently falls back to the deprecated `*_alpha1` RPCs when talking to an older sidecar. ## Prerequisites @@ -248,7 +249,7 @@ The callback service must: ## Additional Information -- The Jobs API is currently in **Alpha** and subject to change +- The Jobs API is **stable** as of Dapr 1.18 (the SDK falls back to the `*_alpha1` RPCs on older sidecars) - Jobs are persistent and will survive Dapr sidecar restarts - Job names must be unique within the Dapr application - Both `schedule` and `due_time` are optional - if neither is provided, the job will trigger immediately diff --git a/examples/jobs/job_management.py b/examples/jobs/job_management.py index fb088d3b1..cf9fca45d 100644 --- a/examples/jobs/job_management.py +++ b/examples/jobs/job_management.py @@ -20,7 +20,7 @@ def main(): simple_job = Job(name='simple-job', schedule='@every 30s') try: - client.schedule_job_alpha1(job=simple_job, overwrite=True) + client.schedule_job(job=simple_job, overwrite=True) print('✓ Simple job scheduled successfully', flush=True) except Exception as e: print(f'✗ Failed to schedule simple job: {e}', flush=True) @@ -37,7 +37,7 @@ def main(): ) try: - client.schedule_job_alpha1(job=recurring_job, overwrite=True) + client.schedule_job(job=recurring_job, overwrite=True) print('✓ Recurring job scheduled successfully', flush=True) except Exception as e: print(f'✗ Failed to schedule recurring job: {e}', flush=True) @@ -53,7 +53,7 @@ def main(): ) try: - client.schedule_job_alpha1(one_time_job) + client.schedule_job(one_time_job) print('✓ One-time job scheduled successfully', flush=True) except Exception as e: print(f'✗ Failed to schedule one-time job: {e}', flush=True) @@ -71,7 +71,7 @@ def main(): ) try: - client.schedule_job_alpha1(job=drop_policy_job, overwrite=True) + client.schedule_job(job=drop_policy_job, overwrite=True) print('✓ Job with drop failure policy scheduled successfully', flush=True) except Exception as e: print(f'✗ Failed to schedule job with drop policy: {e}', flush=True) @@ -85,7 +85,7 @@ def main(): ) try: - client.schedule_job_alpha1(job=constant_policy_job, overwrite=True) + client.schedule_job(job=constant_policy_job, overwrite=True) print('✓ Job with constant retry policy scheduled successfully', flush=True) except Exception as e: print(f'✗ Failed to schedule job with retry policy: {e}', flush=True) @@ -93,7 +93,7 @@ def main(): # Example 4: Get job details print('\n4. Getting job details...', flush=True) try: - job = client.get_job_alpha1('recurring-hello-job') + job = client.get_job('recurring-hello-job') print('✓ Retrieved job details:', flush=True) print(f' - Name: {job.name}', flush=True) print(f' - Schedule: {job.schedule}', flush=True) @@ -119,7 +119,7 @@ def main(): 'retry-policy-job', ]: try: - client.delete_job_alpha1(job_name) + client.delete_job(job_name) print(f'✓ Deleted job: {job_name}', flush=True) except Exception as e: print(f'✗ Failed to delete job {job_name}: {e}', flush=True) diff --git a/examples/jobs/job_processing.py b/examples/jobs/job_processing.py index 6d384cbb0..657e532d1 100644 --- a/examples/jobs/job_processing.py +++ b/examples/jobs/job_processing.py @@ -98,7 +98,7 @@ def schedule_jobs(): # Job 1: Simple hello job (no data) print(f'Scheduling hello-job for {due_time_1}...', flush=True) hello_job = Job(name='hello-job', due_time=due_time_1) - client.schedule_job_alpha1(hello_job) + client.schedule_job(hello_job) print('✓ hello-job scheduled', flush=True) # Job 2: Data processing job (with JSON data) @@ -116,7 +116,7 @@ def schedule_jobs(): data=create_job_data(job_data), failure_policy=ConstantFailurePolicy(max_retries=2, interval_seconds=5), ) - client.schedule_job_alpha1(data_job) + client.schedule_job(data_job) print('✓ data-job scheduled', flush=True) print('Jobs scheduled! Waiting for execution...', flush=True) diff --git a/ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py b/ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py index 3d9fcdb28..a729fab8e 100644 --- a/ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py +++ b/ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py @@ -247,7 +247,7 @@ def OnBindingEvent(self, request: BindingEventRequest, context): # TODO: support output bindings options return appcallback_v1.BindingEventResponse() - def OnJobEventAlpha1(self, request: JobEventRequest, context): + def _handle_job_event(self, request: JobEventRequest, context): """Handles job events from Dapr runtime. This method is called by Dapr when a scheduled job is triggered. @@ -280,6 +280,14 @@ def OnJobEventAlpha1(self, request: JobEventRequest, context): # Return empty response return appcallback_v1.JobEventResponse() + def OnJobEvent(self, request: JobEventRequest, context): + """Handles job events on the stable AppCallback service.""" + return self._handle_job_event(request, context) + + def OnJobEventAlpha1(self, request: JobEventRequest, context): + """Handles job events on the deprecated AppCallbackAlpha service.""" + return self._handle_job_event(request, context) + def _handle_bulk_topic_event( self, request: TopicEventBulkRequest, context ) -> Optional[TopicEventBulkResponse]: diff --git a/ext/dapr-ext-grpc/tests/test_servicier.py b/ext/dapr-ext-grpc/tests/test_servicier.py index 1d362ea52..1fe18c5dc 100644 --- a/ext/dapr-ext-grpc/tests/test_servicier.py +++ b/ext/dapr-ext-grpc/tests/test_servicier.py @@ -361,5 +361,35 @@ def test_non_registered_binding(self): ) +class JobEventTests(unittest.TestCase): + def setUp(self): + self._servicer = _CallbackServicer() + self._handler = Mock() + self._servicer.register_job_event('test-job', self._handler) + self.fake_context = MagicMock() + + def _request(self, name='test-job', payload=b'hello'): + return appcallback_v1.JobEventRequest(name=name, data=GrpcAny(value=payload)) + + def test_on_job_event_stable_routes_to_handler(self): + resp = self._servicer.OnJobEvent(self._request(), self.fake_context) + + self.assertIsInstance(resp, appcallback_v1.JobEventResponse) + self._handler.assert_called_once() + job_event = self._handler.call_args[0][0] + self.assertEqual(job_event.name, 'test-job') + self.assertEqual(job_event.get_data_as_string(), 'hello') + + def test_on_job_event_alpha1_routes_to_same_handler(self): + resp = self._servicer.OnJobEventAlpha1(self._request(), self.fake_context) + + self.assertIsInstance(resp, appcallback_v1.JobEventResponse) + self._handler.assert_called_once() + + def test_non_registered_job_event(self): + with self.assertRaises(NotImplementedError): + self._servicer.OnJobEvent(self._request(name='unknown-job'), self.fake_context) + + if __name__ == '__main__': unittest.main() diff --git a/tests/clients/fake_dapr_server.py b/tests/clients/fake_dapr_server.py index 9f2204c16..0e1be06b1 100644 --- a/tests/clients/fake_dapr_server.py +++ b/tests/clients/fake_dapr_server.py @@ -28,6 +28,9 @@ def __init__(self, grpc_port: int = 50001, http_port: int = 8080): self.metadata: Dict[str, str] = {} self.jobs: Dict[str, api_v1.Job] = {} self.job_overwrites: Dict[str, bool] = {} + # When True the stable Job RPCs return UNIMPLEMENTED so the client must + # fall back to the *Alpha1 RPCs (emulates a pre-1.18 sidecar). + self.jobs_alpha_only = False self._next_exception = None # When set, the next BulkPublishEvent call returns this many entries as failed. self._bulk_publish_fail_next: Optional[Tuple[int, str]] = None @@ -578,49 +581,68 @@ def ConverseAlpha2(self, request, context): outputs=outputs, ) - def ScheduleJobAlpha1(self, request, context): + def _reject_if_alpha_only(self, context): + """Aborts with UNIMPLEMENTED when emulating a pre-1.18 sidecar.""" + if self.jobs_alpha_only: + context.abort(grpc.StatusCode.UNIMPLEMENTED, 'stable Jobs API not implemented') + + def _schedule_job(self, request, context): self.check_for_exception(context) - # Validate job name if not request.job.name: raise ValueError('Job name is required') - # Validate job name if not request.job.schedule and not request.job.due_time: raise ValueError('Schedule is empty') - # Store the job self.jobs[request.job.name] = request.job self.job_overwrites[request.job.name] = request.overwrite return empty_pb2.Empty() - def GetJobAlpha1(self, request, context): + def _get_job(self, request, context): self.check_for_exception(context) - # Validate job name if not request.name: raise ValueError('Job name is required') - # Check if job exists if request.name not in self.jobs: raise Exception(f'Job "{request.name}" not found') return api_v1.GetJobResponse(job=self.jobs[request.name]) - def DeleteJobAlpha1(self, request, context): + def _delete_job(self, request, context): self.check_for_exception(context) - # Validate job name if not request.name: raise ValueError('Job name is required') - # Check if job exists (optional - some implementations might not error) if request.name in self.jobs: del self.jobs[request.name] return empty_pb2.Empty() + def ScheduleJob(self, request, context): + self._reject_if_alpha_only(context) + return self._schedule_job(request, context) + + def GetJob(self, request, context): + self._reject_if_alpha_only(context) + return self._get_job(request, context) + + def DeleteJob(self, request, context): + self._reject_if_alpha_only(context) + return self._delete_job(request, context) + + def ScheduleJobAlpha1(self, request, context): + return self._schedule_job(request, context) + + def GetJobAlpha1(self, request, context): + return self._get_job(request, context) + + def DeleteJobAlpha1(self, request, context): + return self._delete_job(request, context) + def SetMetadata(self, request: api_v1.SetMetadataRequest, context): self.metadata[request.key] = request.value return empty_pb2.Empty() diff --git a/tests/clients/test_dapr_grpc_client.py b/tests/clients/test_dapr_grpc_client.py index 6f989fa4b..c90b6fd50 100644 --- a/tests/clients/test_dapr_grpc_client.py +++ b/tests/clients/test_dapr_grpc_client.py @@ -1545,16 +1545,16 @@ def test_converse_alpha2_tool_choice_specific(self): self.assertEqual(choice.finish_reason, 'tool_calls') # - # Tests for Jobs API (Alpha) + # Tests for Jobs API # - def test_schedule_job_alpha1_success(self): + def test_schedule_job_success(self): """Test successful job scheduling.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') job = Job(name='test-job', schedule='@every 1m') # Schedule the job - response = dapr.schedule_job_alpha1(job) + response = dapr.schedule_job(job) # Verify response type self.assertIsInstance(response, DaprResponse) @@ -1569,13 +1569,13 @@ def test_schedule_job_alpha1_success(self): # Verify data field is always set (even if empty) self.assertTrue(stored_job.HasField('data')) - def test_schedule_job_alpha1_success_with_overwrite(self): + def test_schedule_job_success_with_overwrite(self): """Test successful job scheduling.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') job = Job(name='test-job', schedule='@every 1m') # Schedule the job - response = dapr.schedule_job_alpha1(job=job, overwrite=True) + response = dapr.schedule_job(job=job, overwrite=True) # Verify response type self.assertIsInstance(response, DaprResponse) @@ -1590,7 +1590,7 @@ def test_schedule_job_alpha1_success_with_overwrite(self): # Verify data field is always set (even if empty) self.assertTrue(stored_job.HasField('data')) - def test_schedule_job_alpha1_success_with_data(self): + def test_schedule_job_success_with_data(self): """Test successful job scheduling with data payload.""" from google.protobuf.any_pb2 import Any as GrpcAny @@ -1603,7 +1603,7 @@ def test_schedule_job_alpha1_success_with_data(self): job = Job(name='test-job-with-data', schedule='@every 2m', data=data, repeats=3, ttl='10m') # Schedule the job - response = dapr.schedule_job_alpha1(job) + response = dapr.schedule_job(job) # Verify response type self.assertIsInstance(response, DaprResponse) @@ -1623,30 +1623,30 @@ def test_schedule_job_alpha1_success_with_data(self): stored_job.data.value, b'{"message": "Hello from job!", "priority": "high"}' ) - def test_schedule_job_alpha1_validation_error(self): + def test_schedule_job_validation_error(self): """Test validation error in job scheduling.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') # Test empty job name - this should be caught by client validation with self.assertRaises(ValueError): job = Job(name='', schedule='@every 1m') - dapr.schedule_job_alpha1(job) + dapr.schedule_job(job) # Test missing schedule and due_time - this should be caught by client validation with self.assertRaises(ValueError): job = Job(name='test-job') - dapr.schedule_job_alpha1(job) + dapr.schedule_job(job) - def test_get_job_alpha1_success(self): + def test_get_job_success(self): """Test successful job retrieval.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') # First schedule a job original_job = Job(name='test-job', schedule='@every 1m', repeats=5, ttl='1h') - dapr.schedule_job_alpha1(original_job) + dapr.schedule_job(original_job) # Now retrieve it - retrieved_job = dapr.get_job_alpha1('test-job') + retrieved_job = dapr.get_job('test-job') # Verify response self.assertIsInstance(retrieved_job, Job) @@ -1655,33 +1655,33 @@ def test_get_job_alpha1_success(self): self.assertEqual(retrieved_job.repeats, 5) self.assertEqual(retrieved_job.ttl, '1h') - def test_get_job_alpha1_validation_error(self): + def test_get_job_validation_error(self): """Test validation error in job retrieval.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') with self.assertRaises(ValueError): - dapr.get_job_alpha1('') + dapr.get_job('') - def test_get_job_alpha1_not_found(self): + def test_get_job_not_found(self): """Test getting a job that doesn't exist.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') with self.assertRaises(DaprGrpcError): - dapr.get_job_alpha1('non-existent-job') + dapr.get_job('non-existent-job') - def test_delete_job_alpha1_success(self): + def test_delete_job_success(self): """Test successful job deletion.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') # First schedule a job job = Job(name='test-job', schedule='@every 1m') - dapr.schedule_job_alpha1(job) + dapr.schedule_job(job) # Verify job exists self.assertIn('test-job', self._fake_dapr_server.jobs) # Delete the job - response = dapr.delete_job_alpha1('test-job') + response = dapr.delete_job('test-job') # Verify response self.assertIsInstance(response, DaprResponse) @@ -1689,12 +1689,12 @@ def test_delete_job_alpha1_success(self): # Verify job was removed from fake server self.assertNotIn('test-job', self._fake_dapr_server.jobs) - def test_delete_job_alpha1_validation_error(self): + def test_delete_job_validation_error(self): """Test validation error in job deletion.""" dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') with self.assertRaises(ValueError): - dapr.delete_job_alpha1('') + dapr.delete_job('') def test_jobs_error_handling(self): """Test error handling for Jobs API using fake server's exception mechanism.""" @@ -1709,7 +1709,41 @@ def test_jobs_error_handling(self): # Try to schedule a job - should raise DaprGrpcError job = Job(name='error-test', schedule='@every 1m') with self.assertRaises(DaprGrpcError): + dapr.schedule_job(job) + + def test_jobs_fall_back_to_alpha_when_stable_unimplemented(self): + """If the sidecar lacks the stable Job RPCs, the client retries Alpha1.""" + dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') + self._fake_dapr_server.jobs_alpha_only = True + + try: + dapr.schedule_job(Job(name='fallback-job', schedule='@every 1m')) + self.assertIn('fallback-job', self._fake_dapr_server.jobs) + + retrieved = dapr.get_job('fallback-job') + self.assertEqual(retrieved.name, 'fallback-job') + + dapr.delete_job('fallback-job') + self.assertNotIn('fallback-job', self._fake_dapr_server.jobs) + finally: + self._fake_dapr_server.jobs_alpha_only = False + + def test_job_alpha1_methods_are_deprecated_aliases(self): + """The *_alpha1 methods still work but emit a DeprecationWarning.""" + dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') + job = Job(name='alpha-alias-job', schedule='@every 1m') + + with self.assertWarns(DeprecationWarning): dapr.schedule_job_alpha1(job) + self.assertIn('alpha-alias-job', self._fake_dapr_server.jobs) + + with self.assertWarns(DeprecationWarning): + retrieved = dapr.get_job_alpha1('alpha-alias-job') + self.assertEqual(retrieved.name, 'alpha-alias-job') + + with self.assertWarns(DeprecationWarning): + dapr.delete_job_alpha1('alpha-alias-job') + self.assertNotIn('alpha-alias-job', self._fake_dapr_server.jobs) def _capture_grpc_channel_options(self, **client_kwargs) -> dict[str, object]: with ( diff --git a/tests/clients/test_dapr_grpc_client_async.py b/tests/clients/test_dapr_grpc_client_async.py index 851b08748..2c4972dcb 100644 --- a/tests/clients/test_dapr_grpc_client_async.py +++ b/tests/clients/test_dapr_grpc_client_async.py @@ -1530,16 +1530,16 @@ async def test_converse_alpha2_tool_choice_specific(self): await dapr.close() # - # Tests for Jobs API (Alpha) - Async + # Tests for Jobs API - Async # - async def test_schedule_job_alpha1_success(self): + async def test_schedule_job_success(self): """Test successful async job scheduling.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') job = Job(name='async-test-job', schedule='@every 1m') # Schedule the job - response = await dapr.schedule_job_alpha1(job) + response = await dapr.schedule_job(job) # Verify response type self.assertIsInstance(response, DaprResponse) @@ -1556,13 +1556,13 @@ async def test_schedule_job_alpha1_success(self): await dapr.close() - async def test_schedule_job_alpha1_success_with_overwrite(self): + async def test_schedule_job_success_with_overwrite(self): """Test successful async job scheduling.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') job = Job(name='async-test-job', schedule='@every 1m') # Schedule the job with overwrite - response = await dapr.schedule_job_alpha1(job=job, overwrite=True) + response = await dapr.schedule_job(job=job, overwrite=True) # Verify response type self.assertIsInstance(response, DaprResponse) @@ -1579,7 +1579,7 @@ async def test_schedule_job_alpha1_success_with_overwrite(self): await dapr.close() - async def test_schedule_job_alpha1_success_with_data(self): + async def test_schedule_job_success_with_data(self): """Test successful async job scheduling with data payload.""" from google.protobuf.any_pb2 import Any as GrpcAny @@ -1594,7 +1594,7 @@ async def test_schedule_job_alpha1_success_with_data(self): ) # Schedule the job - response = await dapr.schedule_job_alpha1(job) + response = await dapr.schedule_job(job) # Verify response type self.assertIsInstance(response, DaprResponse) @@ -1617,19 +1617,19 @@ async def test_schedule_job_alpha1_success_with_data(self): await dapr.close() - async def test_schedule_job_alpha1_validation_error(self): + async def test_schedule_job_validation_error(self): """Test async validation error in job scheduling.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') # Test empty job name - this should be caught by client validation with self.assertRaises(ValueError): job = Job(name='', schedule='@every 1m') - await dapr.schedule_job_alpha1(job) + await dapr.schedule_job(job) # Test missing schedule and due_time - this should be caught by client validation with self.assertRaises(ValueError): job = Job(name='async-test-job') - await dapr.schedule_job_alpha1(job) + await dapr.schedule_job(job) await dapr.close() @@ -1646,20 +1646,20 @@ async def test_schedule_jobs_error_handling(self): # Try to schedule a job - should raise DaprGrpcError job = Job(name='async-error-test', schedule='@every 1m') with self.assertRaises(DaprGrpcError): - await dapr.schedule_job_alpha1(job) + await dapr.schedule_job(job) await dapr.close() - async def test_get_job_alpha1_success(self): + async def test_get_job_success(self): """Test successful async job retrieval.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') # First schedule a job original_job = Job(name='async-get-test-job', schedule='@every 1m', repeats=5, ttl='1h') - await dapr.schedule_job_alpha1(original_job) + await dapr.schedule_job(original_job) # Now retrieve it - retrieved_job = await dapr.get_job_alpha1('async-get-test-job') + retrieved_job = await dapr.get_job('async-get-test-job') # Verify response self.assertIsInstance(retrieved_job, Job) @@ -1670,16 +1670,16 @@ async def test_get_job_alpha1_success(self): await dapr.close() - async def test_get_job_alpha1_validation_error(self): + async def test_get_job_validation_error(self): """Test async validation error in job retrieval.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') with self.assertRaises(ValueError): - await dapr.get_job_alpha1('') + await dapr.get_job('') await dapr.close() - async def test_get_job_alpha1_not_found(self): + async def test_get_job_not_found(self): """Test async getting a job that doesn't exist.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') @@ -1689,23 +1689,23 @@ async def test_get_job_alpha1_not_found(self): ) with self.assertRaises(DaprGrpcError): - await dapr.get_job_alpha1('async-non-existent-job') + await dapr.get_job('async-non-existent-job') await dapr.close() - async def test_delete_job_alpha1_success(self): + async def test_delete_job_success(self): """Test successful async job deletion.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') # First schedule a job job = Job(name='async-delete-test-job', schedule='@every 1m') - await dapr.schedule_job_alpha1(job) + await dapr.schedule_job(job) # Verify job exists self.assertIn('async-delete-test-job', self._fake_dapr_server.jobs) # Delete the job - response = await dapr.delete_job_alpha1('async-delete-test-job') + response = await dapr.delete_job('async-delete-test-job') # Verify response self.assertIsInstance(response, DaprResponse) @@ -1715,12 +1715,12 @@ async def test_delete_job_alpha1_success(self): await dapr.close() - async def test_delete_job_alpha1_validation_error(self): + async def test_delete_job_validation_error(self): """Test async validation error in job deletion.""" dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') with self.assertRaises(ValueError): - await dapr.delete_job_alpha1('') + await dapr.delete_job('') await dapr.close() @@ -1743,11 +1743,11 @@ async def test_job_lifecycle(self): ) # 1. Schedule the job - schedule_response = await dapr.schedule_job_alpha1(job=job, overwrite=True) + schedule_response = await dapr.schedule_job(job=job, overwrite=True) self.assertIsInstance(schedule_response, DaprResponse) # 2. Get the job and verify all fields - retrieved_job = await dapr.get_job_alpha1('async-lifecycle-job') + retrieved_job = await dapr.get_job('async-lifecycle-job') self.assertEqual(retrieved_job.name, 'async-lifecycle-job') self.assertEqual(retrieved_job.schedule, '@every 5m') self.assertEqual(retrieved_job.repeats, 10) @@ -1755,7 +1755,7 @@ async def test_job_lifecycle(self): self.assertEqual(retrieved_job.data.value, b'{"lifecycle": "test"}') # 3. Delete the job - delete_response = await dapr.delete_job_alpha1('async-lifecycle-job') + delete_response = await dapr.delete_job('async-lifecycle-job') self.assertIsInstance(delete_response, DaprResponse) # 4. Verify job is gone @@ -1763,6 +1763,43 @@ async def test_job_lifecycle(self): await dapr.close() + async def test_jobs_fall_back_to_alpha_when_stable_unimplemented(self): + """If the sidecar lacks the stable Job RPCs, the client retries Alpha1.""" + dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') + self._fake_dapr_server.jobs_alpha_only = True + + try: + await dapr.schedule_job(Job(name='async-fallback-job', schedule='@every 1m')) + self.assertIn('async-fallback-job', self._fake_dapr_server.jobs) + + retrieved = await dapr.get_job('async-fallback-job') + self.assertEqual(retrieved.name, 'async-fallback-job') + + await dapr.delete_job('async-fallback-job') + self.assertNotIn('async-fallback-job', self._fake_dapr_server.jobs) + finally: + self._fake_dapr_server.jobs_alpha_only = False + await dapr.close() + + async def test_job_alpha1_methods_are_deprecated_aliases(self): + """The *_alpha1 methods still work but emit a DeprecationWarning.""" + dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') + job = Job(name='async-alpha-alias-job', schedule='@every 1m') + + with self.assertWarns(DeprecationWarning): + await dapr.schedule_job_alpha1(job) + self.assertIn('async-alpha-alias-job', self._fake_dapr_server.jobs) + + with self.assertWarns(DeprecationWarning): + retrieved = await dapr.get_job_alpha1('async-alpha-alias-job') + self.assertEqual(retrieved.name, 'async-alpha-alias-job') + + with self.assertWarns(DeprecationWarning): + await dapr.delete_job_alpha1('async-alpha-alias-job') + self.assertNotIn('async-alpha-alias-job', self._fake_dapr_server.jobs) + + await dapr.close() + def _capture_grpc_channel_options(self, **client_kwargs) -> dict[str, object]: with ( patch('dapr.aio.clients.grpc.client.grpc.aio.secure_channel') as mock_secure, diff --git a/tests/integration/AGENTS.md b/tests/integration/AGENTS.md index ecf417582..36f2b606d 100644 --- a/tests/integration/AGENTS.md +++ b/tests/integration/AGENTS.md @@ -84,7 +84,7 @@ Each test file defines its own module-scoped fixture (`client` or `sidecar`) tha | `test_metadata.py` | Metadata | `get_metadata`, `set_metadata` | | `test_distributed_lock.py` | Distributed lock | `try_lock`, `unlock`, context manager | | `test_configuration.py` | Configuration | `get_configuration`, `subscribe_configuration`, `unsubscribe_configuration` | -| `test_jobs.py` | Jobs scheduler | `schedule_job_alpha1`, `get_job_alpha1`, `delete_job_alpha1` | +| `test_jobs.py` | Jobs scheduler | `schedule_job`, `get_job`, `delete_job` | | `test_invoke_binding.py` | Output bindings | `invoke_binding` (create/get/delete against `bindings.localstorage`) | | `test_crypto.py` | Cryptography | `encrypt`, `decrypt` (RSA + AES round-trips against `crypto.dapr.localstorage`) | | `test_conversation.py` | Conversation | `converse_alpha1`, `converse_alpha2` against `conversation.echo` | @@ -105,7 +105,7 @@ Async counterparts exercise `dapr.aio.clients.DaprClient` (the gRPC async client | `test_configuration_async.py` | `get_configuration` | | `test_distributed_lock_async.py` | `try_lock`, `unlock` | | `test_metadata_async.py` | `get_metadata`, `set_metadata` | -| `test_jobs_async.py` | `schedule_job_alpha1`, `get_job_alpha1`, `delete_job_alpha1` | +| `test_jobs_async.py` | `schedule_job`, `get_job`, `delete_job` | | `test_crypto_async.py` | `encrypt`, `decrypt` | | `test_conversation_async.py` | `converse_alpha1`, `converse_alpha2` | diff --git a/tests/integration/test_jobs.py b/tests/integration/test_jobs.py index e93e99989..90504a7d6 100644 --- a/tests/integration/test_jobs.py +++ b/tests/integration/test_jobs.py @@ -38,51 +38,51 @@ def test_schedule_then_get_returns_job(client): name = unique_name(prefix='sync-job-') due = _future(days=365) - client.schedule_job_alpha1(Job(name=name, due_time=due)) + client.schedule_job(Job(name=name, due_time=due)) try: - retrieved = client.get_job_alpha1(name=name) + retrieved = client.get_job(name=name) assert retrieved.name == name assert retrieved.due_time == due except Exception as exc: - raise AssertionError(f'get_job_alpha1 did not return scheduled job {name}') from exc + raise AssertionError(f'get_job did not return scheduled job {name}') from exc finally: - client.delete_job_alpha1(name=name) + client.delete_job(name=name) def test_delete_removes_job(client): name = unique_name(prefix='sync-job-del-') due = _future(days=365) - client.schedule_job_alpha1(Job(name=name, due_time=due)) - client.delete_job_alpha1(name=name) + client.schedule_job(Job(name=name, due_time=due)) + client.delete_job(name=name) with pytest.raises(DaprGrpcError): - client.get_job_alpha1(name=name) + client.get_job(name=name) def test_schedule_with_recurring_schedule(client): name = unique_name(prefix='sync-job-recurring-') schedule = '@every 1h' - client.schedule_job_alpha1(Job(name=name, schedule=schedule, repeats=10)) + client.schedule_job(Job(name=name, schedule=schedule, repeats=10)) try: - retrieved = client.get_job_alpha1(name=name) + retrieved = client.get_job(name=name) assert retrieved.schedule == schedule assert retrieved.repeats == 10 except Exception as exc: raise AssertionError(f'Recurring schedule failed for job {name}') from exc finally: - client.delete_job_alpha1(name=name) + client.delete_job(name=name) def test_schedule_without_schedule_or_due_time_raises(client): with pytest.raises(ValueError): - client.schedule_job_alpha1(Job(name=unique_name(prefix='sync-job-bad-'))) + client.schedule_job(Job(name=unique_name(prefix='sync-job-bad-'))) def test_schedule_with_blank_name_raises(client): with pytest.raises(ValueError): - client.schedule_job_alpha1(Job(name='', due_time=_future(days=1))) + client.schedule_job(Job(name='', due_time=_future(days=1))) def test_overwrite_replaces_existing_job(client): @@ -90,12 +90,12 @@ def test_overwrite_replaces_existing_job(client): initial_due = _future(days=30) updated_due = _future(days=60) - client.schedule_job_alpha1(Job(name=name, due_time=initial_due)) + client.schedule_job(Job(name=name, due_time=initial_due)) try: - client.schedule_job_alpha1(Job(name=name, due_time=updated_due), overwrite=True) - retrieved = client.get_job_alpha1(name=name) + client.schedule_job(Job(name=name, due_time=updated_due), overwrite=True) + retrieved = client.get_job(name=name) assert retrieved.due_time == updated_due except Exception as exc: raise AssertionError(f'overwrite=True did not replace due_time for job {name}') from exc finally: - client.delete_job_alpha1(name=name) + client.delete_job(name=name) diff --git a/tests/integration/test_jobs_async.py b/tests/integration/test_jobs_async.py index ce07ae3e9..1433345c5 100644 --- a/tests/integration/test_jobs_async.py +++ b/tests/integration/test_jobs_async.py @@ -42,15 +42,15 @@ async def test_schedule_then_get_returns_job(sidecar): due = _future(days=365) async with AsyncDaprClient(address=GRPC_ADDRESS) as d: - await d.schedule_job_alpha1(Job(name=name, due_time=due)) + await d.schedule_job(Job(name=name, due_time=due)) try: - retrieved = await d.get_job_alpha1(name=name) + retrieved = await d.get_job(name=name) assert retrieved.name == name assert retrieved.due_time == due except Exception as exc: - raise AssertionError(f'get_job_alpha1 did not return scheduled job {name}') from exc + raise AssertionError(f'get_job did not return scheduled job {name}') from exc finally: - await d.delete_job_alpha1(name=name) + await d.delete_job(name=name) async def test_delete_removes_job(sidecar): @@ -58,8 +58,8 @@ async def test_delete_removes_job(sidecar): due = _future(days=365) async with AsyncDaprClient(address=GRPC_ADDRESS) as d: - await d.schedule_job_alpha1(Job(name=name, due_time=due)) - await d.delete_job_alpha1(name=name) + await d.schedule_job(Job(name=name, due_time=due)) + await d.delete_job(name=name) with pytest.raises(DaprGrpcError): - await d.get_job_alpha1(name=name) + await d.get_job(name=name) From 105d631690d1d3741b645a4cfddbfbe718fb6631 Mon Sep 17 00:00:00 2001 From: Cassie Coyle Date: Wed, 27 May 2026 08:58:09 -0500 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Cassie Coyle --- examples/jobs/README.md | 2 +- tests/clients/fake_dapr_server.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/jobs/README.md b/examples/jobs/README.md index 433575826..23da67b45 100644 --- a/examples/jobs/README.md +++ b/examples/jobs/README.md @@ -252,7 +252,7 @@ The callback service must: - The Jobs API is **stable** as of Dapr 1.18 (the SDK falls back to the `*_alpha1` RPCs on older sidecars) - Jobs are persistent and will survive Dapr sidecar restarts - Job names must be unique within the Dapr application -- Both `schedule` and `due_time` are optional - if neither is provided, the job will trigger immediately +- At least one of `schedule` or `due_time` must be provided when scheduling a job - Requires Dapr runtime v1.14+ for Jobs API support For more information about the Jobs API, see: diff --git a/tests/clients/fake_dapr_server.py b/tests/clients/fake_dapr_server.py index 0e1be06b1..4b54f0379 100644 --- a/tests/clients/fake_dapr_server.py +++ b/tests/clients/fake_dapr_server.py @@ -598,7 +598,7 @@ def _schedule_job(self, request, context): self.jobs[request.job.name] = request.job self.job_overwrites[request.job.name] = request.overwrite - return empty_pb2.Empty() + return api_v1.ScheduleJobResponse() def _get_job(self, request, context): self.check_for_exception(context) @@ -620,7 +620,7 @@ def _delete_job(self, request, context): if request.name in self.jobs: del self.jobs[request.name] - return empty_pb2.Empty() + return api_v1.DeleteJobResponse() def ScheduleJob(self, request, context): self._reject_if_alpha_only(context)