Skip to content

Commit 9f52b0a

Browse files
committed
Improvements to list method on aws and gcp
1 parent a8d6d33 commit 9f52b0a

File tree

2 files changed

+26
-15
lines changed

2 files changed

+26
-15
lines changed

runner_manager/backend/aws.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ def delete(self, runner: Runner):
5555
raise e
5656
return super().delete(runner)
5757

58-
def _get_instance_name(self, instance: InstanceTypeDef) -> str:
59-
"""Get the instance name."""
60-
name = ""
58+
def _get_tag_value(
59+
self, instance: InstanceTypeDef, key: str, default: str = ""
60+
) -> str:
61+
"""Get the tag value."""
6162
for tag in instance.get("Tags", []):
62-
if tag.get("Key") == "Name":
63-
name = tag.get("Value", "")
64-
return name
63+
if tag.get("Key") == key:
64+
return tag.get("Value", default)
65+
return default
6566

6667
def list(self) -> List[Runner]:
6768
"""List runners."""
@@ -81,7 +82,7 @@ def list(self) -> List[Runner]:
8182
for reservation in reservations:
8283
for instance in reservation.get("Instances", []):
8384
instance_id = instance.get("InstanceId", "")
84-
name = self._get_instance_name(instance)
85+
name = self._get_tag_value(instance, "Name", instance_id)
8586
try:
8687
runner = Runner.find(
8788
Runner.instance_id == instance_id,
@@ -91,8 +92,10 @@ def list(self) -> List[Runner]:
9192
name=name,
9293
instance_id=instance_id,
9394
runner_group_name=self.runner_group,
94-
busy=False,
95+
busy=bool(self._get_tag_value(instance, "busy")),
96+
status=self._get_tag_value(instance, "status", "online"),
9597
created_at=instance.get("LaunchTime"),
98+
started_at=instance.get("LaunchTime"),
9699
)
97100
runners.append(runner)
98101
return runners

runner_manager/backend/gcloud.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
ZoneOperationsClient,
2626
)
2727
from pydantic import Field
28+
from redis_om import NotFoundError
2829

2930
from runner_manager.backend.base import BaseBackend
3031
from runner_manager.models.backend import Backends, GCPConfig, GCPInstanceConfig
@@ -256,13 +257,20 @@ def list(self) -> List[Runner]:
256257
manager = instance.labels.get("manager", "")
257258
runner_group = instance.labels.get("runner_group", "")
258259
if manager == self.manager and runner_group == self.runner_group:
259-
runner: Runner = Runner(
260-
name=instance.name,
261-
instance_id=instance.name,
262-
runner_group_name=self.runner_group,
263-
busy=bool(instance.labels.get("busy", False)),
264-
created_at=instance.creation_timestamp,
265-
)
260+
try:
261+
runner = Runner.find(
262+
Runner.name == instance.name,
263+
).first()
264+
except NotFoundError:
265+
runner: Runner = Runner(
266+
name=instance.name,
267+
instance_id=instance.name,
268+
runner_group_name=self.runner_group,
269+
busy=bool(instance.labels.get("busy", False)),
270+
status=instance.labels.get("status", "online"),
271+
created_at=instance.creation_timestamp,
272+
started_at=instance.creation_timestamp,
273+
)
266274
runners.append(runner)
267275

268276
except Exception as e:

0 commit comments

Comments
 (0)