You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/07/13 16:10:07 UTC

[camel-karavan] 03/07: DataGrid query works #817

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 c51b8206412a51675c7aaa39843fd9aeaad51514
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Wed Jul 12 14:56:59 2023 -0400

    DataGrid query works #817
---
 karavan-cloud/karavan-datagrid/.java-version       |  1 +
 karavan-cloud/karavan-datagrid/pom.xml             | 20 +++----
 .../camel/karavan/datagrid/DatagridService.java    | 23 +++++++-
 .../camel/karavan/datagrid/model/KaravanGroup.java | 35 -----------
 .../karavan/datagrid/model/KaravanSchema.java      |  2 +
 .../camel/karavan/datagrid/model/KaravanUser.java  | 67 ----------------------
 .../camel/karavan/datagrid/model/PodStatus.java    | 16 +++++-
 .../camel/karavan/datagrid/model/ProjectFile.java  |  1 +
 .../{DevCommandTest.java => DataGridTest.java}     | 10 +++-
 9 files changed, 54 insertions(+), 121 deletions(-)

diff --git a/karavan-cloud/karavan-datagrid/.java-version b/karavan-cloud/karavan-datagrid/.java-version
new file mode 100644
index 00000000..b4de3947
--- /dev/null
+++ b/karavan-cloud/karavan-datagrid/.java-version
@@ -0,0 +1 @@
+11
diff --git a/karavan-cloud/karavan-datagrid/pom.xml b/karavan-cloud/karavan-datagrid/pom.xml
index b66104f2..4487130b 100644
--- a/karavan-cloud/karavan-datagrid/pom.xml
+++ b/karavan-cloud/karavan-datagrid/pom.xml
@@ -63,6 +63,13 @@
                     <include>**/**.xml</include>
                 </includes>
             </resource>
+            <resource>
+                <directory>target/classes/proto</directory>
+                <filtering>true</filtering>
+                <includes>
+                    <include>karavan.proto</include>
+                </includes>
+            </resource>
         </resources>
         <plugins>
             <plugin>
@@ -113,19 +120,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-resources-plugin</artifactId>
-                <configuration>
-                    <nonFilteredFileExtensions>
-                        <nonFilteredFileExtension>ico</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>eot</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>woff</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>js</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>html</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>css</nonFilteredFileExtension>
-                        <nonFilteredFileExtension>svg</nonFilteredFileExtension>
-                    </nonFilteredFileExtensions>
-                </configuration>
             </plugin>
         </plugins>
     </build>
diff --git a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/DatagridService.java b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/DatagridService.java
index 4968ab83..6141addd 100644
--- a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/DatagridService.java
+++ b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/DatagridService.java
@@ -28,9 +28,11 @@ import org.infinispan.client.hotrod.RemoteCacheManager;
 import org.infinispan.client.hotrod.Search;
 import org.infinispan.client.hotrod.configuration.ClientIntelligence;
 import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
+import org.infinispan.client.hotrod.impl.query.RemoteQuery;
 import org.infinispan.commons.configuration.StringConfiguration;
 import org.infinispan.commons.marshall.ProtoStreamMarshaller;
 import org.infinispan.query.dsl.QueryFactory;
+import org.infinispan.query.remote.client.ProtobufMetadataManagerConstants;
 import org.jboss.logging.Logger;
 
 import javax.enterprise.context.ApplicationScoped;
@@ -39,12 +41,18 @@ import javax.inject.Inject;
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.time.Instant;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
+import static org.infinispan.query.remote.client.ProtobufMetadataManagerConstants.PROTOBUF_METADATA_CACHE_NAME;
+
 @Default
 @ApplicationScoped
 public class DatagridService  {
@@ -119,6 +127,9 @@ public class DatagridService  {
         devmodeCommands = getOrCreateCache(DevModeCommand.CACHE, true);
 
         cacheManager.getCache(DevModeCommand.CACHE).addClientListener(new ClientRunnerListener(eventBus));
+        // Grab the generated protobuf schema and registers in the server.
+        cacheManager.getCache(PROTOBUF_METADATA_CACHE_NAME).put("karavan.proto", getResourceFile("/proto/karavan.proto"));
+
         ready.set(true);
         LOGGER.info("DatagridService is started in remote mode");
     }
@@ -130,7 +141,6 @@ public class DatagridService  {
     private <K, V> RemoteCache<K, V>  getOrCreateCache(String name, boolean command) {
         String config = getResourceFile(command ? "/command-cache-config.xml" : "/data-cache-config.xml");
         return cacheManager.administration().getOrCreateCache(name, new StringConfiguration(String.format(config, name)));
-
     }
 
     private void cleanData() {
@@ -139,6 +149,7 @@ public class DatagridService  {
         podStatuses.clear();
         pipelineStatuses.clear();
         camelStatuses.clear();
+        devmodeCommands.clear();
     }
 
     @ConsumeEvent(value = ADDRESS_DEVMODE_COMMAND_INTERNAL, blocking = true, ordered = true, local = false)
@@ -231,7 +242,7 @@ public class DatagridService  {
     }
 
     public List<DeploymentStatus> getDeploymentStatuses() {
-        return deploymentStatuses.values().stream().collect(Collectors.toList());
+        return new ArrayList<>(deploymentStatuses.values());
     }
 
     public List<DeploymentStatus> getDeploymentStatuses(String env) {
@@ -277,6 +288,10 @@ public class DatagridService  {
                 .execute().list();
     }
 
+    public List<PodStatus> getAllPodStatuses() {
+        return new ArrayList<>(podStatuses.values());
+    }
+
     public void savePodStatus(PodStatus status) {
         podStatuses.put(GroupedKey.create(status.getProjectId(), status.getEnv(), status.getName()), status);
     }
@@ -371,6 +386,10 @@ public class DatagridService  {
                 .execute().list();
     }
 
+    public List<DevModeStatus> getDevModeStatuses() {
+       return new ArrayList<>(devmodeStatuses.values());
+    }
+
     public void sendDevModeCommand(String projectId, DevModeCommand command) {
         if (command.getProjectId() == null) {
             command.setProjectId(projectId);
diff --git a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanGroup.java b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanGroup.java
deleted file mode 100644
index 6a194442..00000000
--- a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanGroup.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.camel.karavan.datagrid.model;
-
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
-
-import java.util.List;
-
-public class KaravanGroup {
-    @ProtoField(number = 1)
-    String name;
-    @ProtoField(number = 2)
-    List<String> users;
-
-    @ProtoFactory
-    public KaravanGroup(String name, List<String> users) {
-        this.name = name;
-        this.users = users;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public List<String> getUsers() {
-        return users;
-    }
-
-    public void setUsers(List<String> users) {
-        this.users = users;
-    }
-}
diff --git a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanSchema.java b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanSchema.java
index f4152c53..be78b42a 100644
--- a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanSchema.java
+++ b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanSchema.java
@@ -19,6 +19,8 @@ import org.infinispan.protostream.annotations.AutoProtoSchemaBuilder;
                 DevModeCommand.class,
                 DevModeStatus.class
         },
+        schemaFileName = "karavan.proto",
+        schemaFilePath = "proto/",
         schemaPackageName = "karavan")
 public interface KaravanSchema extends GeneratedSchema {
 }
diff --git a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanUser.java b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanUser.java
deleted file mode 100644
index 6cfc3728..00000000
--- a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanUser.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.apache.camel.karavan.datagrid.model;
-
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
-
-public class KaravanUser {
-    @ProtoField(number = 1)
-    String username;
-    @ProtoField(number = 2)
-    String password;
-    @ProtoField(number = 3)
-    String firstName;
-    @ProtoField(number = 4)
-    String lastName;
-    @ProtoField(number = 5)
-    boolean showTour;
-
-
-    @ProtoFactory
-    public KaravanUser(String username, String password, String firstName, String lastName, boolean showTour) {
-        this.username = username;
-        this.password = password;
-        this.firstName = firstName;
-        this.lastName = lastName;
-        this.showTour = showTour;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public void setFirstName(String firstName) {
-        this.firstName = firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public void setLastName(String lastName) {
-        this.lastName = lastName;
-    }
-
-    public boolean isShowTour() {
-        return showTour;
-    }
-
-    public void setShowTour(boolean showTour) {
-        this.showTour = showTour;
-    }
-}
diff --git a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/PodStatus.java b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/PodStatus.java
index ffb7b9f5..c1ee17e8 100644
--- a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/PodStatus.java
+++ b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/PodStatus.java
@@ -21,9 +21,11 @@ public class PodStatus {
     String memoryInfo;
     @ProtoField(number = 8)
     String cpuInfo;
+    @ProtoField(number = 9)
+    String created;
 
     @ProtoFactory
-    public PodStatus(String name, Boolean ready, String deployment, String projectId, String env, Boolean inDevMode, String memoryInfo, String cpuInfo) {
+    public PodStatus(String name, Boolean ready, String deployment, String projectId, String env, Boolean inDevMode, String memoryInfo, String cpuInfo, String created) {
         this.name = name;
         this.ready = ready;
         this.deployment = deployment;
@@ -32,15 +34,17 @@ public class PodStatus {
         this.inDevMode = inDevMode;
         this.memoryInfo = memoryInfo;
         this.cpuInfo = cpuInfo;
+        this.created = created;
     }
 
-    public PodStatus(String name, Boolean ready, String deployment, String projectId, String env, Boolean inDevMode) {
+    public PodStatus(String name, Boolean ready, String deployment, String projectId, String env, Boolean inDevMode, String created) {
         this.name = name;
         this.ready = ready;
         this.deployment = deployment;
         this.projectId = projectId;
         this.env = env;
         this.inDevMode = inDevMode;
+        this.created = created;
     }
 
     public String getName() {
@@ -106,4 +110,12 @@ public class PodStatus {
     public void setCpuInfo(String cpuInfo) {
         this.cpuInfo = cpuInfo;
     }
+
+    public String getCreated() {
+        return created;
+    }
+
+    public void setCreated(String created) {
+        this.created = created;
+    }
 }
diff --git a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/ProjectFile.java b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/ProjectFile.java
index bab93c65..ff1e1311 100644
--- a/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/ProjectFile.java
+++ b/karavan-cloud/karavan-datagrid/src/main/java/org/apache/camel/karavan/datagrid/model/ProjectFile.java
@@ -1,5 +1,6 @@
 package org.apache.camel.karavan.datagrid.model;
 
+import org.infinispan.api.annotations.indexing.Indexed;
 import org.infinispan.protostream.annotations.ProtoDoc;
 import org.infinispan.protostream.annotations.ProtoFactory;
 import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-datagrid/src/test/java/org/apache/camel/karavan/datagrid/DevCommandTest.java b/karavan-cloud/karavan-datagrid/src/test/java/org/apache/camel/karavan/datagrid/DataGridTest.java
similarity index 88%
rename from karavan-cloud/karavan-datagrid/src/test/java/org/apache/camel/karavan/datagrid/DevCommandTest.java
rename to karavan-cloud/karavan-datagrid/src/test/java/org/apache/camel/karavan/datagrid/DataGridTest.java
index 8602f589..37c272e4 100644
--- a/karavan-cloud/karavan-datagrid/src/test/java/org/apache/camel/karavan/datagrid/DevCommandTest.java
+++ b/karavan-cloud/karavan-datagrid/src/test/java/org/apache/camel/karavan/datagrid/DataGridTest.java
@@ -6,6 +6,7 @@ import io.quarkus.vertx.ConsumeEvent;
 import io.vertx.core.json.JsonObject;
 import org.apache.camel.karavan.datagrid.model.CommandName;
 import org.apache.camel.karavan.datagrid.model.DevModeCommand;
+import org.apache.camel.karavan.datagrid.model.ProjectFile;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
@@ -20,7 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 @QuarkusTest
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
-public class DevCommandTest {
+public class DataGridTest {
 
     @Inject
     DatagridService datagridService;
@@ -39,7 +40,7 @@ public class DevCommandTest {
         commandsReceived.add(message.mapTo(DevModeCommand.class));
     }
 
-    @Test
+//    @Test
     public void sendCommand() throws InterruptedException {
         List<DevModeCommand> commandsSent = List.of(
                 new DevModeCommand(CommandName.RUN, Instant.now().toEpochMilli()),
@@ -57,4 +58,9 @@ public class DevCommandTest {
         assertEquals(commandsSent.get(2).getCommandName().name(),  commandsReceived.get(2).getCommandName().name());
     }
 
+    @Test
+    public void getProjectFiles() throws InterruptedException {
+        List<ProjectFile> files = datagridService.getProjectFiles("xxx");
+        assertEquals(0, files.size());
+    }
 }