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 4b9918c221f1713be026b5d207347ff6e3062cfa Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Thu Oct 24 09:01:57 2024 -0400 API Resources Improvements --- .../apache/camel/karavan/api/AbstractApiResource.java | 7 +++++-- .../apache/camel/karavan/api/ContainerResource.java | 18 +++++++++--------- .../org/apache/camel/karavan/api/DevModeResource.java | 4 +++- .../camel/karavan/api/InfrastructureResource.java | 12 ++++++++---- .../apache/camel/karavan/api/MetadataResources.java | 7 +++++++ .../org/apache/camel/karavan/api/StatusResource.java | 13 ++++++++++--- 6 files changed, 42 insertions(+), 19 deletions(-) diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/AbstractApiResource.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/AbstractApiResource.java index 631171fe..650b3e91 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/api/AbstractApiResource.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/AbstractApiResource.java @@ -35,12 +35,15 @@ public class AbstractApiResource { public HashMap<String, String> getIdentity(SecurityContext securityContext) { var identity = new HashMap<String, String>(); identity.put("email", "kara...@test.org"); + identity.put("name", "karavan"); if (securityContext != null && securityContext.getUserPrincipal() != null && securityContext.getUserPrincipal() instanceof DefaultJWTCallerPrincipal principal) { - identity.put("name", principal.getName()); + if (principal.getName() != null) { + identity.put("name", principal.getName()); + } identity.put("email", principal.getClaim(Claims.email)); } else if (securityIdentity != null) { - if (securityIdentity.getPrincipal() != null) { + if (securityIdentity.getPrincipal() != null && securityIdentity.getPrincipal().getName() != null) { identity.put("name", securityIdentity.getPrincipal().getName()); } if (securityIdentity.getAttributes().get("email") != null && !securityIdentity.getAttributes().get("email").toString().isBlank()) { diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java index af7b6533..84b45ea4 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java @@ -29,6 +29,7 @@ import org.apache.camel.karavan.KaravanConstants; import org.apache.camel.karavan.docker.DockerComposeConverter; import org.apache.camel.karavan.docker.DockerService; import org.apache.camel.karavan.kubernetes.KubernetesService; +import org.apache.camel.karavan.model.ContainerType; import org.apache.camel.karavan.model.DockerComposeService; import org.apache.camel.karavan.model.PodContainerStatus; import org.apache.camel.karavan.service.ConfigService; @@ -112,29 +113,28 @@ public class ContainerResource { } } - private void deployContainer(String projectId, String type, JsonObject command) throws InterruptedException { - if (Objects.equals(type, PodContainerStatus.ContainerType.devservice.name())) { - String code = projectService.getDevServiceCode(); + public void deployContainer(String projectId, String type, JsonObject command) throws InterruptedException { + if (Objects.equals(type, ContainerType.devservice.name())) { + String code = projectService.getDockerDevServiceCode(); DockerComposeService dockerComposeService = DockerComposeConverter.fromCode(code, projectId); if (dockerComposeService != null) { Map<String, String> labels = new HashMap<>(); - labels.put(LABEL_TYPE, PodContainerStatus.ContainerType.devservice.name()); - labels.put(LABEL_CAMEL_RUNTIME, CamelRuntime.CAMEL_MAIN.getValue()); + labels.put(LABEL_TYPE, ContainerType.devservice.name()); labels.put(LABEL_PROJECT_ID, projectId); dockerService.createContainerFromCompose(dockerComposeService, labels, needPull(command)); dockerService.runContainer(dockerComposeService.getContainer_name()); } - } else if (Objects.equals(type, PodContainerStatus.ContainerType.project.name())) { + } else if (Objects.equals(type, ContainerType.project.name())) { DockerComposeService dockerComposeService = projectService.getProjectDockerComposeService(projectId); if (dockerComposeService != null) { Map<String, String> labels = new HashMap<>(); - labels.put(LABEL_TYPE, PodContainerStatus.ContainerType.project.name()); + labels.put(LABEL_TYPE, ContainerType.project.name()); labels.put(LABEL_CAMEL_RUNTIME, CamelRuntime.CAMEL_MAIN.getValue()); labels.put(LABEL_PROJECT_ID, projectId); dockerService.createContainerFromCompose(dockerComposeService, labels, needPull(command)); dockerService.runContainer(dockerComposeService.getContainer_name()); } - } else if (Objects.equals(type, PodContainerStatus.ContainerType.devmode.name())) { + } else if (Objects.equals(type, ContainerType.devmode.name())) { // TODO: merge with DevMode service // dockerForKaravan.createDevmodeContainer(name, ""); // dockerService.runContainer(name); @@ -151,7 +151,7 @@ public class ContainerResource { private void setContainerStatusTransit(String projectId, String name, String type) { PodContainerStatus status = karavanCache.getPodContainerStatus(projectId, environment, name); if (status == null) { - status = PodContainerStatus.createByType(projectId, environment, PodContainerStatus.ContainerType.valueOf(type)); + status = PodContainerStatus.createByType(projectId, environment, ContainerType.valueOf(type)); } status.setInTransit(true); eventBus.publish(POD_CONTAINER_UPDATED, JsonObject.mapFrom(status)); diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java index 0f894c4b..2fac96a2 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java @@ -29,6 +29,8 @@ import org.apache.camel.karavan.service.ProjectService; import org.eclipse.microprofile.config.inject.ConfigProperty; import org.jboss.logging.Logger; +import java.util.Map; + import static org.apache.camel.karavan.KaravanEvents.CMD_DELETE_CONTAINER; import static org.apache.camel.karavan.KaravanEvents.CMD_RELOAD_PROJECT_CODE; @@ -55,7 +57,7 @@ public class DevModeResource { @Path("/{jBangOptions}") public Response runProjectWithJBangOptions(Project project, @PathParam("jBangOptions") String jBangOptions) { try { - String containerName = projectService.runProjectWithJBangOptions(project, jBangOptions); + String containerName = projectService.runProjectWithJBangOptions(project, jBangOptions, Map.of(), Map.of()); if (containerName != null) { return Response.ok(containerName).build(); } else { diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java index 9b89294c..862ec999 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java @@ -16,6 +16,7 @@ */ package org.apache.camel.karavan.api; +import io.vertx.core.eventbus.EventBus; import jakarta.inject.Inject; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; @@ -23,7 +24,7 @@ import jakarta.ws.rs.core.Response; import org.apache.camel.karavan.KaravanCache; import org.apache.camel.karavan.KaravanConstants; import org.apache.camel.karavan.kubernetes.KubernetesService; -import org.apache.camel.karavan.kubernetes.KubernetesStatusService; +import org.apache.camel.karavan.model.ContainerType; import org.apache.camel.karavan.model.DeploymentStatus; import org.apache.camel.karavan.model.ProjectFile; import org.apache.camel.karavan.model.ServiceStatus; @@ -33,10 +34,13 @@ import org.jboss.logging.Logger; import java.util.Comparator; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; import static org.apache.camel.karavan.KaravanConstants.KUBERNETES_YAML_FILENAME; +import static org.apache.camel.karavan.KaravanConstants.LABEL_TYPE; +import static org.apache.camel.karavan.KaravanEvents.CMD_RESTART_INFORMERS; @Path("/ui/infrastructure") public class InfrastructureResource { @@ -48,7 +52,7 @@ public class InfrastructureResource { KubernetesService kubernetesService; @Inject - KubernetesStatusService kubernetesStatusService; + EventBus eventBus; @ConfigProperty(name = "karavan.environment", defaultValue = KaravanConstants.DEV) String environment; @@ -90,7 +94,7 @@ public class InfrastructureResource { if (resources == null) { return Response.status(Response.Status.NOT_FOUND).entity("Resource file " + KUBERNETES_YAML_FILENAME + " not found").build(); } - kubernetesService.startDeployment(resources.getCode()); + kubernetesService.startDeployment(resources.getCode(), Map.of(LABEL_TYPE, ContainerType.project.name())); return Response.ok().build(); } @@ -154,7 +158,7 @@ public class InfrastructureResource { @Path("/informers") public Response restartInformers() { if (ConfigService.inKubernetes()) { - kubernetesStatusService.startInformers(); + eventBus.publish(CMD_RESTART_INFORMERS, ""); return Response.ok().build(); } else { return Response.noContent().build(); diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/MetadataResources.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/MetadataResources.java index 183e7e0a..f5cf8643 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/api/MetadataResources.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/MetadataResources.java @@ -84,4 +84,11 @@ public class MetadataResources { public String getSpiBeans() { return codeService.getResourceFile("/metadata/spiBeans.json"); } + + @GET + @Path("/mainConfiguration") + @Produces(MediaType.APPLICATION_JSON) + public String getMainConfiguration() { + return codeService.getResourceFile("/metadata/camel-main-configuration-metadata.json"); + } } diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java index d4711aee..0e96a431 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java @@ -49,9 +49,16 @@ public class StatusResource { @GET @Produces(MediaType.APPLICATION_JSON) - @Path("/camel/context") - public List<CamelStatus> getCamelContextStatusByEnv() { - return karavanCache.getCamelStatusesByEnv(CamelStatusValue.Name.context); + @Path("/camel") + public List<CamelStatus> getCamelAllStatuses() { + return karavanCache.getCamelAllStatuses(); + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + @Path("/camel/{context}") + public List<CamelStatus> getCamelContextStatusesByName(@PathParam("context") String context) { + return karavanCache.getCamelStatusesByName(CamelStatusValue.Name.valueOf(context)); } @DELETE