Skip to content

Commit 744a464

Browse files
Add more tests to improve the coverage (#571)
Co-authored-by: Alex <[email protected]>
1 parent de4fd6d commit 744a464

File tree

6 files changed

+429
-36
lines changed

6 files changed

+429
-36
lines changed

src/aap_eda/services/activation/engine/common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def get_status(self, container_id: str) -> ContainerStatus:
121121
raise exceptions.ContainerNotFoundError(e) from e
122122

123123
@abstractmethod
124-
def start(self, request: ContainerRequest, logger: LogHandler) -> str:
124+
def start(self, request: ContainerRequest, log_handler: LogHandler) -> str:
125125
# It returns the container id
126126
try:
127127
# Implementation
@@ -132,7 +132,7 @@ def start(self, request: ContainerRequest, logger: LogHandler) -> str:
132132
raise exceptions.ContainerStartError(e) from e
133133

134134
@abstractmethod
135-
def cleanup(self, container_id: str, logger: LogHandler) -> None:
135+
def cleanup(self, container_id: str, log_handler: LogHandler) -> None:
136136
try:
137137
# Implementation
138138
...

src/aap_eda/services/activation/engine/kubernetes.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def get_k8s_client() -> Client:
7777
network_api=k8sclient.NetworkingV1Api(),
7878
)
7979
except ConfigException as e:
80-
raise ContainerEngineInitError(str(e))
80+
raise ContainerEngineInitError(str(e)) from e
8181

8282

