-
Notifications
You must be signed in to change notification settings - Fork 29
Add Azure Managed on-demand sandbox preview APIs #151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 59 commits
Commits
Show all changes
60 commits
Select commit
Hold shift + click to select a range
8d80529
feat: Add serverless activities support with new gRPC service and client
YunchuWang b502afb
Remove serverless worker wakeup listener
YunchuWang 79e8c92
refactor: Rename DurableTaskSchedulerServerlessWorker to ServerlessWo…
YunchuWang 31218f3
remove public pull
YunchuWang ea10305
Align serverless declarations with dotnet
YunchuWang ad041de
Rename serverless to on-demand-sandbox APIs
YunchuWang b741449
Use gRPC status for serverless worker registration
YunchuWang a50ea45
Add on-demand sandbox preview package
YunchuWang d33077c
Fix on-demand sandbox preview layout
YunchuWang 0e56d02
Remove unrelated Python PR noise
YunchuWang 4c692f0
Restore unrelated repo files
YunchuWang 7a93746
rename
YunchuWang 9d409d6
Introduce activity hooks; update on-demand worker
YunchuWang 5ecc8f8
Address on-demand sandbox review feedback
YunchuWang eb1d6c3
Simplify sandbox container image options
YunchuWang ce19f8a
Merge branch 'main' into wangbill/serverless-op1
YunchuWang f5fd86b
Simplify sandbox worker activity tracking
YunchuWang e4b1b5a
Separate sandbox management client from worker transport
YunchuWang 5094781
Split on-demand sandbox client modules
YunchuWang cd6994e
Address on-demand sandbox review comments
YunchuWang 28c04b0
Remove duplicate sandbox normalization helper
YunchuWang f4376b9
Move sandbox normalization helpers to private module
YunchuWang 3af18ca
Rename sandbox normalization module to helpers
YunchuWang dd611af
Update sandbox helper imports
YunchuWang f79b78b
Use standard helpers module name
YunchuWang a31e605
Simplify on-demand sandbox worker sample wait
YunchuWang 30bbe86
Potential fix for pull request finding 'Empty except'
YunchuWang 445c8af
Potential fix for pull request finding
YunchuWang 080ca1b
Potential fix for pull request finding
YunchuWang e8ee577
Potential fix for pull request finding
YunchuWang f35524d
Fix on-demand sandbox CI checks
YunchuWang 146da0d
Align sandbox transport stub typing
YunchuWang 50f5631
Align sandbox worker hook annotations
YunchuWang 4385ef8
Resolve sandbox transport code quality comments
YunchuWang 5eef77a
Require matching core SDK for sandbox worker
YunchuWang 9ea00af
Update generated protobuf files from durabletask-protobuf@98e1384
YunchuWang 46d63fd
Align generated protos with protobuf PR
YunchuWang d3f1f99
Regenerate proto without exclude activity filters
YunchuWang 0deae2a
Validate on-demand sandbox substrate
YunchuWang 950c3ef
Rename sandbox preview API
YunchuWang fdf908a
remove default worker profile
YunchuWang db28f3f
Align sandbox preview behavior with dotnet
YunchuWang 732fd59
Update sandbox proto source path
YunchuWang 47517af
Tighten sandbox activity metadata validation
YunchuWang ee33bb6
Apply sandbox image proto updates
YunchuWang 660101d
Rename sandbox declarations to worker profiles
YunchuWang 587b8cc
Add sandbox activity versions to worker profiles
YunchuWang 0ecfaaf
Sync sandbox proto hash and simplify activity hooks
YunchuWang 37513f8
Clarify sandbox preview wording
YunchuWang 34c7f8c
Merge branch 'main' into wangbill/serverless-op1
YunchuWang 2ccbf85
Align sandbox preview APIs with dotnet
YunchuWang eba60e4
Fix sandbox worker pyright override
YunchuWang a2480f5
Merge main and align sandbox options
YunchuWang ea40f0c
Default sandbox sample activities to unversioned
YunchuWang 1e9ed95
Use base worker activity registration for sandboxes
YunchuWang 27d2745
Split sandbox profile builders
YunchuWang 883fb3d
save
YunchuWang b4e5c33
save
YunchuWang 7f063fd
Retry failed precondition sandbox registrations
YunchuWang ecc6422
Tighten sandbox changelog wording
YunchuWang File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
durabletask-azuremanaged/durabletask/azuremanaged/internal/SANDBOX_PROTO_SOURCE_COMMIT_HASH
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| 67a2f1d3b9ea8a210eb86addb636a5d8a6484dbc |
55 changes: 55 additions & 0 deletions
55
durabletask-azuremanaged/durabletask/azuremanaged/internal/sandbox_service_pb2.py
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
119 changes: 119 additions & 0 deletions
119
durabletask-azuremanaged/durabletask/azuremanaged/internal/sandbox_service_pb2.pyi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,119 @@ | ||
| from google.protobuf.internal import containers as _containers | ||
| from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper | ||
| from google.protobuf import descriptor as _descriptor | ||
| from google.protobuf import message as _message | ||
| from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union | ||
|
|
||
| DESCRIPTOR: _descriptor.FileDescriptor | ||
|
|
||
| class SandboxProviderKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): | ||
| __slots__ = () | ||
| SANDBOX_PROVIDER_KIND_UNSPECIFIED: _ClassVar[SandboxProviderKind] | ||
| SANDBOX_PROVIDER_KIND_ACA_SESSION_POOL: _ClassVar[SandboxProviderKind] | ||
| SANDBOX_PROVIDER_KIND_SANDBOX: _ClassVar[SandboxProviderKind] | ||
| SANDBOX_PROVIDER_KIND_UNSPECIFIED: SandboxProviderKind | ||
| SANDBOX_PROVIDER_KIND_ACA_SESSION_POOL: SandboxProviderKind | ||
| SANDBOX_PROVIDER_KIND_SANDBOX: SandboxProviderKind | ||
|
|
||
| class SandboxActivityWorkerMessage(_message.Message): | ||
| __slots__ = ("start", "heartbeat") | ||
| START_FIELD_NUMBER: _ClassVar[int] | ||
| HEARTBEAT_FIELD_NUMBER: _ClassVar[int] | ||
| start: SandboxActivityWorkerStart | ||
| heartbeat: SandboxActivityWorkerHeartbeat | ||
| def __init__(self, start: _Optional[_Union[SandboxActivityWorkerStart, _Mapping]] = ..., heartbeat: _Optional[_Union[SandboxActivityWorkerHeartbeat, _Mapping]] = ...) -> None: ... | ||
|
|
||
| class SandboxActivityWorkerStart(_message.Message): | ||
| __slots__ = ("task_hub", "max_activities_count", "sandbox_provider", "dts_sandbox_identifier", "worker_profile_id", "activities") | ||
| TASK_HUB_FIELD_NUMBER: _ClassVar[int] | ||
| MAX_ACTIVITIES_COUNT_FIELD_NUMBER: _ClassVar[int] | ||
| SANDBOX_PROVIDER_FIELD_NUMBER: _ClassVar[int] | ||
| DTS_SANDBOX_IDENTIFIER_FIELD_NUMBER: _ClassVar[int] | ||
| WORKER_PROFILE_ID_FIELD_NUMBER: _ClassVar[int] | ||
| ACTIVITIES_FIELD_NUMBER: _ClassVar[int] | ||
| task_hub: str | ||
| max_activities_count: int | ||
| sandbox_provider: SandboxProviderKind | ||
| dts_sandbox_identifier: str | ||
| worker_profile_id: str | ||
| activities: _containers.RepeatedCompositeFieldContainer[SandboxActivity] | ||
| def __init__(self, task_hub: _Optional[str] = ..., max_activities_count: _Optional[int] = ..., sandbox_provider: _Optional[_Union[SandboxProviderKind, str]] = ..., dts_sandbox_identifier: _Optional[str] = ..., worker_profile_id: _Optional[str] = ..., activities: _Optional[_Iterable[_Union[SandboxActivity, _Mapping]]] = ...) -> None: ... | ||
|
|
||
| class SandboxActivityWorkerHeartbeat(_message.Message): | ||
| __slots__ = ("active_activities_count",) | ||
| ACTIVE_ACTIVITIES_COUNT_FIELD_NUMBER: _ClassVar[int] | ||
| active_activities_count: int | ||
| def __init__(self, active_activities_count: _Optional[int] = ...) -> None: ... | ||
|
|
||
| class SandboxActivityWorkerSessionResult(_message.Message): | ||
| __slots__ = ("message",) | ||
| MESSAGE_FIELD_NUMBER: _ClassVar[int] | ||
| message: str | ||
| def __init__(self, message: _Optional[str] = ...) -> None: ... | ||
|
|
||
| class SandboxWorkerProfile(_message.Message): | ||
| __slots__ = ("worker_profile_id", "activities", "image", "environment_variables", "max_concurrent_activities", "resources", "scheduler_managed_identity_client_id") | ||
| class EnvironmentVariablesEntry(_message.Message): | ||
| __slots__ = ("key", "value") | ||
| KEY_FIELD_NUMBER: _ClassVar[int] | ||
| VALUE_FIELD_NUMBER: _ClassVar[int] | ||
| key: str | ||
| value: str | ||
| def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... | ||
| WORKER_PROFILE_ID_FIELD_NUMBER: _ClassVar[int] | ||
| ACTIVITIES_FIELD_NUMBER: _ClassVar[int] | ||
| IMAGE_FIELD_NUMBER: _ClassVar[int] | ||
| ENVIRONMENT_VARIABLES_FIELD_NUMBER: _ClassVar[int] | ||
| MAX_CONCURRENT_ACTIVITIES_FIELD_NUMBER: _ClassVar[int] | ||
| RESOURCES_FIELD_NUMBER: _ClassVar[int] | ||
| SCHEDULER_MANAGED_IDENTITY_CLIENT_ID_FIELD_NUMBER: _ClassVar[int] | ||
| worker_profile_id: str | ||
| activities: _containers.RepeatedCompositeFieldContainer[SandboxActivity] | ||
| image: SandboxActivityImage | ||
| environment_variables: _containers.ScalarMap[str, str] | ||
| max_concurrent_activities: int | ||
| resources: SandboxActivityResources | ||
| scheduler_managed_identity_client_id: str | ||
| def __init__(self, worker_profile_id: _Optional[str] = ..., activities: _Optional[_Iterable[_Union[SandboxActivity, _Mapping]]] = ..., image: _Optional[_Union[SandboxActivityImage, _Mapping]] = ..., environment_variables: _Optional[_Mapping[str, str]] = ..., max_concurrent_activities: _Optional[int] = ..., resources: _Optional[_Union[SandboxActivityResources, _Mapping]] = ..., scheduler_managed_identity_client_id: _Optional[str] = ...) -> None: ... | ||
|
|
||
| class SandboxActivity(_message.Message): | ||
| __slots__ = ("name", "version") | ||
| NAME_FIELD_NUMBER: _ClassVar[int] | ||
| VERSION_FIELD_NUMBER: _ClassVar[int] | ||
| name: str | ||
| version: str | ||
| def __init__(self, name: _Optional[str] = ..., version: _Optional[str] = ...) -> None: ... | ||
|
|
||
| class SandboxActivityImage(_message.Message): | ||
| __slots__ = ("image_ref", "managed_identity_client_id", "entrypoint", "cmd") | ||
| IMAGE_REF_FIELD_NUMBER: _ClassVar[int] | ||
| MANAGED_IDENTITY_CLIENT_ID_FIELD_NUMBER: _ClassVar[int] | ||
| ENTRYPOINT_FIELD_NUMBER: _ClassVar[int] | ||
| CMD_FIELD_NUMBER: _ClassVar[int] | ||
| image_ref: str | ||
| managed_identity_client_id: str | ||
| entrypoint: _containers.RepeatedScalarFieldContainer[str] | ||
| cmd: _containers.RepeatedScalarFieldContainer[str] | ||
| def __init__(self, image_ref: _Optional[str] = ..., managed_identity_client_id: _Optional[str] = ..., entrypoint: _Optional[_Iterable[str]] = ..., cmd: _Optional[_Iterable[str]] = ...) -> None: ... | ||
|
|
||
| class SandboxActivityResources(_message.Message): | ||
| __slots__ = ("cpu", "memory") | ||
| CPU_FIELD_NUMBER: _ClassVar[int] | ||
| MEMORY_FIELD_NUMBER: _ClassVar[int] | ||
| cpu: str | ||
| memory: str | ||
| def __init__(self, cpu: _Optional[str] = ..., memory: _Optional[str] = ...) -> None: ... | ||
|
|
||
| class DeclareSandboxWorkerProfileResult(_message.Message): | ||
| __slots__ = () | ||
| def __init__(self) -> None: ... | ||
|
|
||
| class RemoveSandboxWorkerProfileRequest(_message.Message): | ||
| __slots__ = ("worker_profile_id",) | ||
| WORKER_PROFILE_ID_FIELD_NUMBER: _ClassVar[int] | ||
| worker_profile_id: str | ||
| def __init__(self, worker_profile_id: _Optional[str] = ...) -> None: ... | ||
|
|
||
| class RemoveSandboxWorkerProfileResult(_message.Message): | ||
| __slots__ = () | ||
| def __init__(self) -> None: ... |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.