@@ -71,23 +71,16 @@ async def fetch_provider_machines(
7171 # machines being returned — not resource-level discovery which returns all
7272 # ASG/fleet instances including unrelated ones.
7373 if request .request_type .value == "return" and request .machine_ids :
74- resource_mapping = self ._build_return_resource_mapping (request , db_machines )
75- resource_ids = {
76- resource_id
77- for resource_id , _ordinal in resource_mapping .values ()
78- if resource_id not in (None , "" )
79- }
74+ resource_id = self ._resolve_return_resource_id (request , db_machines )
8075 operation_type = ProviderOperationType .GET_INSTANCE_STATUS
8176 parameters = {
8277 "instance_ids" : request .machine_ids ,
8378 "provider_api" : request .provider_api ,
8479 "template_id" : request .template_id ,
8580 "request_metadata" : self ._build_request_metadata (request ),
8681 }
87- if resource_mapping :
88- parameters ["resource_mapping" ] = resource_mapping
89- if len (resource_ids ) == 1 :
90- parameters ["resource_id" ] = next (iter (resource_ids ))
82+ if resource_id :
83+ parameters ["resource_id" ] = resource_id
9184 # Use resource-level discovery for acquire requests (handles scaling/replacement)
9285 elif request .resource_ids :
9386 operation_type = ProviderOperationType .DESCRIBE_RESOURCE_INSTANCES
@@ -212,27 +205,28 @@ def _resolve_instance_resource_id(
212205 return str (resource_id )
213206 return ""
214207
215- def _build_return_resource_mapping (
208+ def _resolve_return_resource_id (
216209 self ,
217210 request : Request ,
218211 db_machines : list [Machine ],
219- ) -> dict [str , tuple [str , int ]]:
220- """Map return-request machine IDs to resource IDs using DB state and follow-up context."""
221- mapping : dict [str , tuple [str , int ]] = {}
212+ ) -> str :
213+ """Resolve the single resource ID for a return status request."""
214+ resource_ids : set [str ] = set ()
215+ requested_ids = {str (machine_id ) for machine_id in request .machine_ids }
222216
223217 for machine in db_machines :
224218 resource_id = machine .resource_id
225219 machine_id = machine .machine_id .value
226220 if resource_id in (None , "" ) or machine_id in (None , "" ):
227221 continue
228- mapping [str (machine_id )] = (str (resource_id ), 1 )
222+ if str (machine_id ) in requested_ids :
223+ resource_ids .add (str (resource_id ))
229224
230225 request_metadata = self ._build_request_metadata (request )
231226 termination_requests = request_metadata .get ("termination_requests" )
232227 if not isinstance (termination_requests , list ):
233- return mapping
228+ return next ( iter ( resource_ids )) if len ( resource_ids ) == 1 else ""
234229
235- requested_ids = {str (machine_id ) for machine_id in request .machine_ids }
236230 for termination_request in termination_requests :
237231 if not isinstance (termination_request , dict ):
238232 continue
@@ -251,9 +245,9 @@ def _build_return_resource_mapping(
251245 for machine_id in pending_machine_ids :
252246 machine_id_str = str (machine_id )
253247 if machine_id_str and machine_id_str in requested_ids :
254- mapping . setdefault ( machine_id_str , ( str (resource_id ), 1 ))
248+ resource_ids . add ( str (resource_id ))
255249
256- return mapping
250+ return next ( iter ( resource_ids )) if len ( resource_ids ) == 1 else ""
257251
258252 def _create_machine_from_processed_data (
259253 self , processed_data : dict , request : Request
0 commit comments