Skip to content

Commit f2060ea

Browse files
authored
Use tls-certificates v3 (#82)
* Use tls-certificates v3 * Change .chain to hold a str instead of List[str]
1 parent 2209575 commit f2060ea

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

lib/charms/observability_libs/v0/cert_handler.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,18 @@
4040
from typing import List, Optional, Union, cast
4141

4242
try:
43-
from charms.tls_certificates_interface.v2.tls_certificates import ( # type: ignore
43+
from charms.tls_certificates_interface.v3.tls_certificates import ( # type: ignore
4444
AllCertificatesInvalidatedEvent,
4545
CertificateAvailableEvent,
4646
CertificateExpiringEvent,
4747
CertificateInvalidatedEvent,
48-
TLSCertificatesRequiresV2,
48+
TLSCertificatesRequiresV3,
4949
generate_csr,
5050
generate_private_key,
5151
)
5252
except ImportError as e:
5353
raise ImportError(
54-
"failed to import charms.tls_certificates_interface.v2.tls_certificates; "
54+
"failed to import charms.tls_certificates_interface.v3.tls_certificates; "
5555
"Either the library itself is missing (please get it through charmcraft fetch-lib) "
5656
"or one of its dependencies is unmet."
5757
) from e
@@ -67,7 +67,7 @@
6767

6868
LIBID = "b5cd5cd580f3428fa5f59a8876dcbe6a"
6969
LIBAPI = 0
70-
LIBPATCH = 9
70+
LIBPATCH = 10
7171

7272

7373
def is_ip_address(value: str) -> bool:
@@ -132,7 +132,7 @@ def __init__(
132132
self.peer_relation_name = peer_relation_name
133133
self.certificates_relation_name = certificates_relation_name
134134

135-
self.certificates = TLSCertificatesRequiresV2(self.charm, self.certificates_relation_name)
135+
self.certificates = TLSCertificatesRequiresV3(self.charm, self.certificates_relation_name)
136136

137137
self.framework.observe(
138138
self.charm.on.config_changed,
@@ -282,7 +282,7 @@ def _generate_csr(
282282
if clear_cert:
283283
self._ca_cert = ""
284284
self._server_cert = ""
285-
self._chain = []
285+
self._chain = ""
286286

287287
def _on_certificate_available(self, event: CertificateAvailableEvent) -> None:
288288
"""Get the certificate from the event and store it in a peer relation.
@@ -304,7 +304,7 @@ def _on_certificate_available(self, event: CertificateAvailableEvent) -> None:
304304
if event_csr == self._csr:
305305
self._ca_cert = event.ca
306306
self._server_cert = event.certificate
307-
self._chain = event.chain
307+
self._chain = event.chain_as_pem()
308308
self.on.cert_changed.emit() # pyright: ignore
309309

310310
@property
@@ -375,21 +375,21 @@ def _server_cert(self, value: str):
375375
rel.data[self.charm.unit].update({"certificate": value})
376376

377377
@property
378-
def _chain(self) -> List[str]:
378+
def _chain(self) -> str:
379379
if self._peer_relation:
380-
if chain := self._peer_relation.data[self.charm.unit].get("chain", []):
380+
if chain := self._peer_relation.data[self.charm.unit].get("chain", ""):
381381
return json.loads(cast(str, chain))
382-
return []
382+
return ""
383383

384384
@_chain.setter
385-
def _chain(self, value: List[str]):
385+
def _chain(self, value: str):
386386
# Caller must guard. We want the setter to fail loudly. Failure must have a side effect.
387387
rel = self._peer_relation
388388
assert rel is not None # For type checker
389389
rel.data[self.charm.unit].update({"chain": json.dumps(value)})
390390

391391
@property
392-
def chain(self) -> List[str]:
392+
def chain(self) -> str:
393393
"""Return the ca chain."""
394394
return self._chain
395395

0 commit comments

Comments
 (0)