dynamo_runtime/
instances.rs

1// SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2// SPDX-License-Identifier: Apache-2.0
3
4//! Instance management functions for the distributed runtime.
5//!
6//! This module provides functionality to list and manage instances across
7//! the entire distributed system, complementing the component-specific
8//! instance listing in `component.rs`.
9
10use std::sync::Arc;
11
12use crate::component::Instance;
13use crate::discovery::{Discovery, DiscoveryQuery};
14
15pub async fn list_all_instances(
16    discovery_client: Arc<dyn Discovery>,
17) -> anyhow::Result<Vec<Instance>> {
18    let discovery_instances = discovery_client.list(DiscoveryQuery::AllEndpoints).await?;
19
20    let mut instances: Vec<Instance> = discovery_instances
21        .into_iter()
22        .filter_map(|di| match di {
23            crate::discovery::DiscoveryInstance::Endpoint(instance) => Some(instance),
24            _ => None, // Ignore all other variants (ModelCard, etc.)
25        })
26        .collect();
27
28    instances.sort();
29
30    Ok(instances)
31}