Skip to content

Commit 196a76c

Browse files
authored
chore: rename cloud runner instance [DO NOT MERGE WITHOUT CHANGING BASE TO MAIN] (#608)
* chore: rename cloud-runner-manager to vm-manager * chore: rename cloud-runner-manager to vm-manager * chore: rename CloudRunnerInstance to VM * chore: rename cloud runner state
1 parent b2250c7 commit 196a76c

File tree

7 files changed

+53
-68
lines changed

7 files changed

+53
-68
lines changed

github-runner-manager/src/github_runner_manager/manager/runner_manager.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,7 @@
1414
from github_runner_manager import constants
1515
from github_runner_manager.errors import GithubMetricsError, RunnerError
1616
from github_runner_manager.manager.models import InstanceID, RunnerIdentity, RunnerMetadata
17-
from github_runner_manager.manager.vm_manager import (
18-
CloudRunnerInstance,
19-
CloudRunnerManager,
20-
CloudRunnerState,
21-
HealthState,
22-
)
17+
from github_runner_manager.manager.vm_manager import VM, CloudRunnerManager, HealthState, VMState
2318
from github_runner_manager.metrics import events as metric_events
2419
from github_runner_manager.metrics import github as github_metrics
2520
from github_runner_manager.metrics import runner as runner_metrics
@@ -78,12 +73,12 @@ class RunnerInstance:
7873
metadata: RunnerMetadata
7974
health: HealthState
8075
platform_state: PlatformRunnerState | None
81-
cloud_state: CloudRunnerState
76+
cloud_state: VMState
8277

8378
@classmethod
8479
def from_cloud_and_platform_health(
8580
cls,
86-
cloud_instance: CloudRunnerInstance,
81+
cloud_instance: VM,
8782
platform_health_state: PlatformRunnerHealth | None,
8883
) -> "RunnerInstance":
8984
"""Construct an instance.
@@ -96,7 +91,7 @@ def from_cloud_and_platform_health(
9691
The RunnerInstance instantiated from cloud instance and platform state.
9792
"""
9893
return cls(
99-
name=cloud_instance.name,
94+
name=cloud_instance.instance_id.name,
10095
instance_id=cloud_instance.instance_id,
10196
metadata=cloud_instance.metadata,
10297
health=cloud_instance.health,
@@ -317,7 +312,7 @@ def _cleanup_resources(
317312

318313
def _delete_cloud_runners(
319314
self,
320-
cloud_runners: Sequence[CloudRunnerInstance],
315+
cloud_runners: Sequence[VM],
321316
runners_health: Sequence[PlatformRunnerHealth],
322317
delete_busy_runners: bool = False,
323318
) -> Iterable[runner_metrics.RunnerMetrics]:
@@ -551,7 +546,7 @@ def _create_runner(args: _CreateRunnerArgs) -> InstanceID:
551546

552547

553548
def _filter_runner_to_delete(
554-
cloud_runner: CloudRunnerInstance,
549+
cloud_runner: VM,
555550
health: PlatformRunnerHealth | None,
556551
*,
557552
clean_idle: bool = False,
@@ -598,7 +593,7 @@ def _filter_runner_to_delete(
598593

599594

600595
def _runner_deletion_sort_key(
601-
health_runners_map: dict[InstanceID, PlatformRunnerHealth], cloud_runner: CloudRunnerInstance
596+
health_runners_map: dict[InstanceID, PlatformRunnerHealth], cloud_runner: VM
602597
) -> int:
603598
"""Order the runners in accordance to how inconvenient it is to delete them.
604599

github-runner-manager/src/github_runner_manager/manager/vm_manager.py

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class HealthState(Enum):
3636
UNKNOWN = auto()
3737

3838

39-
class CloudRunnerState(str, Enum):
39+
class VMState(str, Enum):
4040
"""Represent state of the instance hosting the runner.
4141
4242
Attributes:
@@ -61,7 +61,7 @@ class CloudRunnerState(str, Enum):
6161
@staticmethod
6262
def from_openstack_server_status( # pragma: no cover
6363
openstack_server_status: str,
64-
) -> "CloudRunnerState":
64+
) -> "VMState":
6565
"""Create from openstack server status.
6666
6767
The openstack server status are documented here:
@@ -73,45 +73,43 @@ def from_openstack_server_status( # pragma: no cover
7373
Returns:
7474
The state of the runner.
7575
"""
76-
state = CloudRunnerState.UNEXPECTED
76+
state = VMState.UNEXPECTED
7777
match openstack_server_status:
7878
case "BUILD":
79-
state = CloudRunnerState.CREATED
79+
state = VMState.CREATED
8080
case "REBUILD":
81-
state = CloudRunnerState.CREATED
81+
state = VMState.CREATED
8282
case "ACTIVE":
83-
state = CloudRunnerState.ACTIVE
83+
state = VMState.ACTIVE
8484
case "ERROR":
85-
state = CloudRunnerState.ERROR
85+
state = VMState.ERROR
8686
case "STOPPED":
87-
state = CloudRunnerState.STOPPED
87+
state = VMState.STOPPED
8888
case "DELETED":
89-
state = CloudRunnerState.DELETED
89+
state = VMState.DELETED
9090
case "UNKNOWN":
91-
state = CloudRunnerState.UNKNOWN
91+
state = VMState.UNKNOWN
9292
case _:
93-
state = CloudRunnerState.UNEXPECTED
93+
state = VMState.UNEXPECTED
9494
return state
9595

9696

9797
@dataclass
98-
class CloudRunnerInstance:
98+
class VM:
9999
"""Information on the runner on the cloud.
100100
101101
Attributes:
102-
name: Name of the instance hosting the runner.
103102
instance_id: ID of the instance.
104103
metadata: Metadata of the runner.
105104
health: Health state of the runner.
106105
state: State of the instance hosting the runner.
107106
created_at: Creation time of the runner in the cloud provider.
108107
"""
109108

110-
name: str
111109
instance_id: InstanceID
112110
metadata: RunnerMetadata
113111
health: HealthState
114-
state: CloudRunnerState
112+
state: VMState
115113
created_at: datetime
116114

117115
def is_older_than(self, seconds: float) -> bool:
@@ -221,7 +219,7 @@ def create_runner(
221219
self,
222220
runner_identity: RunnerIdentity,
223221
runner_context: RunnerContext,
224-
) -> CloudRunnerInstance:
222+
) -> VM:
225223
"""Create a self-hosted runner.
226224
227225
Args:
@@ -230,7 +228,7 @@ def create_runner(
230228
"""
231229

232230
@abc.abstractmethod
233-
def get_runners(self) -> Sequence[CloudRunnerInstance]:
231+
def get_runners(self) -> Sequence[VM]:
234232
"""Get cloud self-hosted runners."""
235233

236234
@abc.abstractmethod

github-runner-manager/src/github_runner_manager/openstack_cloud/openstack_runner_manager.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@
1818
)
1919
from github_runner_manager.manager.models import InstanceID, RunnerContext, RunnerIdentity
2020
from github_runner_manager.manager.runner_manager import HealthState
21-
from github_runner_manager.manager.vm_manager import (
22-
CloudRunnerInstance,
23-
CloudRunnerManager,
24-
CloudRunnerState,
25-
RunnerMetrics,
26-
)
21+
from github_runner_manager.manager.vm_manager import VM, CloudRunnerManager, RunnerMetrics, VMState
2722
from github_runner_manager.metrics import runner as runner_metrics
2823
from github_runner_manager.openstack_cloud.constants import (
2924
CREATE_SERVER_TIMEOUT,
@@ -94,7 +89,7 @@ def create_runner(
9489
self,
9590
runner_identity: RunnerIdentity,
9691
runner_context: RunnerContext,
97-
) -> CloudRunnerInstance:
92+
) -> VM:
9893
"""Create a self-hosted runner.
9994
10095
Args:
@@ -127,7 +122,7 @@ def create_runner(
127122
logger.info("Runner %s created successfully", instance.instance_id)
128123
return self._build_cloud_runner_instance(instance)
129124

130-
def get_runners(self) -> Sequence[CloudRunnerInstance]:
125+
def get_runners(self) -> Sequence[VM]:
131126
"""Get cloud self-hosted runners.
132127
133128
Returns:
@@ -140,15 +135,14 @@ def cleanup(self) -> None:
140135
"""Cleanup runner and resource on the cloud."""
141136
self._openstack_cloud.delete_expired_keys()
142137

143-
def _build_cloud_runner_instance(self, instance: OpenstackInstance) -> CloudRunnerInstance:
138+
def _build_cloud_runner_instance(self, instance: OpenstackInstance) -> VM:
144139
"""Build a new cloud runner instance from an openstack instance."""
145140
metadata = instance.metadata
146-
return CloudRunnerInstance(
147-
name=instance.instance_id.name,
141+
return VM(
148142
metadata=metadata,
149143
instance_id=instance.instance_id,
150144
health=HealthState.UNKNOWN,
151-
state=CloudRunnerState.from_openstack_server_status(instance.status),
145+
state=VMState.from_openstack_server_status(instance.status),
152146
created_at=instance.created_at,
153147
)
154148

github-runner-manager/tests/unit/factories/runner_instance_factory.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010

1111
from github_runner_manager.manager.models import InstanceID, RunnerIdentity, RunnerMetadata
1212
from github_runner_manager.manager.runner_manager import RunnerInstance
13-
from github_runner_manager.manager.vm_manager import CloudRunnerInstance, CloudRunnerState
13+
from github_runner_manager.manager.vm_manager import VM
1414
from github_runner_manager.manager.vm_manager import HealthState as CloudHelathState
15+
from github_runner_manager.manager.vm_manager import VMState
1516
from github_runner_manager.platform.platform_provider import (
1617
PlatformRunnerHealth,
1718
PlatformRunnerState,
@@ -63,17 +64,16 @@ class Meta:
6364
model: The metadata reference model.
6465
"""
6566

66-
model = CloudRunnerInstance
67+
model = VM
6768

68-
name = factory.Faker("word")
6969
instance_id = factory.SubFactory(InstanceIDFactory)
7070
metadata = factory.SubFactory(RunnerMetadataFactory)
7171
health = CloudHelathState.HEALTHY
72-
state = CloudRunnerState.ACTIVE
72+
state = VMState.ACTIVE
7373
created_at = factory.LazyFunction(lambda: datetime.now(tz=timezone.utc))
7474

7575
@classmethod
76-
def from_self_hosted_runner(cls, self_hosted_runner: SelfHostedRunner) -> CloudRunnerInstance:
76+
def from_self_hosted_runner(cls, self_hosted_runner: SelfHostedRunner) -> VM:
7777
"""Construct CloudRunnerInstance associated to self hosted runner.
7878
7979
Args:
@@ -142,11 +142,11 @@ class Meta:
142142
platform_state = platform_state = factory.LazyFunction(
143143
lambda: secrets.choice(list(PlatformRunnerState))
144144
)
145-
cloud_state = CloudRunnerState.ACTIVE
145+
cloud_state = VMState.ACTIVE
146146

147147
@classmethod
148148
def from_state(
149-
cls, cloud_runner: CloudRunnerInstance, platform_health: PlatformRunnerHealth | None = None
149+
cls, cloud_runner: VM, platform_health: PlatformRunnerHealth | None = None
150150
) -> RunnerInstance:
151151
"""Generate RunnerInstance from cloud runner and platform runner states.
152152
@@ -158,7 +158,7 @@ def from_state(
158158
The generated RunnerInstance.
159159
"""
160160
return RunnerInstance(
161-
name=cloud_runner.name,
161+
name=cloud_runner.instance_id.name,
162162
instance_id=cloud_runner.instance_id,
163163
metadata=cloud_runner.metadata,
164164
health=cloud_runner.health,

github-runner-manager/tests/unit/fake_runner_managers.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
RunnerIdentity,
1313
RunnerMetadata,
1414
)
15-
from github_runner_manager.manager.vm_manager import CloudRunnerInstance, CloudRunnerManager
15+
from github_runner_manager.manager.vm_manager import VM, CloudRunnerManager
1616
from github_runner_manager.metrics.runner import RunnerMetrics
1717
from github_runner_manager.openstack_cloud.openstack_cloud import _MAX_NOVA_COMPUTE_API_VERSION
1818
from github_runner_manager.platform.platform_provider import (
@@ -108,17 +108,15 @@ def name_prefix(self) -> str:
108108
"""The naming prefix for runners managed."""
109109
return "fake_cloud_runner_manager"
110110

111-
def __init__(self, initial_cloud_runners: list[CloudRunnerInstance]) -> None:
111+
def __init__(self, initial_cloud_runners: list[VM]) -> None:
112112
"""Initialize the Cloud Runner Manager.
113113
114114
Args:
115115
initial_cloud_runners: A list of initial Cloud Runner Instances.
116116
"""
117117
self._cloud_runners = {runner.instance_id: runner for runner in initial_cloud_runners}
118118

119-
def create_runner(
120-
self, runner_identity: RunnerIdentity, runner_context: RunnerContext
121-
) -> CloudRunnerInstance:
119+
def create_runner(self, runner_identity: RunnerIdentity, runner_context: RunnerContext) -> VM:
122120
"""Create a runner instance for the given runner identity and context.
123121
124122
Args:
@@ -132,7 +130,7 @@ def create_runner(
132130
self._cloud_runners[runner_identity.instance_id] = created_runner
133131
return created_runner
134132

135-
def get_runners(self) -> Sequence[CloudRunnerInstance]:
133+
def get_runners(self) -> Sequence[VM]:
136134
"""Get all the cloud runner instances managed by the manager.
137135
138136
Returns:

github-runner-manager/tests/unit/manager/test_runner_manager.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from github_runner_manager.manager.models import RunnerMetadata
1111
from github_runner_manager.manager.runner_manager import FlushMode, RunnerInstance, RunnerManager
12-
from github_runner_manager.manager.vm_manager import CloudRunnerInstance, CloudRunnerManager
12+
from github_runner_manager.manager.vm_manager import VM, CloudRunnerManager
1313
from github_runner_manager.platform.platform_provider import PlatformProvider
1414
from github_runner_manager.types_.github import SelfHostedRunner
1515
from tests.unit.factories.runner_instance_factory import (
@@ -94,9 +94,9 @@
9494
)
9595
def test_flush_runners(
9696
initial_runners: list[SelfHostedRunner],
97-
initial_cloud_runners: list[CloudRunnerInstance],
97+
initial_cloud_runners: list[VM],
9898
expected_runners: list[SelfHostedRunner],
99-
expected_cloud_runners: list[CloudRunnerInstance],
99+
expected_cloud_runners: list[VM],
100100
flush_mode: FlushMode,
101101
):
102102
"""
@@ -168,9 +168,9 @@ def test_flush_runners(
168168
)
169169
def test_runner_maanger_cleanup(
170170
initial_runners: list[SelfHostedRunner],
171-
initial_cloud_runners: list[CloudRunnerInstance],
171+
initial_cloud_runners: list[VM],
172172
expected_runners: list[SelfHostedRunner],
173-
expected_cloud_runners: list[CloudRunnerInstance],
173+
expected_cloud_runners: list[VM],
174174
):
175175
"""
176176
arrange: Given GitHub runners and Cloud runners.
@@ -226,7 +226,7 @@ def test_runner_manager_create_runners() -> None:
226226
pytest.param(
227227
[],
228228
[cloud_runner := CloudRunnerInstanceFactory()],
229-
(RunnerInstanceFactory(name=cloud_runner.name),),
229+
(RunnerInstanceFactory(name=cloud_runner.instance_id.name),),
230230
id="cloud runner without platform runner",
231231
),
232232
pytest.param(
@@ -236,14 +236,14 @@ def test_runner_manager_create_runners() -> None:
236236
self_hosted_runner=runner_with_cloud
237237
)
238238
],
239-
(RunnerInstanceFactory(name=cloud_runner.name),),
239+
(RunnerInstanceFactory(name=cloud_runner.instance_id.name),),
240240
id="platform runner with cloud runner",
241241
),
242242
],
243243
)
244244
def test_runner_manager_get_runners(
245245
initial_runners: list[SelfHostedRunner],
246-
initial_cloud_runners: list[CloudRunnerInstance],
246+
initial_cloud_runners: list[VM],
247247
expected_runner_instances: tuple[RunnerInstance],
248248
):
249249
"""
@@ -295,10 +295,10 @@ def test_runner_manager_get_runners(
295295
)
296296
def test_runner_manager_deterministic_delete_runners(
297297
initial_runners: list[SelfHostedRunner],
298-
initial_cloud_runners: list[CloudRunnerInstance],
298+
initial_cloud_runners: list[VM],
299299
num_delete: int,
300300
expected_runners: list[SelfHostedRunner],
301-
expected_cloud_runners: list[CloudRunnerInstance],
301+
expected_cloud_runners: list[VM],
302302
):
303303
"""
304304
arrange: given initial runners (platform and cloud).
@@ -338,7 +338,7 @@ def test_runner_manager_deterministic_delete_runners(
338338
)
339339
def test_runner_manager_non_deterministic_delete_runners(
340340
initial_runners: list[SelfHostedRunner],
341-
initial_cloud_runners: list[CloudRunnerInstance],
341+
initial_cloud_runners: list[VM],
342342
num_delete: int,
343343
expected_runners_count: int,
344344
expected_cloud_runners_count: int,

0 commit comments

Comments
 (0)