From 46482e0e4912bf55ce6cc35149d862a86d8910c2 Mon Sep 17 00:00:00 2001 From: biersoeckli Date: Sun, 10 Nov 2024 18:00:20 +0000 Subject: [PATCH] dirty fix informer --- bun.lockb | Bin 293120 -> 291742 bytes package.json | 2 +- src/app/api/app-status/route.ts | 21 ++++++++++++++------- src/server/services/deployment.service.ts | 2 +- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/bun.lockb b/bun.lockb index 266be953371939b2d0848f757a7b038c1ec02aef..d0bf04002e1b05da5ac426336e549f4e6c38707c 100755 GIT binary patch delta 29368 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�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 F{{oRF^iTi* delta 30161 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°``f&bVUq3S`UyYCKKe8u5 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 { - console.log(`Getting Deployment Status for app ${appId}`); const deploymentStatus = await deploymentService.getDeploymentStatus(app.projectId, app.id); controller.enqueue(encoder.encode(deploymentStatus)) }; + const kc = k3s.getKubeConfig(); informer = k8s.makeInformer( - k3s.getKubeConfig(), + kc, `/api/v1/namespaces/${namespace}/pods`, - () => k3s.core.listNamespacedPod(namespace, undefined, undefined, undefined, undefined, `app=${app.id}`) + () => k3s.core.listNamespacedPod(namespace, undefined, undefined, undefined, undefined, `app=${app.id}`), + `app=${app.id}` ); informer.on('add', () => getDeploymentStatus()); @@ -48,16 +49,22 @@ export async function POST(request: Request) { informer.on('change', () => getDeploymentStatus()); informer.on('delete', () => getDeploymentStatus()); informer.on('error', async (err: any) => { - console.error(`Error while listening for Deplyoment Changes for app ${appId}: `, err); + // todo there is a error because of the invalid Certificat Authority, so every time error + // is thrown, we need to restart the informer --> TODO + console.error(`[INFORMER ERROR] Error while listening for Deplyoment Changes for app ${appId}: `, err); + getDeploymentStatus() // Try to restart informer after 5sec await new Promise(resolve => setTimeout(resolve, 5000)); informer.start(); }); - getDeploymentStatus(); // Initial status + + informer.start(); + getDeploymentStatus(); + console.log("[START] Starting informer for app " + appId); }, cancel() { - console.log("Stream closed.") + console.log("[LEAVE] Cancelling informer for app " + appId); informer?.stop(); } }); diff --git a/src/server/services/deployment.service.ts b/src/server/services/deployment.service.ts index f90917c..90343ff 100644 --- a/src/server/services/deployment.service.ts +++ b/src/server/services/deployment.service.ts @@ -1,6 +1,6 @@ import { AppExtendedModel } from "@/model/app-extended.model"; import k3s from "../adapter/kubernetes-api.adapter"; -import { V1Deployment, V1Ingress, V1PersistentVolumeClaim, V1ReplicaSet } from "@kubernetes/client-node"; +import { V1Deployment, V1ReplicaSet } from "@kubernetes/client-node"; import buildService from "./build.service"; import { ListUtils } from "../utils/list.utils"; import { DeploymentInfoModel, DeplyomentStatus } from "@/model/deployment-info.model";