This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 0c35e89000f4cd89694a35860cf24d4b551e7c70
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Sep 1 16:08:51 2023 -0400

    Readiness in UI for #817
---
 .../camel/karavan/service/KaravanService.java      |  5 ++
 .../src/main/webui/src/api/KaravanApi.tsx          | 14 ++++++
 .../src/main/webui/src/api/ProjectStore.ts         |  6 +++
 .../src/main/webui/src/main/MainDataPoller.tsx     | 57 ++++++++++++----------
 4 files changed, 57 insertions(+), 25 deletions(-)

diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
index 7a811548..7e91bed2 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
@@ -24,6 +24,7 @@ import io.vertx.core.eventbus.EventBus;
 import jakarta.inject.Singleton;
 import org.apache.camel.karavan.docker.DockerForGitea;
 import org.apache.camel.karavan.docker.DockerForInfinispan;
+import org.apache.camel.karavan.docker.DockerForKaravan;
 import org.apache.camel.karavan.docker.DockerService;
 import org.apache.camel.karavan.infinispan.InfinispanService;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
@@ -52,6 +53,8 @@ public class KaravanService {
     @Inject
     DockerForGitea dockerForGitea;
 
+    @Inject
+    DockerForKaravan dockerForKaravan;
     @Inject
     DockerForInfinispan dockerForInfinispan;
 
@@ -88,7 +91,9 @@ public class KaravanService {
         } else {
             dockerService.createNetwork();
             dockerService.startListeners();
+
             dockerForInfinispan.startInfinispan();
+            dockerForKaravan.startKaravanHeadlessContainer();
             if (giteaInstall) {
                 dockerForGitea.startGitea();
                 giteaService.install();
diff --git a/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx 
b/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx
index cd2213f2..9237fba3 100644
--- a/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx
@@ -84,6 +84,20 @@ export class KaravanApi {
         });
     }
 
+    static async getReadiness(after: (readiness: any) => void) {
+        axios.get('/q/health/ready', {headers: {'Accept': 'application/json'}})
+            .then(res => {
+                if (res.status === 200) {
+                    after(res.data);
+                } else {
+                    after(undefined);
+                }
+            }).catch(err => {
+            console.log(err.message);
+            after(undefined);
+        });
+    }
+
     static async getConfig(after: (config: {}) => void) {
         axios.get('/public/sso-config', {headers: {'Accept': 
'application/json'}})
             .then(res => {
diff --git a/karavan-web/karavan-app/src/main/webui/src/api/ProjectStore.ts 
b/karavan-web/karavan-app/src/main/webui/src/api/ProjectStore.ts
index 9f0afac7..8290cbde 100644
--- a/karavan-web/karavan-app/src/main/webui/src/api/ProjectStore.ts
+++ b/karavan-web/karavan-app/src/main/webui/src/api/ProjectStore.ts
@@ -36,6 +36,8 @@ interface AppConfigState {
     setLoading: (loading: boolean) => void;
     config: AppConfig;
     setConfig: (config: AppConfig) => void;
+    readiness: any;
+    setReadiness: (readiness: any) => void;
 }
 
 export const useAppConfigStore = createWithEqualityFn<AppConfigState>((set) => 
({
@@ -47,6 +49,10 @@ export const useAppConfigStore = 
createWithEqualityFn<AppConfigState>((set) => (
     setConfig: (config: AppConfig)  => {
         set({config: config})
     },
+    readiness: undefined,
+    setReadiness: (readiness: any)  => {
+        set({readiness: readiness})
+    },
 }), shallow)
 
 
diff --git a/karavan-web/karavan-app/src/main/webui/src/main/MainDataPoller.tsx 
b/karavan-web/karavan-app/src/main/webui/src/main/MainDataPoller.tsx
index f192af14..6ff24777 100644
--- a/karavan-web/karavan-app/src/main/webui/src/main/MainDataPoller.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/main/MainDataPoller.tsx
@@ -16,8 +16,8 @@ import {shallow} from "zustand/shallow";
 
 export function MainDataPoller () {
 
-    const [config, setLoading] = useAppConfigStore((s) =>
-        [s.config, s.setLoading], shallow)
+    const [config, setLoading, readiness, setReadiness] = 
useAppConfigStore((s) =>
+        [s.config, s.setLoading, s.readiness, s.setReadiness], shallow)
     const [projects, setProjects] = useProjectsStore((state) => 
[state.projects, state.setProjects], shallow)
     const [deployments, services, containers, camels, setDeployments, 
setServices, setContainers, setCamels, setPipelineStatuses]
         = useStatusesStore((s) => [s.deployments, s.services, s.containers, 
s.camels,
@@ -30,33 +30,40 @@ export function MainDataPoller () {
         return () => {
             clearInterval(interval);
         };
-    }, [project]);
+    }, [project, readiness]);
 
     function getData() {
-        setLoading(true);
-        KaravanApi.getConfiguration((config: AppConfig) => {
-            if (project.projectId === undefined) {
-                KaravanApi.getProjects((projects: Project[]) => {
-                    setProjects(projects);
+        console.log(readiness);
+        KaravanApi.getReadiness((r: any) => {
+            setReadiness(r);
+        })
+        if (readiness) {
+            console.log("getData");
+            setLoading(true);
+            KaravanApi.getConfiguration((config: AppConfig) => {
+                if (project.projectId === undefined) {
+                    KaravanApi.getProjects((projects: Project[]) => {
+                        setProjects(projects);
+                    });
+                }
+                KaravanApi.getAllDeploymentStatuses((statuses: 
DeploymentStatus[]) => {
+                    setDeployments(statuses);
                 });
-            }
-            KaravanApi.getAllDeploymentStatuses((statuses: DeploymentStatus[]) 
=> {
-                setDeployments(statuses);
-            });
-            KaravanApi.getAllServiceStatuses((statuses: ServiceStatus[]) => {
-                setServices(statuses);
-            });
-            KaravanApi.getAllContainerStatuses((statuses: ContainerStatus[]) 
=> {
-                setContainers(statuses);
-            });
-            KaravanApi.getAllCamelStatuses(config.environment, (statuses: 
CamelStatus[]) => {
-                setCamels(statuses);
-            });
-            KaravanApi.getPipelineStatuses(config.environment, (status: 
PipelineStatus[]) => {
-                setPipelineStatuses(status);
+                KaravanApi.getAllServiceStatuses((statuses: ServiceStatus[]) 
=> {
+                    setServices(statuses);
+                });
+                KaravanApi.getAllContainerStatuses((statuses: 
ContainerStatus[]) => {
+                    setContainers(statuses);
+                });
+                KaravanApi.getAllCamelStatuses(config.environment, (statuses: 
CamelStatus[]) => {
+                    setCamels(statuses);
+                });
+                KaravanApi.getPipelineStatuses(config.environment, (status: 
PipelineStatus[]) => {
+                    setPipelineStatuses(status);
+                });
+                setLoading(false);
             });
-            setLoading(false);
-        });
+        }
     }
 
     return (<></>)

Reply via email to