Skip to content

Commit 1d13765

Browse files
committed
healthcheck fixed
1 parent 99caa45 commit 1d13765

File tree

3 files changed

+43
-7
lines changed

3 files changed

+43
-7
lines changed

services/clusters-keeper/src/simcore_service_clusters_keeper/api/health.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
@router.get("/", include_in_schema=True, response_class=PlainTextResponse)
2222
async def health_check():
2323
# NOTE: sync url in docker/healthcheck.py with this entrypoint!
24-
return f"{__name__}.health_check@{datetime.datetime.now(datetime.timezone.utc).isoformat()}"
24+
return f"{__name__}.health_check@{datetime.datetime.now(datetime.UTC).isoformat()}"
2525

2626

2727
class _ComponentStatus(BaseModel):
@@ -33,25 +33,34 @@ class _StatusGet(BaseModel):
3333
rabbitmq: _ComponentStatus
3434
ec2: _ComponentStatus
3535
redis_client_sdk: _ComponentStatus
36+
ssm: _ComponentStatus
3637

3738

3839
@router.get("/status", include_in_schema=True, response_model=_StatusGet)
3940
async def get_status(app: Annotated[FastAPI, Depends(get_app)]) -> _StatusGet:
4041
return _StatusGet(
4142
rabbitmq=_ComponentStatus(
4243
is_enabled=is_rabbitmq_enabled(app),
43-
is_responsive=await get_rabbitmq_client(app).ping()
44-
if is_rabbitmq_enabled(app)
45-
else False,
44+
is_responsive=(
45+
await get_rabbitmq_client(app).ping()
46+
if is_rabbitmq_enabled(app)
47+
else False
48+
),
4649
),
4750
ec2=_ComponentStatus(
4851
is_enabled=bool(app.state.ec2_client),
49-
is_responsive=await app.state.ec2_client.ping()
50-
if app.state.ec2_client
51-
else False,
52+
is_responsive=(
53+
await app.state.ec2_client.ping() if app.state.ec2_client else False
54+
),
5255
),
5356
redis_client_sdk=_ComponentStatus(
5457
is_enabled=bool(app.state.redis_client_sdk),
5558
is_responsive=await get_redis_client(app).ping(),
5659
),
60+
ssm=_ComponentStatus(
61+
is_enabled=(app.state.ssm_client is not None),
62+
is_responsive=(
63+
await app.state.ssm_client.ping() if app.state.ssm_client else False
64+
),
65+
),
5766
)

services/clusters-keeper/tests/unit/conftest.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@
2222
from fastapi import FastAPI
2323
from models_library.users import UserID
2424
from models_library.wallets import WalletID
25+
from pydantic import SecretStr
2526
from pytest_mock.plugin import MockerFixture
2627
from pytest_simcore.helpers.monkeypatch_envs import EnvVarsDict, setenvs_from_dict
2728
from servicelib.rabbitmq import RabbitMQRPCClient
2829
from settings_library.ec2 import EC2Settings
2930
from settings_library.rabbit import RabbitSettings
31+
from settings_library.ssm import SSMSettings
3032
from simcore_service_clusters_keeper.core.application import create_app
3133
from simcore_service_clusters_keeper.core.settings import (
3234
CLUSTERS_KEEPER_ENV_PREFIX,
@@ -86,6 +88,21 @@ def mocked_ec2_server_envs(
8688
return setenvs_from_dict(monkeypatch, changed_envs)
8789

8890

91+
@pytest.fixture
92+
def mocked_ssm_server_envs(
93+
mocked_ssm_server_settings: SSMSettings,
94+
monkeypatch: pytest.MonkeyPatch,
95+
) -> EnvVarsDict:
96+
# NOTE: overrides the SSMSettings with what clusters-keeper expects
97+
changed_envs: EnvVarsDict = {
98+
f"{CLUSTERS_KEEPER_ENV_PREFIX}{k}": (
99+
v.get_secret_value() if isinstance(v, SecretStr) else v
100+
)
101+
for k, v in mocked_ssm_server_settings.dict().items()
102+
}
103+
return setenvs_from_dict(monkeypatch, changed_envs)
104+
105+
89106
@pytest.fixture
90107
def ec2_settings(mocked_ec2_server_settings: EC2Settings) -> EC2Settings:
91108
return mocked_ec2_server_settings
@@ -105,6 +122,9 @@ def app_environment(
105122
"CLUSTERS_KEEPER_EC2_ACCESS": "{}",
106123
"CLUSTERS_KEEPER_EC2_ACCESS_KEY_ID": faker.pystr(),
107124
"CLUSTERS_KEEPER_EC2_SECRET_ACCESS_KEY": faker.pystr(),
125+
"CLUSTERS_KEEPER_SSM_ACCESS": "{}",
126+
"CLUSTERS_KEEPER_SSM_ACCESS_KEY_ID": faker.pystr(),
127+
"CLUSTERS_KEEPER_SSM_SECRET_ACCESS_KEY": faker.pystr(),
108128
"CLUSTERS_KEEPER_PRIMARY_EC2_INSTANCES": "{}",
109129
"CLUSTERS_KEEPER_EC2_INSTANCES_PREFIX": faker.pystr(),
110130
"CLUSTERS_KEEPER_DASK_NTHREADS": f"{faker.pyint(min_value=0)}",

services/clusters-keeper/tests/unit/test_api_health.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def app_environment(
2121
app_environment: EnvVarsDict,
2222
enabled_rabbitmq: None,
2323
mocked_ec2_server_envs: EnvVarsDict,
24+
mocked_ssm_server_envs: EnvVarsDict,
2425
mocked_redis_server: None,
2526
) -> EnvVarsDict:
2627
return app_environment
@@ -69,6 +70,9 @@ async def test_status(
6970
assert status_response.ec2.is_enabled is True
7071
assert status_response.ec2.is_responsive is False
7172

73+
assert status_response.ssm.is_enabled is True
74+
assert status_response.ssm.is_responsive is False
75+
7276
# restart the server
7377
mocked_aws_server.start()
7478

@@ -83,3 +87,6 @@ async def test_status(
8387

8488
assert status_response.ec2.is_enabled is True
8589
assert status_response.ec2.is_responsive is True
90+
91+
assert status_response.ssm.is_enabled is True
92+
assert status_response.ssm.is_responsive is True

0 commit comments

Comments
 (0)