Skip to content

Commit

Permalink
Pythonic error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
addyess committed Jan 30, 2025
1 parent 0f33ff1 commit a425f8b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
26 changes: 13 additions & 13 deletions src/manifests_cephfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import logging
from dataclasses import dataclass
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple
from typing import TYPE_CHECKING, Any, Dict, List, Optional

from lightkube.codecs import AnyResource
from lightkube.models.core_v1 import Toleration
Expand Down Expand Up @@ -123,7 +123,7 @@ def create(self, param: CephStorageClassParameters) -> AnyResource:
)
)

def parameter_list(self) -> Tuple[List[CephStorageClassParameters], Optional[str]]:
def parameter_list(self) -> List[CephStorageClassParameters]:
"""Accumulate names and settings of the storage classes."""
enabled = self.manifests.config.get("enabled")
fsid = self.manifests.config.get("fsid")
Expand All @@ -132,19 +132,19 @@ def parameter_list(self) -> Tuple[List[CephStorageClassParameters], Optional[str

if not enabled:
log.info("Ignore CephFS Storage Class")
return [], None
return []

if not fsid:
log.error("CephFS is missing a filesystem: 'fsid'")
return [], "missing fsid"
raise ValueError("missing fsid")

if not fs_data:
log.error("CephFS is missing a filesystem listing: '%s'", self.FILESYSTEM_LISTING)
return [], "missing filesystem listing"
raise ValueError("missing filesystem listing")

if not formatter:
log.error("CephFS is missing '%s'", self.STORAGE_NAME_FORMATTER)
return [], f"empty {self.STORAGE_NAME_FORMATTER}"
raise ValueError(f"empty {self.STORAGE_NAME_FORMATTER}")

sc_names: List[CephStorageClassParameters] = []
for fs in fs_data:
Expand All @@ -169,13 +169,12 @@ def parameter_list(self) -> Tuple[List[CephStorageClassParameters], Optional[str
fs_data,
sc_names,
)
return [], f"{self.STORAGE_NAME_FORMATTER} does not generate unique names"
return sc_names, None
raise ValueError(f"{self.STORAGE_NAME_FORMATTER} does not generate unique names")
return sc_names

def __call__(self) -> List[AnyResource]:
"""Craft the storage class object."""
classes, _ = self.parameter_list()
return [self.create(class_param) for class_param in classes]
return [self.create(class_param) for class_param in self.parameter_list()]


class ProvisionerAdjustments(Patch):
Expand Down Expand Up @@ -295,7 +294,8 @@ def evaluate(self) -> Optional[str]:
return f"CephFS manifests require the definition of '{prop}'"

sc_manipulator = next(m for m in self.manipulations if isinstance(m, CephStorageClass))
_, err = sc_manipulator.parameter_list()
if err:
return f"CephFS manifests failed to create storage classes: {err=}"
try:
sc_manipulator.parameter_list()
except ValueError as err:
return f"CephFS manifests failed to create storage classes: {err}"
return None
2 changes: 1 addition & 1 deletion tests/unit/test_manifests_cephfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ def test_manifest_evaluation(caplog):
assert manifests.evaluate() == "CephFS manifests require the definition of 'user'"

charm.config["user"] = "cephx"
err_formatter = "CephFS manifests failed to create storage classes: err='{}'"
err_formatter = "CephFS manifests failed to create storage classes: {}"
assert manifests.evaluate() == err_formatter.format("missing fsid")

charm.config["fsid"] = "cluster"
Expand Down

0 comments on commit a425f8b

Please # to comment.