From fe4a5a47cde05c8fd7cb9340467632f3f886ecec Mon Sep 17 00:00:00 2001 From: IS DevOps Bot <135168451+is-devops-bot@users.noreply.github.com> Date: Sat, 10 Aug 2024 04:29:02 +0300 Subject: [PATCH] chore: update charm libraries --- lib/charms/saml_integrator/v0/saml.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/lib/charms/saml_integrator/v0/saml.py b/lib/charms/saml_integrator/v0/saml.py index be555dc2..8fd1610e 100644 --- a/lib/charms/saml_integrator/v0/saml.py +++ b/lib/charms/saml_integrator/v0/saml.py @@ -68,7 +68,7 @@ class method `from_relation_data`. # Increment this PATCH version before using `charmcraft publish-lib` or reset # to 0 if you are raising the major API version -LIBPATCH = 9 +LIBPATCH = 10 # pylint: disable=wrong-import-position import re @@ -92,7 +92,7 @@ class SamlEndpoint(BaseModel): """ name: str = Field(..., min_length=1) - url: AnyHttpUrl + url: typing.Optional[AnyHttpUrl] binding: str = Field(..., min_length=1) response_url: typing.Optional[AnyHttpUrl] @@ -108,7 +108,8 @@ def to_relation_data(self) -> typing.Dict[str, str]: # Transform name into snakecase lowercase_name = re.sub(r"(? "SamlEndpoi prefix = f"{lowercase_name}_{http_method}_" return cls( name=name, - url=parse_obj_as(AnyHttpUrl, relation_data[f"{prefix}url"]), + url=( + parse_obj_as(AnyHttpUrl, relation_data[f"{prefix}url"]) + if relation_data[f"{prefix}url"] + else None + ), binding=relation_data[f"{prefix}binding"], response_url=( parse_obj_as(AnyHttpUrl, relation_data[f"{prefix}response_url"]) @@ -158,7 +163,7 @@ class SamlRelationData(BaseModel): """ entity_id: str = Field(..., min_length=1) - metadata_url: AnyHttpUrl + metadata_url: typing.Optional[AnyHttpUrl] certificates: typing.Tuple[str, ...] endpoints: typing.Tuple[SamlEndpoint, ...] @@ -170,9 +175,10 @@ def to_relation_data(self) -> typing.Dict[str, str]: """ result = { "entity_id": self.entity_id, - "metadata_url": str(self.metadata_url), "x509certs": ",".join(self.certificates), } + if self.metadata_url: + result["metadata_url"] = str(self.metadata_url) for endpoint in self.endpoints: result.update(endpoint.to_relation_data()) return result @@ -201,8 +207,10 @@ def from_relation_data(cls, relation_data: ops.RelationDataContent) -> "SamlRela endpoints.sort(key=lambda ep: ep.name) return cls( entity_id=relation_data.get("entity_id"), # type: ignore - metadata_url=parse_obj_as( - AnyHttpUrl, relation_data.get("metadata_url") + metadata_url=( + parse_obj_as(AnyHttpUrl, relation_data.get("metadata_url")) + if relation_data.get("metadata_url") + else None ), # type: ignore certificates=tuple(relation_data.get("x509certs").split(",")), # type: ignore endpoints=tuple(endpoints), @@ -232,7 +240,7 @@ def entity_id(self) -> str: return self.saml_relation_data.entity_id @property - def metadata_url(self) -> str: + def metadata_url(self) -> typing.Optional[str]: """Fetch the SAML metadata URL from the relation.""" return str(self.saml_relation_data.metadata_url)