Skip to content

Commit 8307fe3

Browse files
committed
added filter params to get_compute_resources, simplify example
1 parent 01c8d54 commit 8307fe3

File tree

2 files changed

+35
-72
lines changed

2 files changed

+35
-72
lines changed

datacrunch/containers/containers.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,17 +868,27 @@ def delete_deployment_environment_variables(self, deployment_name: str, containe
868868
env_var) for env_var in env_vars]
869869
return result
870870

871-
def get_compute_resources(self) -> List[ComputeResource]:
872-
"""Retrieves available compute resources.
871+
def get_compute_resources(self, size: int = None, is_available: bool = None) -> List[ComputeResource]:
872+
"""Retrieves compute resources, optionally filtered by size and availability.
873+
874+
Args:
875+
size: Optional size to filter resources by (e.g. 8 for 8x GPUs)
876+
available: Optional boolean to filter by availability status
873877
874878
Returns:
875-
List[ComputeResource]: List of available compute resources.
879+
List[ComputeResource]: List of compute resources matching the filters.
880+
If no filters provided, returns all resources.
876881
"""
877882
response = self.client.get(SERVERLESS_COMPUTE_RESOURCES_ENDPOINT)
878883
resources = []
879884
for resource_group in response.json():
880885
for resource in resource_group:
881886
resources.append(ComputeResource.from_dict(resource))
887+
if size:
888+
resources = [r for r in resources if r.size == size]
889+
if is_available:
890+
resources = [
891+
r for r in resources if r.is_available == is_available]
882892
return resources
883893

884894
# Function alias
Lines changed: 22 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,29 @@
11
import os
22
from datacrunch import DataCrunchClient
3-
from typing import List
4-
from datacrunch.containers.containers import ComputeResource
53

64
# Get client secret and id from environment variables
75
DATACRUNCH_CLIENT_ID = os.environ.get('DATACRUNCH_CLIENT_ID')
86
DATACRUNCH_CLIENT_SECRET = os.environ.get('DATACRUNCH_CLIENT_SECRET')
97

10-
11-
def list_all_compute_resources(client: DataCrunchClient) -> List[ComputeResource]:
12-
"""List all available compute resources.
13-
14-
Args:
15-
client (DataCrunchClient): The DataCrunch API client.
16-
17-
Returns:
18-
List[ComputeResource]: List of all compute resources.
19-
"""
20-
return client.containers.get_compute_resources()
21-
22-
23-
def list_available_compute_resources(client: DataCrunchClient) -> List[ComputeResource]:
24-
"""List only the available compute resources.
25-
26-
Args:
27-
client (DataCrunchClient): The DataCrunch API client.
28-
29-
Returns:
30-
List[ComputeResource]: List of available compute resources.
31-
"""
32-
all_resources = client.containers.get_compute_resources()
33-
return [r for r in all_resources if r.is_available]
34-
35-
36-
def list_compute_resources_by_size(client: DataCrunchClient, size: int) -> List[ComputeResource]:
37-
"""List compute resources filtered by size.
38-
39-
Args:
40-
client (DataCrunchClient): The DataCrunch API client.
41-
size (int): The size to filter by.
42-
43-
Returns:
44-
List[ComputeResource]: List of compute resources with the specified size.
45-
"""
46-
all_resources = client.containers.get_compute_resources()
47-
return [r for r in all_resources if r.size == size]
48-
49-
50-
def main():
51-
# Initialize the client with your credentials
52-
datacrunch = DataCrunchClient(
53-
DATACRUNCH_CLIENT_ID, DATACRUNCH_CLIENT_SECRET)
54-
55-
# Example 1: List all compute resources
56-
print("All compute resources:")
57-
all_resources = list_all_compute_resources(datacrunch)
58-
for resource in all_resources:
59-
print(
60-
f"Name: {resource.name}, Size: {resource.size}, Available: {resource.is_available}")
61-
62-
# Example 2: List available compute resources
63-
print("Available compute resources:")
64-
available_resources = list_available_compute_resources(datacrunch)
65-
for resource in available_resources:
66-
print(f"Name: {resource.name}, Size: {resource.size}")
67-
68-
# Example 3: List compute resources of size 8
69-
print("Compute resources with size 8:")
70-
size_8_resources = list_compute_resources_by_size(datacrunch, 8)
71-
for resource in size_8_resources:
72-
print(f"Name: {resource.name}, Available: {resource.is_available}")
73-
74-
75-
if __name__ == "__main__":
76-
main()
8+
# Initialize the client with your credentials
9+
datacrunch = DataCrunchClient(DATACRUNCH_CLIENT_ID, DATACRUNCH_CLIENT_SECRET)
10+
11+
# Example 1: List all compute resources
12+
print("All compute resources:")
13+
all_resources = datacrunch.containers.get_compute_resources()
14+
for resource in all_resources:
15+
print(
16+
f"Name: {resource.name}, Size: {resource.size}, Available: {resource.is_available}")
17+
18+
# Example 2: List available compute resources
19+
print("\nAvailable compute resources:")
20+
available_resources = datacrunch.containers.get_compute_resources(
21+
is_available=True)
22+
for resource in available_resources:
23+
print(f"Name: {resource.name}, Size: {resource.size}")
24+
25+
# Example 3: List compute resources of size 8
26+
print("\nCompute resources with size 8:")
27+
size_8_resources = datacrunch.containers.get_compute_resources(size=8)
28+
for resource in size_8_resources:
29+
print(f"Name: {resource.name}, Available: {resource.is_available}")

0 commit comments

Comments
 (0)