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 (<></>)