From df3ed1affc5c9337b82a896ce724eacb7f2ddb25 Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Sun, 18 Jul 2021 03:58:54 +0100 Subject: refactor: split kubernetes API interaction into it's own module --- arthur/apis/kubernetes/deployments.py | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 arthur/apis/kubernetes/deployments.py (limited to 'arthur/apis/kubernetes/deployments.py') diff --git a/arthur/apis/kubernetes/deployments.py b/arthur/apis/kubernetes/deployments.py new file mode 100644 index 0000000..8d667b0 --- /dev/null +++ b/arthur/apis/kubernetes/deployments.py @@ -0,0 +1,37 @@ +"""APIs for working with Kubernetes deployments.""" +from datetime import datetime, timezone + +from kubernetes_asyncio import client +from kubernetes_asyncio.client.api_client import ApiClient +from kubernetes_asyncio.client.models import V1DeploymentList + + +async def restart_deployment(deployment: str, namespace: str) -> None: + """Patch a deployment with a custom annotation to trigger redeployment.""" + async with ApiClient() as api: + v1 = client.AppsV1Api(api) + await v1.patch_namespaced_deployment( + name=deployment, + namespace=namespace, + body={ + "spec": { + "template": { + "metadata": { + "annotations": { + "king-arthur.pydis.com/restartedAt": datetime.now( + timezone.utc + ).isoformat() + } + } + } + } + }, + field_manager="King Arthur", + ) + + +async def list_deployments(namespace: str) -> V1DeploymentList: + """Query the Kubernetes API for a list of deployments in the provided namespace.""" + async with ApiClient() as api: + v1 = client.AppsV1Api(api) + return await v1.list_namespaced_deployment(namespace=namespace) -- cgit v1.2.3