Skip to content

Commit 16bed9a

Browse files
authored
chore: update jobmanager client (#579)
* regenerate openapi client * update endpoints in app * delete legacy files in jobmanager/client * add removal of current jobmanager client * update integration test * fix unit test * lint
1 parent d70f16e commit 16bed9a

File tree

57 files changed

+307
-2487
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+307
-2487
lines changed

github-runner-manager/src/github_runner_manager/platform/jobmanager_provider.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def get_runner_health(
7777
with jobmanager_client.ApiClient(configuration) as api_client:
7878
api_instance = jobmanager_client.RunnersApi(api_client)
7979
try:
80-
response = api_instance.get_runner_health_v1_runner_runner_id_health_get(
80+
response = api_instance.get_runner_health_v1_runners_runner_id_health_get(
8181
int(runner_identity.metadata.runner_id)
8282
)
8383
except NotFoundException:
@@ -174,24 +174,20 @@ def get_runner_context(
174174
with jobmanager_client.ApiClient(configuration) as api_client:
175175
api_instance = jobmanager_client.RunnersApi(api_client)
176176
try:
177-
runner_register_request = (
178-
jobmanager_client.RegisterRunnerV1RunnerRegisterPostRequest(
179-
name=instance_id.name, labels=labels
180-
)
177+
runner_register_request = jobmanager_client.RunnerCreate(
178+
name=instance_id.name, labels=labels
181179
)
182180

183-
response = api_instance.register_runner_v1_runner_register_post(
181+
response = api_instance.register_runner_v1_runners_register_post(
184182
runner_register_request
185183
)
186-
if not response.id:
187-
raise PlatformApiError("No runner ID from jobmanager API")
188184
updated_metadata = RunnerMetadata(
189185
platform_name=metadata.platform_name, url=self._url
190186
)
191187
updated_metadata.runner_id = str(response.id)
192188
if token := response.token:
193189
jobmanager_endpoint = (
194-
f"{self._url}/v1/runner/{updated_metadata.runner_id}/health"
190+
f"{self._url}/v1/runners/{updated_metadata.runner_id}/health"
195191
)
196192
# For now, use the first label
197193
label = "undefined"

github-runner-manager/tests/unit/platform/test_jobmanager_provider.py

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

1111
import pytest
1212
from jobmanager_client import (
13-
GetRunnerHealthV1RunnerRunnerIdHealthGet200Response,
14-
RegisterRunnerV1RunnerRegisterPost200Response,
13+
RunnerHealthResponse,
14+
RunnerRegisterResponse,
1515
)
16-
from jobmanager_client.models.job import Job
16+
from jobmanager_client.models.job_read import JobRead
1717
from jobmanager_client.rest import ApiException, NotFoundException
1818
from pydantic import BaseModel, HttpUrl
1919

@@ -39,9 +39,7 @@ def test_get_runner_context_succeeds(monkeypatch: pytest.MonkeyPatch):
3939
monkeypatch.setattr("jobmanager_client.ApiClient.call_api", call_api_mock)
4040
runner_id = random.randint(1, 1000)
4141
token = secrets.token_hex(16)
42-
call_api_mock.return_value = RegisterRunnerV1RunnerRegisterPost200Response(
43-
id=runner_id, token=token
44-
)
42+
call_api_mock.return_value = RunnerRegisterResponse(id=runner_id, token=token)
4543

4644
metadata = RunnerMetadata(platform_name="jobmanager", runner_id=None, url=None)
4745
instance_id = InstanceID.build(prefix="unit-0")
@@ -61,20 +59,10 @@ def test_get_runner_context_succeeds(monkeypatch: pytest.MonkeyPatch):
6159
"api_return_value, error_message",
6260
[
6361
pytest.param(
64-
RegisterRunnerV1RunnerRegisterPost200Response(id=random.randint(1, 10)),
65-
"Empty token",
66-
id="No token",
67-
),
68-
pytest.param(
69-
RegisterRunnerV1RunnerRegisterPost200Response(id=random.randint(1, 10), token=""),
62+
RunnerRegisterResponse(id=random.randint(1, 10), token=""),
7063
"Empty token",
7164
id="Empty token",
7265
),
73-
pytest.param(
74-
RegisterRunnerV1RunnerRegisterPost200Response(token=secrets.token_hex(16)),
75-
"No runner ID",
76-
id="No runner id",
77-
),
7866
pytest.param(ApiException, "API error", id="Exception from api"),
7967
],
8068
)
@@ -106,8 +94,28 @@ def test_get_runner_context_fails(
10694
@pytest.mark.parametrize(
10795
"api_return_value, picked_up",
10896
[
109-
pytest.param(Job(status=JobStatus.IN_PROGRESS.value), True, id="in progress job"),
110-
pytest.param(Job(status=JobStatus.PENDING.value), False, id="pending job"),
97+
pytest.param(
98+
JobRead(
99+
status=JobStatus.IN_PROGRESS.value,
100+
architecture="arm64",
101+
base_series="jammy",
102+
id=1,
103+
requested_by="foobar",
104+
),
105+
True,
106+
id="in progress job",
107+
),
108+
pytest.param(
109+
JobRead(
110+
status=JobStatus.PENDING.value,
111+
architecture="arm64",
112+
base_series="jammy",
113+
id=1,
114+
requested_by="foobar",
115+
),
116+
False,
117+
id="pending job",
118+
),
111119
],
112120
)
113121
def test_check_job_been_picked_up(monkeypatch: pytest.MonkeyPatch, api_return_value, picked_up):
@@ -208,7 +216,15 @@ def test_check_job_been_picked_up_job_url_validation_err(
208216
):
209217
call_api_mock = MagicMock()
210218
monkeypatch.setattr("jobmanager_client.ApiClient.call_api", call_api_mock)
211-
call_api_mock.side_effect = [Job(status=JobStatus.IN_PROGRESS.value)]
219+
call_api_mock.side_effect = [
220+
JobRead(
221+
status=JobStatus.IN_PROGRESS.value,
222+
architecture="arm64",
223+
base_series="jammy",
224+
id=1,
225+
requested_by="foobar",
226+
)
227+
]
212228

213229
platform = JobManagerPlatform(TEST_JOB_MANAGER_URL)
214230
metadata = RunnerMetadata(platform_name="jobmanager", runner_id="3", url=job_url)
@@ -257,10 +273,13 @@ def test_get_runner_health(
257273
call_api_mock = MagicMock()
258274
monkeypatch.setattr("jobmanager_client.ApiClient.call_api", call_api_mock)
259275

260-
api_return_value = GetRunnerHealthV1RunnerRunnerIdHealthGet200Response(
276+
api_return_value = RunnerHealthResponse(
261277
label="label",
262278
status=job_status,
263279
deletable=job_deletable,
280+
cpu_usage="10%",
281+
ram_usage="20%",
282+
disk_usage="30%",
264283
)
265284
call_api_mock.side_effect = [api_return_value]
266285

@@ -307,10 +326,13 @@ def test_get_runner_health(
307326
),
308327
],
309328
[
310-
GetRunnerHealthV1RunnerRunnerIdHealthGet200Response(
329+
RunnerHealthResponse(
311330
label="label",
312331
status="IN_PROGRESS",
313332
deletable=False,
333+
cpu_usage="10%",
334+
ram_usage="20%",
335+
disk_usage="30%",
314336
),
315337
ApiException,
316338
],
@@ -349,10 +371,13 @@ def test_get_runner_health(
349371
),
350372
],
351373
[
352-
GetRunnerHealthV1RunnerRunnerIdHealthGet200Response(
374+
RunnerHealthResponse(
353375
label="label",
354376
status="FAILED",
355377
deletable=True,
378+
cpu_usage="10%",
379+
ram_usage="20%",
380+
disk_usage="30%",
356381
),
357382
NotFoundException,
358383
],

jobmanager/client/.openapi-generator/FILES

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
.github/workflows/python.yml
22
.gitignore
33
.gitlab-ci.yml
4+
.openapi-generator-ignore
45
.travis.yml
56
README.md
67
docs/DefaultApi.md
7-
docs/GetRunnerHealthV1RunnerRunnerIdHealthGet200Response.md
88
docs/HTTPValidationError.md
99
docs/JobCreate.md
1010
docs/JobRead.md
1111
docs/JobUpdate.md
1212
docs/JobsApi.md
13-
docs/RegisterRunnerV1RunnerRegisterPost200Response.md
14-
docs/RegisterRunnerV1RunnerRegisterPostRequest.md
13+
docs/RunnerCreate.md
14+
docs/RunnerHealthResponse.md
15+
docs/RunnerHealthUpdateResponse.md
16+
docs/RunnerRegisterResponse.md
1517
docs/RunnersApi.md
1618
docs/TokensApi.md
17-
docs/UpdateRunnerHealthV1RunnerRunnerIdHealthPutRequest.md
1819
docs/ValidationError.md
1920
docs/ValidationErrorLocInner.md
2021
docs/VmDependencies.md
@@ -30,14 +31,14 @@ jobmanager_client/api_response.py
3031
jobmanager_client/configuration.py
3132
jobmanager_client/exceptions.py
3233
jobmanager_client/models/__init__.py
33-
jobmanager_client/models/get_runner_health_v1_runner_runner_id_health_get200_response.py
3434
jobmanager_client/models/http_validation_error.py
3535
jobmanager_client/models/job_create.py
3636
jobmanager_client/models/job_read.py
3737
jobmanager_client/models/job_update.py
38-
jobmanager_client/models/register_runner_v1_runner_register_post200_response.py
39-
jobmanager_client/models/register_runner_v1_runner_register_post_request.py
40-
jobmanager_client/models/update_runner_health_v1_runner_runner_id_health_put_request.py
38+
jobmanager_client/models/runner_create.py
39+
jobmanager_client/models/runner_health_response.py
40+
jobmanager_client/models/runner_health_update_response.py
41+
jobmanager_client/models/runner_register_response.py
4142
jobmanager_client/models/validation_error.py
4243
jobmanager_client/models/validation_error_loc_inner.py
4344
jobmanager_client/models/vm_dependencies.py
@@ -49,4 +50,19 @@ setup.cfg
4950
setup.py
5051
test-requirements.txt
5152
test/__init__.py
53+
test/test_default_api.py
54+
test/test_http_validation_error.py
55+
test/test_job_create.py
56+
test/test_job_read.py
57+
test/test_job_update.py
58+
test/test_jobs_api.py
59+
test/test_runner_create.py
60+
test/test_runner_health_response.py
61+
test/test_runner_health_update_response.py
62+
test/test_runner_register_response.py
63+
test/test_runners_api.py
64+
test/test_tokens_api.py
65+
test/test_validation_error.py
66+
test/test_validation_error_loc_inner.py
67+
test/test_vm_dependencies.py
5268
tox.ini

jobmanager/client/README.md

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -95,23 +95,23 @@ Class | Method | HTTP request | Description
9595
*JobsApi* | [**get_jobs_v1_jobs_get**](docs/JobsApi.md#get_jobs_v1_jobs_get) | **GET** /v1/jobs | Get Jobs
9696
*JobsApi* | [**update_health_v1_jobs_job_id_health_put**](docs/JobsApi.md#update_health_v1_jobs_job_id_health_put) | **PUT** /v1/jobs/{job_id}/health | Update Health
9797
*JobsApi* | [**update_job_v1_jobs_job_id_put**](docs/JobsApi.md#update_job_v1_jobs_job_id_put) | **PUT** /v1/jobs/{job_id} | Update Job
98-
*RunnersApi* | [**get_runner_health_v1_runner_runner_id_health_get**](docs/RunnersApi.md#get_runner_health_v1_runner_runner_id_health_get) | **GET** /v1/runner/{runner_id}/health | Get Runner Health
99-
*RunnersApi* | [**register_runner_v1_runner_register_post**](docs/RunnersApi.md#register_runner_v1_runner_register_post) | **POST** /v1/runner/register | Register Runner
100-
*RunnersApi* | [**update_runner_health_v1_runner_runner_id_health_put**](docs/RunnersApi.md#update_runner_health_v1_runner_runner_id_health_put) | **PUT** /v1/runner/{runner_id}/health | Update Runner Health
98+
*RunnersApi* | [**get_runner_health_v1_runners_runner_id_health_get**](docs/RunnersApi.md#get_runner_health_v1_runners_runner_id_health_get) | **GET** /v1/runners/{runner_id}/health | Get Runner Health
99+
*RunnersApi* | [**register_runner_v1_runners_register_post**](docs/RunnersApi.md#register_runner_v1_runners_register_post) | **POST** /v1/runners/register | Register Runner
100+
*RunnersApi* | [**update_runner_health_v1_runners_runner_id_health_put**](docs/RunnersApi.md#update_runner_health_v1_runners_runner_id_health_put) | **PUT** /v1/runners/{runner_id}/health | Update Runner Health
101101
*TokensApi* | [**create_api_access_token_v1_api_access_token_post**](docs/TokensApi.md#create_api_access_token_v1_api_access_token_post) | **POST** /v1/api_access_token | Create Api Access Token
102102
*TokensApi* | [**revoke_api_access_token_v1_api_access_token_delete**](docs/TokensApi.md#revoke_api_access_token_v1_api_access_token_delete) | **DELETE** /v1/api_access_token | Revoke Api Access Token
103103

104104

105105
## Documentation For Models
106106

107-
- [GetRunnerHealthV1RunnerRunnerIdHealthGet200Response](docs/GetRunnerHealthV1RunnerRunnerIdHealthGet200Response.md)
108107
- [HTTPValidationError](docs/HTTPValidationError.md)
109108
- [JobCreate](docs/JobCreate.md)
110109
- [JobRead](docs/JobRead.md)
111110
- [JobUpdate](docs/JobUpdate.md)
112-
- [RegisterRunnerV1RunnerRegisterPost200Response](docs/RegisterRunnerV1RunnerRegisterPost200Response.md)
113-
- [RegisterRunnerV1RunnerRegisterPostRequest](docs/RegisterRunnerV1RunnerRegisterPostRequest.md)
114-
- [UpdateRunnerHealthV1RunnerRunnerIdHealthPutRequest](docs/UpdateRunnerHealthV1RunnerRunnerIdHealthPutRequest.md)
111+
- [RunnerCreate](docs/RunnerCreate.md)
112+
- [RunnerHealthResponse](docs/RunnerHealthResponse.md)
113+
- [RunnerHealthUpdateResponse](docs/RunnerHealthUpdateResponse.md)
114+
- [RunnerRegisterResponse](docs/RunnerRegisterResponse.md)
115115
- [ValidationError](docs/ValidationError.md)
116116
- [ValidationErrorLocInner](docs/ValidationErrorLocInner.md)
117117
- [VmDependencies](docs/VmDependencies.md)
@@ -120,17 +120,7 @@ Class | Method | HTTP request | Description
120120
<a id="documentation-for-authorization"></a>
121121
## Documentation For Authorization
122122

123-
124-
Authentication schemes defined for the API:
125-
<a id="APIAccessToken"></a>
126-
### APIAccessToken
127-
128-
- **Type**: HTTP basic authentication
129-
130-
<a id="BuilderToken"></a>
131-
### BuilderToken
132-
133-
- **Type**: HTTP basic authentication
123+
Endpoints do not require authorization.
134124

135125

136126
## Author

jobmanager/client/docs/GetRunnerHealthV1RunnerRunnerIdHealthGet200Response.md

Lines changed: 0 additions & 33 deletions
This file was deleted.

jobmanager/client/docs/Job.md

Lines changed: 0 additions & 48 deletions
This file was deleted.

0 commit comments

Comments
 (0)