55import random
66import threading
77
8- from typing import Any , Iterator , Optional
8+ from typing import Iterator , Optional
99
1010from azure .core .credentials import TokenCredential
1111from azure .identity import ManagedIdentityCredential
1212
13- from durabletask import task
1413from durabletask .azuremanaged .internal import sandbox_service_pb2 as pb
1514from durabletask .azuremanaged .preview .sandboxes .helpers import SandboxActivity
1615from durabletask .azuremanaged .preview .sandboxes .helpers import resolve_activities
2625import durabletask .internal .orchestrator_service_pb2 as worker_pb
2726import durabletask .internal .shared as shared
2827from durabletask .worker import (
29- ActivityWorkItemFilter ,
3028 ConcurrencyOptions ,
3129 WorkItemFilters ,
3230)
@@ -73,18 +71,6 @@ def __init__(self) -> None:
7371 self ._sandbox_active_activities = 0
7472 self ._sandbox_active_activities_lock = threading .Lock ()
7573
76- def add_activity (
77- self ,
78- fn : task .Activity [Any , Any ],
79- ** kwargs : Any ) -> str :
80- version = kwargs .pop ("version" , None )
81- if kwargs :
82- unexpected = next (iter (kwargs ))
83- raise TypeError (f"Unexpected keyword argument: { unexpected } " )
84- activity_name = super ().add_activity (fn )
85- self ._sandbox_activities .append (SandboxActivity (activity_name , version ))
86- return activity_name
87-
8874 def start (self ) -> None :
8975 self ._configure_sandbox_activity_filters ()
9076 super ().start ()
@@ -103,17 +89,20 @@ def _on_activity_execution_completed(self, req: worker_pb.ActivityRequest) -> No
10389 self ._sandbox_active_activities = max (0 , self ._sandbox_active_activities - 1 )
10490
10591 def _configure_sandbox_activity_filters (self ) -> None :
106- activities = resolve_activities (self ._sandbox_activities )
92+ registered_filters = WorkItemFilters ._from_registry (self ._registry ) # pyright: ignore[reportPrivateUsage]
93+ activities = resolve_activities ([
94+ SandboxActivity (activity_filter .name , version )
95+ for activity_filter in registered_filters .activities
96+ for version in (activity_filter .versions or [None ])
97+ ])
10798 if not activities :
10899 raise RuntimeError (
109100 "Sandbox worker requires at least one registered activity before it can register." )
110101
111102 self ._sandbox_activities = activities
112103 self .use_work_item_filters (WorkItemFilters (
113104 orchestrations = [],
114- activities = [ActivityWorkItemFilter (
115- name = activity .name ,
116- versions = [] if activity .version is None else [activity .version ]) for activity in activities ],
105+ activities = registered_filters .activities ,
117106 entities = []))
118107
119108 def _start_sandbox_registration (self ) -> None :
0 commit comments