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 29682c75edc4b239bac4ecbb3f333c816d5e5b48
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Sep 1 12:54:31 2023 -0400

    Gitea chaos for #817
---
 .../camel/karavan/docker/DockerEventListener.java  | 21 +-----
 .../camel/karavan/docker/DockerForGitea.java       | 85 +---------------------
 .../apache/camel/karavan/service/EventService.java | 23 +-----
 .../apache/camel/karavan/service/GiteaService.java | 50 ++++++++-----
 .../camel/karavan/service/KaravanService.java      | 12 ++-
 .../org/apache/camel/karavan/shared/EventType.java |  2 -
 6 files changed, 47 insertions(+), 146 deletions(-)

diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
index e13a6c76..e9a7b746 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
@@ -59,14 +59,9 @@ public class DockerEventListener implements 
ResultCallback<Event> {
 
     public void onContainerEvent(Event event, Container container) {
         String status = event.getStatus();
-//        if (status.startsWith("health_status:") && 
container.getNames()[0].equals("/gitea")) {
-//            onGiteaHealthEvent(container, event);
-//        }
         if (infinispanService.isReady()) {
             if (status.startsWith("health_status:")) {
-                if (container.getNames()[0].equals("/infinispan")) {
-                    onInfinispanHealthEvent(container, event);
-                } else if (inDevMode(container)) {
+                if (inDevMode(container)) {
                     onDevModeHealthEvent(container, event);
                 }
             }
@@ -104,20 +99,6 @@ public class DockerEventListener implements 
ResultCallback<Event> {
         }
     }
 
-    public void onGiteaHealthEvent(Container container, Event event) {
-        String status = event.getStatus();
-        String health = status.replace("health_status: ", "");
-        LOGGER.infof("Container %s health status: %s", 
container.getNames()[0], health);
-//        eventBus.publish(GITEA_CONTAINER_STARTED, health);
-    }
-
-    public void onInfinispanHealthEvent(Container container, Event event) {
-        String status = event.getStatus();
-        String health = status.replace("health_status: ", "");
-        LOGGER.infof("Container %s health status: %s", 
container.getNames()[0], health);
-//        eventBus.publish(INFINISPAN_STARTED, health);
-    }
-
     public void onDevModeHealthEvent(Container container, Event event) {
         String status = event.getStatus();
         String health = status.replace("health_status: ", "");
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
index 6c3fb784..38397495 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
@@ -64,19 +64,13 @@ public class DockerForGitea {
             var compose = 
dockerService.getInternalDockerComposeService(GITEA_CONTAINER_NAME);
             Container c = dockerService.createContainerFromCompose(compose, 
ContainerStatus.ContainerType.internal);
             dockerService.runContainer(GITEA_CONTAINER_NAME);
-            eventBus.publish(GITEA_CREATE_INSTANCE, null);
             LOGGER.info("Gitea container is started");
         } catch (Exception e) {
             LOGGER.error(e.getMessage());
         }
     }
 
-    @ConsumeEvent(value = GITEA_CREATE_INSTANCE, blocking = true, ordered = 
true)
-    void installGiteaInGiteaContainer(String giteaHealth) {
-        installGitea();
-    }
-
-    protected void createGiteaUser() {
+    public void createGiteaUser() {
         try {
             LOGGER.info("Creating Gitea User");
             GitConfig config = gitService.getGitConfig();
@@ -96,7 +90,6 @@ public class DockerForGitea {
         }
     }
 
-
     protected void checkGiteaInstance() {
         try {
             Container gitea = 
dockerService.getContainerByName(GITEA_CONTAINER_NAME);
@@ -108,78 +101,4 @@ public class DockerForGitea {
             LOGGER.error(e.getMessage());
         }
     }
-
-    protected void createGiteaInstance() {
-        try {
-            LOGGER.info("Creating Gitea Instance");
-            Container gitea = 
dockerService.getContainerByName(GITEA_CONTAINER_NAME);
-//            ExecCreateCmdResponse instance = 
dockerService.execCreate(gitea.getId(),
-//                    "curl", "-X", "POST", "localhost:3000", "-d",
-//                    
"db_type=sqlite3&db_host=localhost%3A3306&db_user=root&db_passwd=&db_name=gitea"
 +
-//                            
"&ssl_mode=disable&db_schema=&db_path=%2Fvar%2Flib%2Fgitea%2Fdata%2Fgitea.db&app_name=Gitea%3A+Git+with+a+cup+of+tea"
 +
-//                            
"&repo_root_path=%2Fvar%2Flib%2Fgitea%2Fgit%2Frepositories&lfs_root_path=%2Fvar%2Flib%2Fgitea%2Fgit%2Flfs&run_user=git"
 +
-//                            
"&domain=localhost&ssh_port=2222&http_port=3000&app_url=http%3A%2F%2Flocalhost%3A3000%2F&log_root_path=%2Fvar%2Flib%2Fgitea%2Fdata%2Flog"
 +
-//                            
"&smtp_addr=&smtp_port=&smtp_from=&smtp_user=&smtp_passwd=&enable_federated_avatar=on&enable_open_id_sign_in=on"
 +
-//                            
"&enable_open_id_sign_up=on&default_allow_create_organization=on&default_enable_timetracking=on"
 +
-//                            
"&no_reply_address=noreply.localhost&password_algorithm=pbkdf2&admin_name=&admin_email=&admin_passwd=&admin_confirm_passwd=",
-//                    "-H", "'Content-Type: 
application/x-www-form-urlencoded'");
-            ExecCreateCmdResponse instance = 
dockerService.getDockerClient().execCreateCmd(gitea.getId())
-                    .withAttachStdout(true).withAttachStderr(true)
-                    .withCmd("curl", "-X", "POST", "localhost:3000", "-d",
-                            
"db_type=sqlite3&db_host=localhost%3A3306&db_user=root&db_passwd=&db_name=gitea"
 +
-                                    
"&ssl_mode=disable&db_schema=&db_path=%2Fvar%2Flib%2Fgitea%2Fdata%2Fgitea.db&app_name=Gitea%3A+Git+with+a+cup+of+tea"
 +
-                                    
"&repo_root_path=%2Fvar%2Flib%2Fgitea%2Fgit%2Frepositories&lfs_root_path=%2Fvar%2Flib%2Fgitea%2Fgit%2Flfs&run_user=git"
 +
-                                    
"&domain=localhost&ssh_port=2222&http_port=3000&app_url=http%3A%2F%2Flocalhost%3A3000%2F&log_root_path=%2Fvar%2Flib%2Fgitea%2Fdata%2Flog"
 +
-                                    
"&smtp_addr=&smtp_port=&smtp_from=&smtp_user=&smtp_passwd=&enable_federated_avatar=on&enable_open_id_sign_in=on"
 +
-                                    
"&enable_open_id_sign_up=on&default_allow_create_organization=on&default_enable_timetracking=on"
 +
-                                    
"&no_reply_address=noreply.localhost&password_algorithm=pbkdf2&admin_name=&admin_email=&admin_passwd=&admin_confirm_passwd=",
-                            "-H", "'Content-Type: 
application/x-www-form-urlencoded'")
-                    .exec();
-
-            
dockerService.getDockerClient().execStartCmd(instance.getId()).start().awaitCompletion();
-            LOGGER.info(instance.toString());
-            dockerService.execStart(instance.getId());
-            LOGGER.info("Created Gitea Instance");
-        } catch (Exception e) {
-            LOGGER.error(e.getMessage());
-        }
-    }
-
-    public void installGitea() {
-        createGiteaInstance();
-        checkGiteaInstance();
-    }
-
-    private String getURL() throws UnsupportedEncodingException {
-        Map<String, String> map = new HashMap();
-        map.put("db_type", "sqlite3");
-        map.put("db_host", "localhost:3306");
-        map.put("db_user", "root");
-        map.put("db_passwd", "");
-        map.put("db_name", "gitea");
-        map.put("ssl_mode", "disable");
-        map.put("db_schema", "");
-        map.put("db_path", "/data/gitea.db");
-        map.put("app_name", "karavan");
-        map.put("repo_root_path", "/data/repositories");
-        map.put("lfs_root_path", "");
-        map.put("run_user", "git");
-        map.put("domain", "localhost");
-        map.put("ssh_port", "2222");
-        map.put("http_port", "3000");
-        map.put("app_url", "http://localhost:3000/";);
-        map.put("log_root_path", "/data/log");
-        map.put("enable_federated_avatar", "on");
-        map.put("enable_open_id_sign_in", "on");
-        map.put("enable_open_id_sign_up", "on");
-        map.put("default_allow_create_organization", "on");
-        map.put("default_enable_timetracking", "on");
-        map.put("no_reply_address", "noreply.localhost");
-        map.put("password_algorithm", "pbkdf2");
-        map.put("admin_name", "karavan");
-        map.put("admin_email", "karavan@karavan.space");
-        map.put("admin_passwd", "karavan");
-        map.put("admin_confirm_passwd", "karavan");
-        return URLEncoder.encode(Json.encode(map), 
StandardCharsets.UTF_8.toString());
-    }
-}
+}
\ No newline at end of file
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java
index 4fa56052..2b161620 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java
@@ -1,26 +1,19 @@
 package org.apache.camel.karavan.service;
 
 import io.quarkus.vertx.ConsumeEvent;
-import io.vertx.core.eventbus.DeliveryOptions;
 import io.vertx.core.eventbus.EventBus;
 import io.vertx.core.json.JsonObject;
-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 jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
 import org.apache.camel.karavan.infinispan.InfinispanService;
 import org.apache.camel.karavan.infinispan.model.CamelStatus;
 import org.apache.camel.karavan.infinispan.model.ContainerStatus;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.shared.ConfigService;
-import org.apache.camel.karavan.shared.Constants;
 import org.apache.camel.karavan.shared.EventType;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
-import org.infinispan.client.hotrod.exceptions.TransportException;
 import org.jboss.logging.Logger;
 
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
 import java.util.Map;
 import java.util.Objects;
 
@@ -42,18 +35,6 @@ public class EventService {
     @Inject
     KubernetesService kubernetesService;
 
-    @Inject
-    DockerService dockerService;
-
-    @Inject
-    DockerForInfinispan dockerForInfinispan;
-
-    @Inject
-    DockerForKaravan dockerForKaravan;
-
-    @Inject
-    DockerForGitea dockerForGitea;
-
     @Inject
     CamelService camelService;
 
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java
index b62d268d..6e8bc1be 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.karavan.service;
 
-import io.vertx.core.eventbus.EventBus;
 import io.vertx.core.json.JsonObject;
 import io.vertx.mutiny.core.Vertx;
 import io.vertx.mutiny.core.buffer.Buffer;
@@ -25,7 +24,7 @@ import io.vertx.mutiny.ext.web.client.WebClient;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import org.apache.camel.karavan.infinispan.model.GitConfig;
-import org.apache.camel.karavan.shared.EventType;
+import org.eclipse.microprofile.faulttolerance.Retry;
 import org.jboss.logging.Logger;
 
 import java.util.List;
@@ -39,9 +38,6 @@ public class GiteaService {
     @Inject
     Vertx vertx;
 
-    @Inject
-    EventBus eventBus;
-
     @Inject
     GitService gitService;
 
@@ -54,8 +50,30 @@ public class GiteaService {
         return webClient;
     }
 
-    public void createRepository() {
-        try {
+    @Retry(maxRetries = 100, delay = 2000)
+    public void install() throws Exception {
+            LOGGER.info("Install Gitea");
+            HttpResponse<Buffer> result = 
getWebClient().postAbs("http://localhost:3000";).timeout(1000)
+                    .putHeader("Content-Type", 
"application/x-www-form-urlencoded")
+                    .sendBuffer(Buffer.buffer(
+                
"db_type=sqlite3&db_host=localhost%3A3306&db_user=root&db_passwd=&db_name=gitea"
 +
+                        
"&ssl_mode=disable&db_schema=&db_path=%2Fvar%2Flib%2Fgitea%2Fdata%2Fgitea.db&app_name=Karavan"
 +
+                        
"&repo_root_path=%2Fvar%2Flib%2Fgitea%2Fgit%2Frepositories&lfs_root_path=%2Fvar%2Flib%2Fgitea%2Fgit%2Flfs&run_user=git"
 +
+                        
"&domain=localhost&ssh_port=2222&http_port=3000&app_url=http%3A%2F%2Flocalhost%3A3000%2F&log_root_path=%2Fvar%2Flib%2Fgitea%2Fdata%2Flog"
 +
+                        
"&smtp_addr=&smtp_port=&smtp_from=&smtp_user=&smtp_passwd=&enable_federated_avatar=on&enable_open_id_sign_in=on"
 +
+                        
"&enable_open_id_sign_up=on&default_allow_create_organization=on&default_enable_timetracking=on"
 +
+                        
"&no_reply_address=noreply.localhost&password_algorithm=pbkdf2&admin_name=&admin_email=&admin_passwd=&admin_confirm_passwd="
+                    ))
+                    .subscribeAsCompletionStage().toCompletableFuture().get();
+            if (result.statusCode() != 200 && result.statusCode() != 405) {
+                LOGGER.info("Gitea not ready");
+                throw new Exception("Gitea not ready");
+            }
+            LOGGER.info("Installed Gitea");
+    }
+
+    @Retry(maxRetries = 100, delay = 2000)
+    public void createRepository() throws Exception {
             LOGGER.info("Creating Gitea Repository");
             String token = generateToken();
             HttpResponse<Buffer> result = 
getWebClient().postAbs("http://localhost:3000/api/v1/user/repos";).timeout(500)
@@ -71,16 +89,15 @@ public class GiteaService {
                     .subscribeAsCompletionStage().toCompletableFuture().get();
             if (result.statusCode() == 201) {
                 JsonObject res = result.bodyAsJsonObject();
-                eventBus.publish(EventType.START_INFINISPAN_IN_DOCKER, null);
+            } else {
+                LOGGER.info("Error creating Gitea repository");
+                throw new Exception("Error creating Gitea repository");
             }
             LOGGER.info("Created Gitea Repository");
-        } catch (Exception e) {
-            LOGGER.info(e.getMessage());
-        }
     }
 
-    private String generateToken() {
-        try {
+    @Retry(maxRetries = 100, delay = 2000)
+    protected String generateToken() throws Exception {
             LOGGER.info("Creating Gitea User Token");
             GitConfig config = gitService.getGitConfig();
             HttpResponse<Buffer> result = 
getWebClient().postAbs("http://localhost:3000/api/v1/users/"; + 
config.getUsername() + "/tokens").timeout(500)
@@ -92,10 +109,9 @@ public class GiteaService {
             if (result.statusCode() == 201) {
                 JsonObject res = result.bodyAsJsonObject();
                 return res.getString("sha1");
+            } else {
+                LOGGER.info("Error getting token");
+                throw new Exception("Error getting token");
             }
-        } catch (Exception e) {
-            LOGGER.info(e.getMessage());
-        }
-        return null;
     }
 }
\ No newline at end of file
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 1eac2bbd..41ef59ab 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
@@ -35,6 +35,7 @@ import org.jboss.logging.Logger;
 import jakarta.enterprise.event.Observes;
 import jakarta.inject.Inject;
 import java.io.IOException;
+import java.util.concurrent.ExecutionException;
 
 import static org.apache.camel.karavan.shared.EventType.IMPORT_PROJECTS;
 
@@ -64,6 +65,9 @@ public class KaravanService {
     @Inject
     EventBus eventBus;
 
+    @Inject
+    GiteaService giteaService;
+
     private static final String START_INTERNAL_DOCKER_SERVICES = 
"START_INTERNAL_DOCKER_SERVICES";
     private static final String START_SERVICES = "START_SERVICES";
 
@@ -73,20 +77,22 @@ public class KaravanService {
         } else {
             LOGGER.info("Starting Karavan in " + 
(kubernetesService.isOpenshift() ? "OpenShift" : "Kubernetes"));
         }
-        eventBus.publish(START_SERVICES, null);
+//        eventBus.publish(START_SERVICES, null);
     }
 
     @ConsumeEvent(value = START_INTERNAL_DOCKER_SERVICES, blocking = true)
-    void startInternalDockerServices(String data) {
+    void startInternalDockerServices(String data) throws Exception {
         LOGGER.info("Starting Karavan in Docker");
         if (!dockerService.checkDocker()){
             Quarkus.asyncExit();
         } else {
             dockerService.createNetwork();
             dockerService.startListeners();
-            dockerForInfinispan.startInfinispan();
+//            dockerForInfinispan.startInfinispan();
             if (giteaInstall) {
                 dockerForGitea.startGitea();
+                giteaService.install();
+                dockerForGitea.createGiteaUser();
             }
         }
     }
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/EventType.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/EventType.java
index be501549..609fce03 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/EventType.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/EventType.java
@@ -24,8 +24,6 @@ public class EventType {
     //    Import projects from Git repository
     public static final String IMPORT_PROJECTS = "IMPORT_PROJECTS";
 
-    public static final String START_INFINISPAN_IN_DOCKER = 
"START_INFINISPAN_IN_DOCKER";
-
     public static final String CONTAINER_STATUS = "CONTAINER_STATUS";
     public static final String DEVMODE_CONTAINER_READY = "DEVMODE_STATUS";
     public static final String DEVMODE_DELAY_MESSAGE = "DEVMODE_DELAY_MESSAGE";

Reply via email to