8383
class Engine(ContainerEngine):
@@ -93,6 +93,8 @@ def __init__(
9393

9494
self._set_namespace()
9595
self.secret_name = f"activation-secret-{activation_id}"
96+
self.job_name = None
97+
self.pod_name = None
9698

9799
def start(self, request: ContainerRequest, log_handler: LogHandler) -> str:
98100
# TODO : Should this be compatible with the previous version
@@ -237,10 +239,12 @@ def update_logs(self, container_id: str, log_handler: LogHandler) -> None:
237239
log_handler.flush()
238240
log_handler.set_log_read_at(dt)
239241
else:
240-
LOGGER.warning(f"Pod with label {container_id} not found.")
241-
log_handler.write(
242-
f"Pod with label {container_id} not found.", True
242+
msg = (
243+
f"Pod with label {container_id} has unhandled state: "
244+
f"{container_status.state}."
243245
)
246+
LOGGER.warning(msg)
247+
log_handler.write(msg, flush=True)
244248

245249
# ContainerUpdateLogsError handled by the manager
246250
except ApiException as e:
@@ -259,7 +263,7 @@ def _get_job_pod(self, job_name: str) -> k8sclient.V1Pod:
259263
return result.items[0]
260264
except ApiException as e:
261265
LOGGER.error(f"API Exception {e}")
262-
raise ContainerNotFoundError(str(e))
266+
raise ContainerNotFoundError(str(e)) from e
263267

264268
def _create_container_spec(
265269
self,
@@ -358,7 +362,7 @@ def _create_service(self, port: int) -> None:
358362
LOGGER.info(f"Service already exists: {service_name}")
359363
except ApiException as e:
360364
LOGGER.error(f"API Exception {e}")
361-
raise ContainerStartError(str(e))
365+
raise ContainerStartError(str(e)) from e
362366

363367
def _delete_services(self, log_handler: LogHandler) -> None:
364368
try:
@@ -378,7 +382,7 @@ def _delete_services(self, log_handler: LogHandler) -> None:
378382
log_handler.write(f"Service {service_name} is deleted.", True)
379383
except ApiException as e:
380384
LOGGER.error(f"API Exception {e}")
381-
raise ContainerCleanupError(str(e))
385+
raise ContainerCleanupError(str(e)) from e
382386

383387
def _create_job(
384388
self,
@@ -415,7 +419,7 @@ def _create_job(
415419
LOGGER.info(f"Submitted Job template: {self.job_name},")
416420
except ApiException as e:
417421
LOGGER.error(f"API Exception {e}")
418-
raise ContainerStartError(str(e))
422+
raise ContainerStartError(str(e)) from e
419423

420424
return job_result
421425

@@ -446,7 +450,7 @@ def _delete_job(self, log_handler: LogHandler) -> None:
446450
except ApiException as e:
447451
raise ContainerCleanupError(
448452
f"Stop of {self.job_name} Failed: \n {e}"
449-
)
453+
) from e
450454

451455
def _wait_for_pod_to_start(self, log_handler: LogHandler) -> None:
452456
watcher = watch.Watch()
@@ -479,7 +483,8 @@ def _wait_for_pod_to_start(self, log_handler: LogHandler) -> None:
479483
except ApiException as e:
480484
raise ContainerStartError(
481485
f"Pod {self.pod_name} failed with error {e}"
482-
)
486+
) from e
487+
483488
finally:
484489
watcher.stop()
485490

@@ -488,14 +493,16 @@ def _set_namespace(self) -> None:
488493
"/var/run/secrets/kubernetes.io/serviceaccount/namespace"
489494
)
490495
try:
491-
with open(namespace_file, "r") as namespace_ref:
496+
with open(
497+
namespace_file, mode="r", encoding="utf-8"
498+
) as namespace_ref:
492499
self.namespace = namespace_ref.read()
493500

494501
LOGGER.info(f"Namespace is {self.namespace}")
495-
except FileNotFoundError:
502+
except FileNotFoundError as e:
496503
message = f"Namespace file {namespace_file} does not exist."
497504
LOGGER.error(message)
498-
raise ContainerEngineInitError(message)
505+
raise ContainerEngineInitError(message) from e
499506

500507
def _create_secret(
501508
self,
@@ -542,7 +549,7 @@ def _create_secret(
542549
LOGGER.info(f"Created secret: name: {self.secret_name}")
543550
except ApiException as e:
544551
LOGGER.error(f"API Exception {e}")
545-
raise ContainerStartError(str(e))
552+
raise ContainerStartError(str(e)) from e
546553

547554
def _delete_secret(self, log_handler: LogHandler) -> None:
548555
try:
@@ -573,4 +580,4 @@ def _delete_secret(self, log_handler: LogHandler) -> None:
573580
log_handler.write(message, True)
574581
except ApiException as e:
575582
LOGGER.error(f"API Exception {e}")
576-
raise ContainerCleanupError(str(e))
583+
raise ContainerCleanupError(str(e)) from e

src/aap_eda/services/activation/engine/podman.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ def __init__(
7171
else:
7272
self.client = get_podman_client()
7373
LOGGER.debug(self.client.version())
74+
75+
self.auth_file = None
7476
except APIError as e:
7577
LOGGER.error(f"Failed to initialize podman engine: f{e}")
7678
raise exceptions.ContainerEngineInitError(str(e))
@@ -302,7 +304,7 @@ def _write_auth_json(self, request: ContainerRequest) -> None:
302304

303305
auth_dict = {}
304306
if os.path.exists(self.auth_file):
305-
with open(self.auth_file) as f:
307+
with open(self.auth_file, encoding="utf-8") as f:
306308
auth_dict = json.load(f)
307309

308310
if "auths" not in auth_dict:
@@ -312,7 +314,7 @@ def _write_auth_json(self, request: ContainerRequest) -> None:
312314
request.credential
313315
)
314316

315-
with open(self.auth_file, "w") as f:
317+
with open(self.auth_file, mode="w", encoding="utf-8") as f:
316318
json.dump(auth_dict, f, indent=6)
317319

318320
def _create_auth_key(self, credential: Credential) -> dict:
@@ -358,11 +360,11 @@ def _pull_image(
358360
raise exceptions.ContainerImagePullError(msg)
359361
LOGGER.info("Downloaded image")
360362
return image
361-
except ImageNotFound:
363+
except ImageNotFound as e:
362364
msg = f"Image {request.image_url} not found"
363365
LOGGER.exception(msg)
364366
log_handler.write(msg, True)
365-
raise exceptions.ContainerImagePullError(msg)
367+
raise exceptions.ContainerImagePullError(msg) from e
366368
except APIError as e:
367369
LOGGER.exception("Failed to pull image {request.image_url}: f{e}")
368370
raise exceptions.ContainerStartError(str(e))
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"auths": {
3+
"docker.io": {
4+
"auth": "erfi7sYi89234xJUqaqxgmzcnQ2rRFWM5aJX0EC="
5+
},
6+
"quay.io": {
7+
"auth": "bWU6c2VjcmV0"
8+
}
9+
}
10+
}

0 commit comments

Comments
 (0)