diff options
| author | 2021-07-18 04:08:04 +0100 | |
|---|---|---|
| committer | 2021-07-18 04:08:04 +0100 | |
| commit | 19a122a6281a4877d4c1db657fbe7fb3d8a1ac35 (patch) | |
| tree | a1a89696393d452eebcaf0746d642002703280d5 /arthur/exts/kubernetes/certificates.py | |
| parent | fix: add missing type annotation (diff) | |
refactor: move certificates to separate API module
Diffstat (limited to 'arthur/exts/kubernetes/certificates.py')
| -rw-r--r-- | arthur/exts/kubernetes/certificates.py | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/arthur/exts/kubernetes/certificates.py b/arthur/exts/kubernetes/certificates.py index 2058761..f8653ba 100644 --- a/arthur/exts/kubernetes/certificates.py +++ b/arthur/exts/kubernetes/certificates.py @@ -4,9 +4,8 @@ from textwrap import dedent from discord import Embed from discord.ext import commands -from kubernetes_asyncio import client -from kubernetes_asyncio.client.api_client import ApiClient +from arthur.apis.kubernetes import certificates from arthur.bot import KingArthur from arthur.utils import datetime_to_discord @@ -25,32 +24,28 @@ class Certificates(commands.Cog): @certificates.command(name="list", aliases=["ls"]) async def certificates_list(self, ctx: commands.Context, namespace: str = "default") -> None: """List TLS certificates in the selected namespace (defaults to default).""" - async with ApiClient() as api: - v1 = client.CustomObjectsApi(api) - ret = await v1.list_namespaced_custom_object( - "cert-manager.io", "v1", namespace, "certificates" + certs = certificates.list_certificates(namespace) + + return_embed = Embed(title=f"Certificates in namespace {namespace}") + + for certificate in certs["items"]: + expiry = datetime.fromisoformat( + certificate["status"]["notAfter"].rstrip("Z") + "+00:00" + ) + renews = datetime.fromisoformat( + certificate["status"]["renewalTime"].rstrip("Z") + "+00:00" + ) + body = dedent( + f""" + **Subjects:** {", ".join(certificate["spec"]["dnsNames"])} + **Issuer:** {certificate["spec"]["issuerRef"]["name"]} + **Status:** {certificate["status"]["conditions"][0]["message"]} + **Expires:** {datetime_to_discord(expiry)} ({datetime_to_discord(expiry, "R")}) + **Renews:** {datetime_to_discord(renews)} ({datetime_to_discord(renews, "R")}) + """ ) - return_embed = Embed(title=f"Certificates in namespace {namespace}") - - for certificate in ret["items"]: - expiry = datetime.fromisoformat( - certificate["status"]["notAfter"].rstrip("Z") + "+00:00" - ) - renews = datetime.fromisoformat( - certificate["status"]["renewalTime"].rstrip("Z") + "+00:00" - ) - body = dedent( - f""" - **Subjects:** {", ".join(certificate["spec"]["dnsNames"])} - **Issuer:** {certificate["spec"]["issuerRef"]["name"]} - **Status:** {certificate["status"]["conditions"][0]["message"]} - **Expires:** {datetime_to_discord(expiry)} ({datetime_to_discord(expiry, "R")}) - **Renews:** {datetime_to_discord(renews)} ({datetime_to_discord(renews, "R")}) - """ - ) - - return_embed.add_field(name=certificate["metadata"]["name"], value=body.strip()) + return_embed.add_field(name=certificate["metadata"]["name"], value=body.strip()) await ctx.send(embed=return_embed) |