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
The following commit(s) were added to refs/heads/main by this push: new ab580062 Optimize statuses ab580062 is described below commit ab580062686f2e536d61277321140ea012eaa75d Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Mon May 27 19:16:17 2024 -0400 Optimize statuses --- .../karavan/status/ContainerStatusListener.java | 4 +- .../apache/camel/karavan/status/StatusService.java | 68 ---------------------- .../karavan/status/docker/DockerStatusService.java | 2 +- .../status/kubernetes/KubernetesStatusService.java | 21 +++++++ 4 files changed, 24 insertions(+), 71 deletions(-) diff --git a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/ContainerStatusListener.java b/karavan-statuses/src/main/java/org/apache/camel/karavan/status/ContainerStatusListener.java index 4e0b2d3d..301d7518 100644 --- a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/ContainerStatusListener.java +++ b/karavan-statuses/src/main/java/org/apache/camel/karavan/status/ContainerStatusListener.java @@ -59,8 +59,8 @@ public class ContainerStatusListener { } @ConsumeEvent(value = CMD_CLEAN_STATUSES, blocking = true) - void cleanContainersStatuses(JsonArray list) { - List<ContainerStatus> statusesInDocker = list.stream().map(o -> ((JsonObject)o).mapTo(ContainerStatus.class)).toList(); + void cleanContainersStatuses(String data) { + List<ContainerStatus> statusesInDocker = dockerAPI.collectContainersStatuses(); List<String> namesInDocker = statusesInDocker.stream().map(ContainerStatus::getContainerName).toList(); List<ContainerStatus> statusesInCache = statusCache.getContainerStatuses(environment); // clean deleted diff --git a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/StatusService.java b/karavan-statuses/src/main/java/org/apache/camel/karavan/status/StatusService.java deleted file mode 100644 index 2a64f743..00000000 --- a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/StatusService.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.karavan.status; - -import io.quarkus.runtime.ShutdownEvent; -import io.quarkus.runtime.Startup; -import io.quarkus.runtime.StartupEvent; -import jakarta.enterprise.event.Observes; -import jakarta.inject.Inject; -import jakarta.inject.Singleton; -import org.apache.camel.karavan.config.ConfigService; -import org.apache.camel.karavan.status.docker.DockerAPI; -import org.apache.camel.karavan.status.kubernetes.KubernetesStatusService; -import org.eclipse.microprofile.health.HealthCheck; -import org.eclipse.microprofile.health.HealthCheckResponse; -import org.eclipse.microprofile.health.Liveness; -import org.jboss.logging.Logger; - -import java.io.IOException; - -@Startup -@Liveness -@Singleton -public class StatusService implements HealthCheck { - - private static final Logger LOGGER = Logger.getLogger(StatusService.class.getName()); - - @Inject - KubernetesStatusService kubernetesStatusService; - - @Inject - DockerAPI dockerAPI; - - @Override - public HealthCheckResponse call() { - return HealthCheckResponse.up("Karavan"); - } - - void onStart(@Observes StartupEvent ev) throws Exception { - LOGGER.info("Status Listeners: starting..."); - if (ConfigService.inKubernetes()) { - kubernetesStatusService.startInformers(); - } - LOGGER.info("Status Listeners: started"); - } - - void onStop(@Observes ShutdownEvent ev) throws IOException { - LOGGER.info("Status Listeners: stopping..."); - if (ConfigService.inKubernetes()) { - kubernetesStatusService.stopInformers(); - } - LOGGER.info("Status Listeners: stopped"); - } -} diff --git a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/docker/DockerStatusService.java b/karavan-statuses/src/main/java/org/apache/camel/karavan/status/docker/DockerStatusService.java index 8e98c839..b72461fd 100644 --- a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/docker/DockerStatusService.java +++ b/karavan-statuses/src/main/java/org/apache/camel/karavan/status/docker/DockerStatusService.java @@ -53,7 +53,7 @@ public class DockerStatusService { statusesInDocker.forEach(containerStatus -> { eventBus.publish(CONTAINER_UPDATED, JsonObject.mapFrom(containerStatus)); }); -// eventBus.publish(CMD_CLEAN_STATUSES, new JsonArray(statusesInDocker)); + eventBus.publish(CMD_CLEAN_STATUSES, ""); } } } \ No newline at end of file diff --git a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/kubernetes/KubernetesStatusService.java b/karavan-statuses/src/main/java/org/apache/camel/karavan/status/kubernetes/KubernetesStatusService.java index f339e12c..4a57bb25 100644 --- a/karavan-statuses/src/main/java/org/apache/camel/karavan/status/kubernetes/KubernetesStatusService.java +++ b/karavan-statuses/src/main/java/org/apache/camel/karavan/status/kubernetes/KubernetesStatusService.java @@ -21,9 +21,12 @@ import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.fabric8.kubernetes.client.informers.SharedIndexInformer; +import io.quarkus.runtime.ShutdownEvent; +import io.quarkus.runtime.StartupEvent; import io.quarkus.runtime.configuration.ProfileManager; import io.vertx.mutiny.core.eventbus.EventBus; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; import jakarta.enterprise.inject.Default; import jakarta.enterprise.inject.Produces; import jakarta.inject.Inject; @@ -34,6 +37,7 @@ import org.eclipse.microprofile.health.HealthCheckResponse; import org.eclipse.microprofile.health.Readiness; import org.jboss.logging.Logger; +import java.io.IOException; import java.util.*; import static org.apache.camel.karavan.status.StatusConstants.*; @@ -64,6 +68,23 @@ public class KubernetesStatusService implements HealthCheck { List<SharedIndexInformer> informers = new ArrayList<>(INFORMERS); + + void onStart(@Observes StartupEvent ev) throws Exception { + LOGGER.info("Status Listeners: starting..."); + if (ConfigService.inKubernetes()) { + startInformers(); + } + LOGGER.info("Status Listeners: started"); + } + + void onStop(@Observes ShutdownEvent ev) throws IOException { + LOGGER.info("Status Listeners: stopping..."); + if (ConfigService.inKubernetes()) { + stopInformers(); + } + LOGGER.info("Status Listeners: stopped"); + } + public void startInformers() { try { stopInformers();